X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-xsql%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fxsql%2Fjdbc%2FJDBCResultSet.java;h=6689908204e19e9aced43dccbb28d2dd5a8f2c07;hb=dc1b52f84eed163fb558b8d5d1122b99053aed78;hp=d37fdb8819b9d037356a7c38b525fbe8bc6e3074;hpb=b3f7fb20f6d550c574d1682a5eb1b39b675316d0;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java index d37fdb8819..6689908204 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/jdbc/JDBCResultSet.java @@ -41,6 +41,9 @@ import org.opendaylight.controller.md.sal.dom.xsql.XSQLODLUtils; public class JDBCResultSet implements Serializable, ResultSet, ResultSetMetaData { private static final long serialVersionUID = -7450200738431047057L; + private static final ClassLoader CLASS_LOADER = JDBCResultSet.class.getClassLoader(); + private static final Class[] PROXY_INTERFACES = new Class[] { ResultSet.class }; + private static int nextID = 0; private String sql = null; private List tablesInQuery = new ArrayList(); @@ -50,7 +53,6 @@ public class JDBCResultSet implements Serializable, ResultSet, private transient Map currentRecord = null; private boolean finished = false; private int id = 0; - private static Integer nextID = new Integer(0); public int numberOfTasks = 0; private Map>> criteria = new ConcurrentHashMap>>(); private Exception err = null; @@ -58,7 +60,7 @@ public class JDBCResultSet implements Serializable, ResultSet, private transient Map subQueries = new HashMap(); public ResultSet getProxy() { - return (ResultSet) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] {ResultSet.class }, new JDBCProxy(this)); + return (ResultSet) Proxy.newProxyInstance(CLASS_LOADER, PROXY_INTERFACES, new JDBCProxy(this)); } public void setSQL(String _sql) { @@ -423,20 +425,20 @@ public class JDBCResultSet implements Serializable, ResultSet, return result; } - public List addRecords(Object element, XSQLBluePrintNode node, - boolean root, String tableName, XSQLBluePrint bluePrint) { - + public List addRecords(Object element, XSQLBluePrintNode node,boolean root, String tableName, XSQLBluePrint bluePrint) { List result = new LinkedList(); + //In case this is a sibling to the requested table, the elenment type + //won't be in the path of the leaf node + if(node==null){ + return result; + } String nodeID = XSQLODLUtils.getNodeIdentiofier(element); if (node.getODLTableName().equals(nodeID)) { - XSQLBluePrintNode bluePrintNode = bluePrint - .getBluePrintNodeByODLTableName(nodeID)[0]; + XSQLBluePrintNode bluePrintNode = bluePrint.getBluePrintNodeByODLTableName(nodeID)[0]; Record rec = new Record(); rec.element = element; - XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode - .getBluePrintNodeName()); - if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) - || bpn != null) { + XSQLBluePrintNode bpn = this.tablesInQueryMap.get(bluePrintNode.getBluePrintNodeName()); + if (this.criteria.containsKey(bluePrintNode.getBluePrintNodeName()) || bpn != null) { Map allKeyValues = collectColumnValues(element, bpn); if (!(isObjectFitCriteria(allKeyValues, bpn.getBluePrintNodeName()) == 1)) { @@ -453,8 +455,7 @@ public class JDBCResultSet implements Serializable, ResultSet, } XSQLBluePrintNode parent = node.getParent(); - List subRecords = addRecords(element, parent, false, tableName, - bluePrint); + List subRecords = addRecords(element, parent, false, tableName,bluePrint); for (Record subRec : subRecords) { List subO = getChildren(subRec.element, tableName, bluePrint);