Author: nzamosenchuk
Date: 2009-11-10 03:54:53 -0500 (Tue, 10 Nov 2009)
New Revision: 534
Modified:
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java
Log:
EXOJCR-204: Updated abstract test-class
Modified:
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java 2009-11-10
08:12:16 UTC (rev 533)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java 2009-11-10
08:54:53 UTC (rev 534)
@@ -39,17 +39,46 @@
public abstract class AbstractCacheLoaderTest extends TestCase
{
+ protected static boolean addPUTDATA = true;
+
/**
* Returns {@link Modification} like as node added. NodeData is written to
/$NODE/IDxxxx as an attribute by key ITEM_DATA.
*
+ * PUT_DATA /$NODES/ParentId/ChildName
+ * PUT_KEY_VALUE /$NODES/ParentId/ChildName.Id
+ * PUT_DATA /$NODES/Id
+ * PUT_KEY_VALUE /$NODES/Id.Item_data
+ *
* @param data
* @return
*/
- public Modification addNode(NodeData data)
+ public List<Modification> addNode(NodeData data)
{
- String fqn = "/" + JBossCacheStorage.NODES + "/" +
data.getIdentifier();
- return new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(fqn),
(Object)JBossCacheStorage.ITEM_DATA,
- (Object)data);
+ List<Modification> list = new ArrayList<Modification>();
+
+ if (data.getParentIdentifier() != null)
+ {
+ // if not root:
+ // write to : /$NODES/ParentID/ChildName
+ // key=ITEM_ID val = uuid
+ String childFqn =
+ "/" + JBossCacheStorage.NODES + "/" +
data.getParentIdentifier() + "/"
+ + data.getQPath().getEntries()[data.getQPath().getEntries().length -
1].getAsString();
+ // Fire modification child added
+ if (addPUTDATA)
+ list.add(new Modification(ModificationType.PUT_DATA,
Fqn.fromString(childFqn)));
+ // add modification that value is written by key ITEM_ID
+ list.add(new Modification(ModificationType.PUT_KEY_VALUE,
Fqn.fromString(childFqn), JBossCacheStorage.ITEM_ID,
+ data.getIdentifier()));
+ }
+ String nodeFqn = "/" + JBossCacheStorage.NODES + "/" +
data.getIdentifier();
+ // add PUT_DATA modification
+ if (addPUTDATA)
+ list.add(new Modification(ModificationType.PUT_DATA, Fqn.fromString(nodeFqn)));
+
+ list.add(new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(nodeFqn),
JBossCacheStorage.ITEM_DATA,
+ data));
+ return list;
}
/**
@@ -57,27 +86,54 @@
* so {@link Modification} instance contains additional data: Key=ITEM_DATA,
value=NodeData - data of already removed
* node.
*
+ * REMOVE_NODE /$NODES/ParentId/ChildName
+ * REMOVE_NODE /$NODES/Id
+ *
* @param data
* @return
*/
- public Modification removeNode(NodeData data)
+ public List<Modification> removeNode(NodeData data)
{
+ List<Modification> list = new ArrayList<Modification>();
+ if (data.getParentIdentifier() != null)
+ {
+ // remove child from parent
+ String childFqn =
+ "/" + JBossCacheStorage.NODES + "/" +
data.getParentIdentifier() + "/"
+ + data.getQPath().getEntries()[data.getQPath().getEntries().length -
1].getAsString();
+ list.add(new Modification(ModificationType.REMOVE_NODE,
Fqn.fromString(childFqn)));
+ }
String fqn = "/" + JBossCacheStorage.NODES + "/" +
data.getIdentifier();
- return new Modification(ModificationType.REMOVE_NODE, Fqn.fromString(fqn),
(Object)JBossCacheStorage.ITEM_DATA,
- (Object)data);
+ list.add(new Modification(ModificationType.REMOVE_NODE, Fqn.fromString(fqn),
JBossCacheStorage.ITEM_DATA, data));
+ return list;
}
/**
* Returns {@link Modification} like as property added. PropertyData is written to
/$PROPERTY/IDxxxx as an attribute by key ITEM_DATA.
*
+ * PUT_KEY_VALUE /$NODES/ParentId.propertyName
+ * PUT_DATA /$PROPERTIES/Id
+ * PUT_KEY_VALUE /$PROPERTIES/Id.Item_data
+ *
* @param data
* @return
*/
- public Modification addProperty(PropertyData data)
+ public List<Modification> addProperty(PropertyData data)
{
+ List<Modification> list = new ArrayList<Modification>();
+ String parentFqn = "/" + JBossCacheStorage.NODES + "/" +
data.getParentIdentifier();
+ // write attribute to parent's map
+ list.add(new Modification(ModificationType.PUT_KEY_VALUE,
Fqn.fromString(parentFqn), data.getQPath().getName()
+ .getAsString(), data.getIdentifier()));
+
String fqn = "/" + JBossCacheStorage.PROPS + "/" +
data.getIdentifier();
- return new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(fqn),
(Object)JBossCacheStorage.ITEM_DATA,
- (Object)data);
+ // add modification PUT_DATA if enabled
+ if (addPUTDATA)
+ list.add(new Modification(ModificationType.PUT_DATA, Fqn.fromString(fqn)));
+ // put property data
+ list
+ .add(new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(fqn),
JBossCacheStorage.ITEM_DATA, data));
+ return list;
}
/**
@@ -86,17 +142,20 @@
* filed of {@link Modification} instance contains same PropertyData (meaning that
there was an old value, so this is an update, no add
* action)
*
+ * PUT_KEY_VALUE /$PROPERTIES/Id.Item_data
+ *
* @param data
* @return
*/
- public Modification updateProperty(PropertyData data)
+ public List<Modification> updateProperty(PropertyData data)
{
+ List<Modification> list = new ArrayList<Modification>();
String fqn = "/" + JBossCacheStorage.PROPS + "/" +
data.getIdentifier();
Modification modification =
- new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(fqn),
(Object)JBossCacheStorage.ITEM_DATA,
- (Object)data);
+ new Modification(ModificationType.PUT_KEY_VALUE, Fqn.fromString(fqn),
JBossCacheStorage.ITEM_DATA, data);
modification.setOldValue(data);
- return modification;
+ list.add(modification);
+ return list;
}
/**
@@ -104,17 +163,26 @@
* so {@link Modification} instance contains additional data: Key=ITEM_DATA,
value=PropertyData - data of already removed
* node.
*
+ * REMOVE_KEY_VALUE /$NODES/ParentId.propertyName
+ * REMOVE_NODE /$PROPERTIES/Id
+ *
* @param data
* @return
*/
- public Modification removeProperty(PropertyData data)
+ public List<Modification> removeProperty(PropertyData data)
{
+ List<Modification> list = new ArrayList<Modification>();
+ String parentFqn = "/" + JBossCacheStorage.NODES + "/" +
data.getParentIdentifier();
+ // write attribute to parent's map
+ list.add(new Modification(ModificationType.REMOVE_KEY_VALUE,
Fqn.fromString(parentFqn), data.getQPath().getName()
+ .getAsString()));
+
String fqn = "/" + JBossCacheStorage.PROPS + "/" +
data.getIdentifier();
Modification modification =
- new Modification(ModificationType.REMOVE_NODE, Fqn.fromString(fqn),
(Object)JBossCacheStorage.ITEM_DATA,
- (Object)data);
+ new Modification(ModificationType.REMOVE_NODE, Fqn.fromString(fqn),
JBossCacheStorage.ITEM_DATA, data);
modification.setOldValue(data);
- return modification;
+ list.add(modification);
+ return list;
}
/**
@@ -122,6 +190,9 @@
* This imitates situation when WorkspaceDataManager walks thought transaction changes
log, and on the beginning of each plain
* changes log, such sequence is generated.
*
+ * PUT_KEY_VALUE /$SESSION.sessionId
+ * PUT_KEY_VALUE /$SESSION.userId
+ *
* @param sessionId
* @param userId
* @return
@@ -139,8 +210,17 @@
return list;
}
- public Modification removeSession()
+ /**
+ * Removes Session inforamtion.
+ *
+ * REMOVE_NODE /$SESSION
+ *
+ * @return
+ */
+ public List<Modification> removeSession()
{
- return new Modification(ModificationType.REMOVE_NODE, Fqn.fromString("/"
+ JBossCacheStorage.SESSION));
+ List<Modification> list = new ArrayList<Modification>();
+ list.add(new Modification(ModificationType.REMOVE_NODE,
Fqn.fromString("/" + JBossCacheStorage.SESSION)));
+ return list;
}
}