Author: sergiykarpenko
Date: 2009-12-24 11:29:21 -0500 (Thu, 24 Dec 2009)
New Revision: 1174
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
Log:
EXOJCR-302: getNodeByName updated
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
===================================================================
---
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-24
16:11:56 UTC (rev 1173)
+++
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-24
16:29:21 UTC (rev 1174)
@@ -599,7 +599,17 @@
ResultSet resultSet =
findChildNodesByParentIdentifierNew(getInternalId(parent.getIdentifier()));
if (resultSet.next())
{
- return loadChildNodesData(resultSet, parent);
+ Map<String, TempNodeData> tempNodes = loadNodesData(resultSet,
parent);
+
+ List<NodeData> childrens = new
ArrayList<NodeData>(tempNodes.size());
+ QPath parentQPath = parent.getQPath();
+ AccessControlList parentACL = parent.getACL();
+ for (TempNodeData data : tempNodes.values())
+ {
+ NodeData nodeData = loadNodeRecordFromBuffer(data, parentQPath,
parentACL);
+ childrens.add(nodeData);
+ }
+ return childrens;
}
else
{
@@ -617,7 +627,7 @@
}
}
- protected List<NodeData> loadChildNodesData(ResultSet resultSet, NodeData
parent) throws RepositoryException,
+ protected Map<String, TempNodeData> loadNodesData(ResultSet resultSet, NodeData
parent) throws RepositoryException,
IOException, SQLException
{
@@ -651,15 +661,8 @@
}
while (resultSet.next());
- List<NodeData> childrens = new ArrayList<NodeData>(nodesData.size());
- QPath parentQPath = parent.getQPath();
- AccessControlList parentACL = parent.getACL();
- for (TempNodeData data : nodesData.values())
- {
- NodeData nodeData = loadNodeRecordFromBuffer(data, parentQPath, parentACL);
- childrens.add(nodeData);
- }
- return childrens;
+ return nodesData;
+
}
private static class TempNodeData
@@ -914,7 +917,19 @@
int itemType = resultSet.getInt(COLUMN_CLASS);
if (itemType == I_CLASS_NODE)
{
- return loadNodeRecord(resultSet, parent.getQPath(), parent.getACL());
+ // Remember first node id. If node is not first in result set - it's a
bug.
+ String firstNodeId = resultSet.getString(COLUMN_ID);
+
+ // There may be two or more nodes, so load temp NodeDatas and return first
one.
+ Map<String, TempNodeData> tempNodes = loadNodesData(resultSet,
parent);
+
+ QPath parentQPath = parent.getQPath();
+ AccessControlList parentACL = parent.getACL();
+
+ NodeData nodeData = loadNodeRecordFromBuffer(tempNodes.get(firstNodeId),
parentQPath, parentACL);
+ return nodeData;
+
+ //return loadNodeRecord(resultSet, parent.getQPath(), parent.getACL());
}
else
{
Show replies by date