[exo-jcr-commits] exo-jcr SVN: r804 - in jcr/branches/1.12.0-JBC/component/core/src: main/java/org/exoplatform/services/jcr/impl/storage/jdbc and 3 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Nov 23 06:22:30 EST 2009
Author: sergiykarpenko
Date: 2009-11-23 06:22:30 -0500 (Mon, 23 Nov 2009)
New Revision: 804
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWorkspaceDataContainerTestBase.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java
Log:
EXOJCR-246: JDBCCahceLoader getChildNames implemented for /$REFS
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -412,6 +412,7 @@
else
{
attrs = null;
+ LOG.warn("Unexpected Fqn asked " + name);
}
}
@@ -618,8 +619,7 @@
}
else if (name.get(0).equals(JBossCacheStorage.REFS))
{
- // TODO return all referenced nodes in workspace
- return new LinkedHashSet<String>();
+ return conn.getAllRefencedNodeIdentifiers();
}
else if (name.get(0).equals(Fqn.ROOT))
{
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -222,6 +222,11 @@
*/
protected String FIND_REFERENCE;
+ /**
+ * FIND_REFERENCED_NODES
+ */
+ protected String FIND_REFERENCED_NODES;
+
// ======================== ITEMS table ========================
/**
* COLUMN_ID.
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -2293,6 +2293,28 @@
}
}
+ public Set<String> getAllRefencedNodeIdentifiers() throws RepositoryException, IllegalStateException
+ {
+ checkIfOpened();
+
+ try
+ {
+ ResultSet node = findAllReferencedNodeIdentifiers();
+ Set<String> childrens = new LinkedHashSet<String>();
+ while (node.next())
+ {
+ String nodeId = node.getString(COLUMN_ID); //"NODE_ID");//
+ childrens.add(nodeId);
+ }
+
+ return childrens;
+ }
+ catch (SQLException e)
+ {
+ throw new RepositoryException(e);
+ }
+ }
+
/**
* Return all Nodes in workspace.
* TODO check if it used, should not!
@@ -2390,4 +2412,6 @@
protected abstract ResultSet findAllNodeIdentifiers() throws SQLException;
+ protected abstract ResultSet findAllReferencedNodeIdentifiers() throws SQLException;
+
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -126,6 +126,8 @@
protected PreparedStatement findReference;
+ protected PreparedStatement findAllReferencedNodes;
+
/**
* Multidatabase JDBC Connection constructor.
*
@@ -195,6 +197,8 @@
FIND_REFERENCE = "select P.ID from JCR_MREF R, JCR_MITEM P where R.NODE_ID=? and R.PROPERTY_ID=?";
+ FIND_REFERENCED_NODES = "select N.ID from JCR_MREF R, JCR_MITEM N where N.ID=R.NODE_ID";
+
FIND_VALUES_BY_PROPERTYID =
"select PROPERTY_ID, ORDER_NUM, DATA, STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=? order by ORDER_NUM";
@@ -241,6 +245,7 @@
DELETE_ITEM = "delete from JCR_MITEM where ID=?";
DELETE_VALUE = "delete from JCR_MVALUE where PROPERTY_ID=?";
DELETE_REF = "delete from JCR_MREF where PROPERTY_ID=?";
+
}
/**
@@ -726,4 +731,18 @@
return result.next();
}
+
+ @Override
+ protected ResultSet findAllReferencedNodeIdentifiers() throws SQLException
+ {
+ // TODO make query
+ if (findAllReferencedNodes == null)
+ findAllReferencedNodes = dbConnection.prepareStatement(this.FIND_REFERENCED_NODES);
+ else
+ findAllReferencedNodes.clearParameters();
+
+ ResultSet result = findAllReferencedNodes.executeQuery();
+
+ return result;
+ }
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -729,4 +729,11 @@
// TODO Auto-generated method stub
return false;
}
+
+ @Override
+ protected ResultSet findAllReferencedNodeIdentifiers() throws SQLException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWorkspaceDataContainerTestBase.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWorkspaceDataContainerTestBase.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWorkspaceDataContainerTestBase.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -1,5 +1,7 @@
package org.exoplatform.services.jcr.impl.storage;
+import junit.framework.TestCase;
+
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.exoplatform.services.idgenerator.impl.IDGeneratorServiceImpl;
import org.exoplatform.services.jcr.access.AccessControlList;
@@ -33,8 +35,6 @@
import javax.naming.InitialContext;
import javax.sql.DataSource;
-import junit.framework.TestCase;
-
/**
* Created by The eXo Platform SAS.
*
@@ -52,7 +52,7 @@
protected void setUp() throws Exception
{
super.setUp();
-
+
initPersistence();
}
@@ -91,8 +91,8 @@
return "jdbcjcr_" + IdGenerator.generate();
}
- protected WorkspaceEntry getNewWs(String wsName, boolean isMultiDb, String dsName, String vsPath, ContainerEntry entry)
- throws Exception
+ protected WorkspaceEntry getNewWs(String wsName, boolean isMultiDb, String dsName, String vsPath,
+ ContainerEntry entry) throws Exception
{
List params = new ArrayList();
@@ -225,7 +225,7 @@
protected void deleteJCRRoot() throws Exception
{
// prepare
-
+
// delete root (/) etc
}
@@ -238,8 +238,8 @@
* @param primaryType InternalQName
* @throws Exception
*/
- protected void addDbNode(WorkspaceStorageConnection conn, QPath root, String nodeId, InternalQName primaryType, String parentNodeId)
- throws Exception
+ protected void addDbNode(WorkspaceStorageConnection conn, QPath root, String nodeId, InternalQName primaryType,
+ String parentNodeId) throws Exception
{
// add root (/)
conn.add(new TransientNodeData(root, nodeId, 1, primaryType, new InternalQName[0], 0, parentNodeId,
@@ -250,6 +250,25 @@
}
/**
+ * Add Node to the connection but doesn't save it.
+ *
+ * @param conn WorkspaceStorageConnection
+ * @param root QPath
+ * @param nodeId String
+ * @param primaryType InternalQName
+ * @throws Exception
+ */
+ protected void addDbNodeWithMixin(WorkspaceStorageConnection conn, QPath root, String nodeId,
+ InternalQName primaryType, InternalQName[] mixins, String parentNodeId) throws Exception
+ {
+ // add root (/)
+ conn.add(new TransientNodeData(root, nodeId, 1, primaryType, mixins, 0, parentNodeId, new AccessControlList()));
+
+ // add property (/jcr:primaryType)
+ conn.add(createProperty(root, nodeId, Constants.JCR_PRIMARYTYPE, primaryType, false));
+ }
+
+ /**
* Add Property to the connection but doesn't save it.
*
* @param conn WorkspaceStorageConnection
@@ -343,5 +362,4 @@
// new AccessControlList()));
}
-
}
Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java 2009-11-23 11:10:55 UTC (rev 803)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java 2009-11-23 11:22:30 UTC (rev 804)
@@ -42,10 +42,12 @@
import org.jboss.cache.Modification;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.jcr.PropertyType;
import javax.naming.Context;
/**
@@ -186,11 +188,12 @@
WorkspaceStorageConnection conn = persistentContainer.openConnection();
QPath baseNodePath = QPath.makeChildPath(Constants.ROOT_PATH, InternalQName.parse("[]baseNode"));
String baseNodeId = IdGenerator.generate();
- addDbNode(conn, baseNodePath, baseNodeId,Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
-
+ addDbNode(conn, baseNodePath, baseNodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
+
// add child nodes [node1]
String nodeId = IdGenerator.generate();
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId, Constants.NT_UNSTRUCTURED, baseNodeId);
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId,
+ Constants.NT_UNSTRUCTURED, baseNodeId);
conn.commit();
List<Modification> modifications = new ArrayList<Modification>();
@@ -261,24 +264,24 @@
QPath nodePath = QPath.parse("[]:1[]node:1");
addDbNode(conn, nodePath, nodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
conn.commit();
-
+
conn = persistentContainer.openConnection();
-
+
NodeData nodeData =
new TransientNodeData(nodePath, nodeId, 1, Constants.NT_UNSTRUCTURED, new InternalQName[0], 2,
Constants.ROOT_UUID, new AccessControlList());
-
+
List<Modification> modifications = new ArrayList<Modification>();
modifications.addAll(updateNode(nodeData));
-
+
loader.put(modifications);
// tests it
conn = persistentContainer.openConnection();
-
- NodeData destNodeData = (NodeData) conn.getItemData(nodeId);
-
+
+ NodeData destNodeData = (NodeData)conn.getItemData(nodeId);
+
assertNotNull(destNodeData);
assertEquals(2, destNodeData.getOrderNumber());
}
@@ -292,26 +295,29 @@
String nodeId = IdGenerator.generate();
QPath nodePath = QPath.parse("[]:1[]node:1");
addDbNode(conn, nodePath, nodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
-
- TransientPropertyData propData = addDbProperty(conn, nodePath, nodeId, InternalQName.parse("[]prop"), "JCR DATA VALUE [base]", false);
-
+
+ TransientPropertyData propData =
+ addDbProperty(conn, nodePath, nodeId, InternalQName.parse("[]prop"), "JCR DATA VALUE [base]", false);
+
conn.commit();
// create update property
- TransientPropertyData updatePropData = new TransientPropertyData(QPath.makeChildPath(nodePath, InternalQName.parse("[]prop")), propData.getIdentifier(), 1, 1, nodeId, false);
+ TransientPropertyData updatePropData =
+ new TransientPropertyData(QPath.makeChildPath(nodePath, InternalQName.parse("[]prop")), propData
+ .getIdentifier(), 1, 1, nodeId, false);
updatePropData.setValue(new TransientValueData("JCR DATA VALUE [updated]"));
-
+
List<Modification> modifications = new ArrayList<Modification>();
-
+
modifications.addAll(updateProperty(updatePropData));
-
+
loader.put(modifications);
// tests it
conn = persistentContainer.openConnection();
-
- PropertyData destPropData = (PropertyData) conn.getItemData(propData.getIdentifier());
-
+
+ PropertyData destPropData = (PropertyData)conn.getItemData(propData.getIdentifier());
+
assertNotNull(destPropData);
ValueData valueData = destPropData.getValues().get(0);
assertEquals("JCR DATA VALUE [updated]", new String(valueData.getAsByteArray(), "UTF-8"));
@@ -362,25 +368,26 @@
// prepare
WorkspaceStorageConnection conn = persistentContainer.openConnection();
-
+
QPath baseNodePath = QPath.makeChildPath(Constants.ROOT_PATH, InternalQName.parse("[]baseNode"));
String baseNodeId = IdGenerator.generate();
- addDbNode(conn, baseNodePath, baseNodeId,Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
-
+ addDbNode(conn, baseNodePath, baseNodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
+
// add child nodes [node1]
String nodeId = IdGenerator.generate();
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId, Constants.NT_UNSTRUCTURED, baseNodeId);
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId,
+ Constants.NT_UNSTRUCTURED, baseNodeId);
conn.commit();
-
+
// tests it
Map<Object, Object> attrebutes = loader.get(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId, "[]node1:1"));
-
+
assertNotNull(attrebutes);
-
- String destNodeId = (String) attrebutes.get(JBossCacheStorage.ITEM_ID);
-
+
+ String destNodeId = (String)attrebutes.get(JBossCacheStorage.ITEM_ID);
+
assertNotNull(destNodeId);
- assertEquals(nodeId, destNodeId);
+ assertEquals(nodeId, destNodeId);
}
public void testGetPropertyByIdentifier() throws Exception
@@ -395,8 +402,7 @@
connection.commit();
// tests it
- Map<Object, Object> attrebutes =
- loader.get(Fqn.fromElements(JBossCacheStorage.PROPS, propData.getIdentifier()));
+ Map<Object, Object> attrebutes = loader.get(Fqn.fromElements(JBossCacheStorage.PROPS, propData.getIdentifier()));
assertNotNull(attrebutes);
@@ -433,19 +439,22 @@
QPath baseNodePath = QPath.makeChildPath(Constants.ROOT_PATH, InternalQName.parse("[]baseNode"));
String baseNodeId = IdGenerator.generate();
- addDbNode(conn, baseNodePath, baseNodeId,Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
-
+ addDbNode(conn, baseNodePath, baseNodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
+
// add child nodes [node1, node2, node3]
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), IdGenerator.generate(), Constants.NT_UNSTRUCTURED, baseNodeId);
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node2")), IdGenerator.generate(), Constants.NT_UNSTRUCTURED, baseNodeId);
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node3")), IdGenerator.generate(), Constants.NT_UNSTRUCTURED, baseNodeId);
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), IdGenerator.generate(),
+ Constants.NT_UNSTRUCTURED, baseNodeId);
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node2")), IdGenerator.generate(),
+ Constants.NT_UNSTRUCTURED, baseNodeId);
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node3")), IdGenerator.generate(),
+ Constants.NT_UNSTRUCTURED, baseNodeId);
conn.commit();
// tests it
- Set<String> childs = (Set<String>) loader.getChildrenNames(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId));
-
+ Set<String> childs = (Set<String>)loader.getChildrenNames(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId));
+
assertNotNull(childs);
-
+
assertEquals(3, childs.size());
assertTrue(childs.contains("[]node1:1"));
assertTrue(childs.contains("[]node2:1"));
@@ -460,24 +469,27 @@
QPath baseNodePath = QPath.makeChildPath(Constants.ROOT_PATH, InternalQName.parse("[]baseNode"));
String baseNodeId = IdGenerator.generate();
- addDbNode(conn, baseNodePath, baseNodeId,Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
+ addDbNode(conn, baseNodePath, baseNodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
- TransientPropertyData propData1 = addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop1"), "JCR DATA VALUE 1", false);
- TransientPropertyData propData2 = addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop2"), "JCR DATA VALUE 2", false);
- TransientPropertyData propData3 = addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop3"), "JCR DATA VALUE 3", false);
+ TransientPropertyData propData1 =
+ addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop1"), "JCR DATA VALUE 1", false);
+ TransientPropertyData propData2 =
+ addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop2"), "JCR DATA VALUE 2", false);
+ TransientPropertyData propData3 =
+ addDbProperty(conn, baseNodePath, baseNodeId, InternalQName.parse("[]prop3"), "JCR DATA VALUE 3", false);
conn.commit();
-
+
// tests it
Map<Object, Object> attrebutes = loader.get(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId));
-
+
assertNotNull(attrebutes);
-
+
assertTrue(attrebutes.containsKey(Constants.JCR_PRIMARYTYPE.getAsString()));
assertTrue(attrebutes.containsKey("[]prop1"));
assertTrue(attrebutes.containsKey("[]prop2"));
assertTrue(attrebutes.containsKey("[]prop3"));
-
+
assertEquals(propData1.getIdentifier(), attrebutes.get("[]prop1"));
assertEquals(propData2.getIdentifier(), attrebutes.get("[]prop2"));
assertEquals(propData3.getIdentifier(), attrebutes.get("[]prop3"));
@@ -487,54 +499,142 @@
{
// prepare
+ String nodeId = IdGenerator.generate();
+ QPath nodePath = QPath.parse("[]:1[]node:1");
+ NodeData node =
+ new TransientNodeData(nodePath, nodeId, 1, Constants.NT_UNSTRUCTURED,
+ new InternalQName[]{Constants.MIX_REFERENCEABLE}, 0, Constants.ROOT_UUID, new AccessControlList());
+
+ PropertyData primaryType =
+ createProperty(nodePath, nodeId, Constants.JCR_PRIMARYTYPE, Constants.NT_UNSTRUCTURED, false);
+
+ List<Modification> modifications = new ArrayList<Modification>();
+ modifications.addAll(addNode(node));
+ modifications.addAll(addProperty(primaryType));
+
+ loader.put(modifications);
+
+ // make node with refernce
+ String refnodeId = IdGenerator.generate();
+
+ QPath refnodePath = QPath.parse("[]:1[]node2:1");
+ NodeData refnode =
+ new TransientNodeData(refnodePath, refnodeId, 1, Constants.NT_UNSTRUCTURED, new InternalQName[0], 0,
+ Constants.ROOT_UUID, new AccessControlList());
+
+ PropertyData refprimaryType =
+ createProperty(refnodePath, refnodeId, Constants.JCR_PRIMARYTYPE, Constants.NT_UNSTRUCTURED, false);
+
+ String refPropId1 = IdGenerator.generate();
+ TransientPropertyData propData =
+ new TransientPropertyData(QPath.makeChildPath(refnodePath, "[]refprop1"), refPropId1, 1,
+ PropertyType.REFERENCE, refnodeId, false);
+ propData.setValue(new TransientValueData(nodeId));
+
+ modifications.clear();
+ modifications.addAll(addNode(refnode));
+ modifications.addAll(addProperty(refprimaryType));
+ loader.put(modifications);
+
+ WorkspaceStorageConnection conn = persistentContainer.openConnection();
+
+ // NodeData destNodeData = (NodeData)conn.getItemData(nodeId);
+ //
+ // assertNotNull(destNodeData);
+ // assertEquals(node.getIdentifier(), destNodeData.getIdentifier());
+ // assertEquals(node.getOrderNumber(), destNodeData.getOrderNumber());
+ // assertEquals(node.getParentIdentifier(), destNodeData.getParentIdentifier());
+ // assertEquals(node.getPersistedVersion(), destNodeData.getPersistedVersion());
+ // assertEquals(node.getQPath().getAsString(), destNodeData.getQPath().getAsString());
+ // assertEquals(node.getPrimaryTypeName().getAsString(), destNodeData.getPrimaryTypeName().getAsString());
+
+ modifications.clear();
+ modifications.addAll(addProperty(propData));
+ loader.put(modifications);
+
+ String refPropId2 = IdGenerator.generate();
+ TransientPropertyData propData2 =
+ new TransientPropertyData(QPath.makeChildPath(refnodePath, "[]refprop2"), refPropId2, 1,
+ PropertyType.REFERENCE, refnodeId, false);
+ propData2.setValue(new TransientValueData(nodeId));
+
+ modifications.clear();
+ modifications.addAll(addProperty(propData2));
+ loader.put(modifications);
+
// tests it
+ Set names = loader.getChildrenNames(Fqn.fromString("/$REFS/" + nodeId));
+
+ assertTrue(names.size() == 2);
+
+ Iterator it = names.iterator();
+
+ assertEquals(refPropId1, (String)it.next());
+ assertEquals(refPropId2, (String)it.next());
+
+ Set referncedNodes = loader.getChildrenNames(Fqn.fromString("/$REFS"));
+
+ assertTrue(referncedNodes.size() == 1);
+
+ it = referncedNodes.iterator();
+
+ assertEquals(nodeId, (String)it.next());
+
+ conn = persistentContainer.openConnection();
+
+ // tests it
+ List<PropertyData> refs = conn.getReferencesData(nodeId);
+
+ assertEquals(2, refs.size());
+ assertEquals(refPropId1, refs.get(0).getIdentifier());
+ assertEquals(refPropId2, refs.get(1).getIdentifier());
}
-
+
public void testExistNode() throws Exception
{
// prepare
WorkspaceStorageConnection conn = persistentContainer.openConnection();
-
+
QPath baseNodePath = QPath.makeChildPath(Constants.ROOT_PATH, InternalQName.parse("[]baseNode"));
String baseNodeId = IdGenerator.generate();
- addDbNode(conn, baseNodePath, baseNodeId,Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
+ addDbNode(conn, baseNodePath, baseNodeId, Constants.NT_UNSTRUCTURED, Constants.ROOT_UUID);
conn.commit();
-
+
// tests it
String nodeId = IdGenerator.generate();
-
+
assertFalse(loader.exists(Fqn.fromElements(JBossCacheStorage.NODES, nodeId)));
assertFalse(loader.exists(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId, "[]node1:1")));
-
+
conn = persistentContainer.openConnection();
-
- addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId, Constants.NT_UNSTRUCTURED, baseNodeId);
+
+ addDbNode(conn, QPath.makeChildPath(baseNodePath, InternalQName.parse("[]node1")), nodeId,
+ Constants.NT_UNSTRUCTURED, baseNodeId);
conn.commit();
-
+
assertTrue(loader.exists(Fqn.fromElements(JBossCacheStorage.NODES, nodeId)));
assertTrue(loader.exists(Fqn.fromElements(JBossCacheStorage.NODES, baseNodeId, "[]node1:1")));
}
-
+
public void testExistProperty() throws Exception
{
// prepare
WorkspaceStorageConnection conn = persistentContainer.openConnection();
-
+
TransientPropertyData propData =
- createProperty(Constants.ROOT_PATH, Constants.ROOT_UUID, Constants.JCR_DATA, "JCR DATA VALUE",
- false);
-
+ createProperty(Constants.ROOT_PATH, Constants.ROOT_UUID, Constants.JCR_DATA, "JCR DATA VALUE", false);
+
// tests it
assertFalse(loader.exists(Fqn.fromElements(JBossCacheStorage.PROPS, propData.getIdentifier())));
-
+
// commit in DB
conn.add(propData);
conn.commit();
-
+
assertTrue(loader.exists(Fqn.fromElements(JBossCacheStorage.PROPS, propData.getIdentifier())));
}
More information about the exo-jcr-commits
mailing list