From fd14cef84d3128182b3b8f4560bec0d3c0c3caef Mon Sep 17 00:00:00 2001 From: Sharon Aicler Date: Mon, 5 Jan 2015 13:25:12 -0800 Subject: [PATCH] Fix bug 2554 - XSQL getting stuck on some models Change-Id: Ifac372a1657c9e4ace90abd950a5a29a53b7cca0 Signed-off-by: Sharon Aicler --- .../md/sal/dom/xsql/XSQLAdapter.java | 5 +++-- .../md/sal/dom/xsql/jdbc/JDBCResultSet.java | 21 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java index ad4bd46d71..a5658ccc9e 100644 --- a/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java +++ b/opendaylight/md-sal/sal-dom-xsql/src/main/java/org/opendaylight/controller/md/sal/dom/xsql/XSQLAdapter.java @@ -164,13 +164,14 @@ public class XSQLAdapter extends Thread implements SchemaContextListener { return result; } - // XSQLAdapter.log(""+node); Map children = XSQLODLUtils.getChildren(node); for (Object c : children.values()) { + result.add(c); + /* I don't remember why i did this... possibly to prevent different siblings queried together Map sons = XSQLODLUtils.getChildren(c); for (Object child : sons.values()) { result.add(child); - } + }*/ } return result; 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..757f1a8b04 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 @@ -423,20 +423,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 +453,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); -- 2.36.6