{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getChildPropertiesData(parentNode);
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-property" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "property")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdm.save(new TransactionChangesLog(chlog));
}
};
parentNode = new PersistedNodeData("parent-id3", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node3")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode).size());
parentNode = new PersistedNodeData("parent-id4", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node4")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode).size());
// Test getReferencesData
readAction = new Action(cwdmNode2)
{
public void execute(NodeData parentNode) throws Exception
{
cwdm.getReferencesData(parentNode.getIdentifier(), false);
}
};
writeAction = new Action(cwdmNode1)
{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getReferencesData(parentNode.getIdentifier(), false);
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-reference" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "reference")), parentNode.getIdentifier(), 0,
PropertyType.REFERENCE, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, parentNode.getIdentifier().getBytes("UTF-8"))))));
cwdm.save(new TransactionChangesLog(chlog));
}
};
parentNode = new PersistedNodeData("parent-id5", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node5")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode1.getReferencesData(parentNode.getIdentifier(), false).size());
assertNotNull(cwdmNode2.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode2.getReferencesData(parentNode.getIdentifier(), false).size());
parentNode = new PersistedNodeData("parent-id6", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node6")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode1.getReferencesData(parentNode.getIdentifier(), false).size());
assertNotNull(cwdmNode2.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode2.getReferencesData(parentNode.getIdentifier(), false).size());
// Test getItemData by Id
readAction = new Action(cwdmNode2)
{
public void execute(NodeData parentNode) throws Exception
{
cwdm.getItemData(parentNode.getIdentifier());
}
};
writeAction = new Action(cwdmNode1)
{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getItemData(parentNode.getIdentifier());
chlog.add(ItemState.createUpdatedState(new PersistedNodeData(parentNode.getIdentifier(), parentNode.getQPath(), Constants.ROOT_UUID, 2, 1,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdm.save(new TransactionChangesLog(chlog));
}
};
parentNode = new PersistedNodeData("parent-id7", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node7")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getItemData(parentNode.getIdentifier()));
assertEquals(2, cwdmNode1.getItemData(parentNode.getIdentifier()).getPersistedVersion());
assertNotNull(cwdmNode2.getItemData(parentNode.getIdentifier()));
assertEquals(2, cwdmNode2.getItemData(parentNode.getIdentifier()).getPersistedVersion());
parentNode = new PersistedNodeData("parent-id8", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node8")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getItemData(parentNode.getIdentifier()));
assertEquals(2, cwdmNode1.getItemData(parentNode.getIdentifier()).getPersistedVersion());
assertNotNull(cwdmNode2.getItemData(parentNode.getIdentifier()));
assertEquals(2, cwdmNode2.getItemData(parentNode.getIdentifier()).getPersistedVersion());
// Test getItemData by Path
final QPathEntry qpe = new QPathEntry(null, "my-property", 1);
readAction = new Action(cwdmNode2)
{
public void execute(NodeData parentNode) throws Exception
{
cwdm.getItemData(parentNode, qpe, ItemType.PROPERTY);
}
};
writeAction = new Action(cwdmNode1)
{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getItemData(parentNode, qpe, ItemType.PROPERTY);
chlog.add(ItemState.createUpdatedState(new PersistedPropertyData("property-by-path"
+ parentNode.getIdentifier(), QPath.makeChildPath(parentNode.getQPath(), qpe), parentNode
.getIdentifier(), 2, PropertyType.STRING, false, Arrays
.asList((ValueData)new ByteArrayPersistedValueData(0, "some new data".getBytes("UTF-8"))))));
cwdm.save(new TransactionChangesLog(chlog));
}
};
parentNode = new PersistedNodeData("parent-id9", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node9")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getItemData(parentNode, qpe, ItemType.PROPERTY));
assertEquals(2, cwdmNode1.getItemData(parentNode, qpe, ItemType.PROPERTY).getPersistedVersion());
assertNotNull(cwdmNode2.getItemData(parentNode, qpe, ItemType.PROPERTY));
assertEquals(2, cwdmNode2.getItemData(parentNode, qpe, ItemType.PROPERTY).getPersistedVersion());
parentNode = new PersistedNodeData("parent-id10", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node10")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getItemData(parentNode, qpe, ItemType.PROPERTY));
assertEquals(2, cwdmNode1.getItemData(parentNode, qpe, ItemType.PROPERTY).getPersistedVersion());
assertNotNull(cwdmNode2.getItemData(parentNode, qpe, ItemType.PROPERTY));
assertEquals(2, cwdmNode2.getItemData(parentNode, qpe, ItemType.PROPERTY).getPersistedVersion());
// Test getChildNodesData by patterns
final List<QPathEntryFilter> nodePatterns =
Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("",
"my-node", -1)));
readAction = new Action(cwdmNode2)
{
public void execute(NodeData parentNode) throws Exception
{
cwdm.getChildNodesData(parentNode, nodePatterns);
}
};
writeAction = new Action(cwdmNode1)
{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getChildNodesData(parentNode, nodePatterns);
chlog.add(ItemState.createAddedState(new PersistedNodeData("my-node2" + parentNode.getIdentifier(),
QPath.makeChildPath(parentNode.getQPath(), new QName("", "my-node"), 2), parentNode.getIdentifier(), 1, 2,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdm.save(new TransactionChangesLog(chlog));
}
};
con.setCanModify(true);
parentNode = new PersistedNodeData("parent-id11", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node11")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildNodesData(parentNode, nodePatterns));
assertEquals(2, cwdmNode1.getChildNodesData(parentNode, nodePatterns).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode, nodePatterns));
assertEquals(2, cwdmNode2.getChildNodesData(parentNode, nodePatterns).size());
parentNode = new PersistedNodeData("parent-id12", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node12")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildNodesData(parentNode, nodePatterns));
assertEquals(2, cwdmNode1.getChildNodesData(parentNode, nodePatterns).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode, nodePatterns));
assertEquals(2, cwdmNode2.getChildNodesData(parentNode, nodePatterns).size());
// Test getChildPropertiesData by patterns
final List<QPathEntryFilter> propPatterns =
Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("",
"my-property*", -1)));
readAction = new Action(cwdmNode2)
{
public void execute(NodeData parentNode) throws Exception
{
cwdm.getChildPropertiesData(parentNode, propPatterns);
}
};
writeAction = new Action(cwdmNode1)
{
public void execute(NodeData parentNode) throws Exception
{
PlainChangesLog chlog = new PlainChangesLogImpl();
cwdm.getChildPropertiesData(parentNode, propPatterns);
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-property" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "my-property1")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdm.save(new TransactionChangesLog(chlog));
}
};
parentNode = new PersistedNodeData("parent-id13", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node13")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.READ_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode, propPatterns));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode, propPatterns).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode, propPatterns));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode, propPatterns).size());
parentNode = new PersistedNodeData("parent-id14", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent-node14")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
executeConcurrentReadNWrite(con, readAction, writeAction, Mode.WRITE_FIRST, parentNode);
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode, propPatterns));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode, propPatterns).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode, propPatterns));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode, propPatterns).size());
// testConsistency
con = new MyWorkspaceStorageConnection(true);
wdc = new MyWorkspaceDataContainer(con);
wsc = repository.getWorkspaceContainer("ws");
wconf = (WorkspaceEntry)wsc.getComponent(WorkspaceEntry.class);
cwdmNode1 =
new CacheableWorkspaceDataManager(wconf, wdc, cache1, new SystemDataContainerHolder(wdc));
cwdmNode2 =
new CacheableWorkspaceDataManager(wconf, wdc, cache2, new SystemDataContainerHolder(wdc));
parentNode = new PersistedNodeData("parent2-id", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
// Test getChildNodesData
con.setParentNode(parentNode);
cwdmNode2.getChildNodesData(parentNode);
PlainChangesLog chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createAddedState(new PersistedNodeData("id-node" + parentNode.getIdentifier(), QPath.makeChildPath(parentNode.getQPath(), new InternalQName(null, "node")), parentNode.getIdentifier(), 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildNodesData(parentNode));
assertEquals(2, cwdmNode1.getChildNodesData(parentNode).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode));
assertEquals(2, cwdmNode2.getChildNodesData(parentNode).size());
parentNode = new PersistedNodeData("parent2-id2", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node2")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildNodesData(parentNode);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createDeletedState(new PersistedNodeData("id-node2" + parentNode.getIdentifier(), QPath.makeChildPath(parentNode.getQPath(), new InternalQName(null, "node2")), parentNode.getIdentifier(), 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildNodesData(parentNode));
assertEquals(0, cwdmNode1.getChildNodesData(parentNode).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode));
assertEquals(0, cwdmNode2.getChildNodesData(parentNode).size());
// Test getChildPropertiesData
parentNode = new PersistedNodeData("parent2-id3", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node3")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildPropertiesData(parentNode);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-property" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "property")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode).size());
parentNode = new PersistedNodeData("parent2-id4", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node4")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildPropertiesData(parentNode);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createDeletedState(new PersistedPropertyData("id-property2" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "property2")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode));
assertEquals(0, cwdmNode1.getChildPropertiesData(parentNode).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode));
assertEquals(0, cwdmNode2.getChildPropertiesData(parentNode).size());
// Test getReferencesData
parentNode = new PersistedNodeData("parent2-id5", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node5")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getReferencesData(parentNode.getIdentifier(), false);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-reference" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "reference")), parentNode.getIdentifier(), 0,
PropertyType.REFERENCE, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, parentNode.getIdentifier().getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode1.getReferencesData(parentNode.getIdentifier(), false).size());
assertNotNull(cwdmNode2.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(2, cwdmNode2.getReferencesData(parentNode.getIdentifier(), false).size());
parentNode = new PersistedNodeData("parent2-id6", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node6")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getReferencesData(parentNode.getIdentifier(), false);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createDeletedState(new PersistedPropertyData("id-reference2" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "reference2")), parentNode.getIdentifier(), 0,
PropertyType.REFERENCE, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, parentNode.getIdentifier().getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(0, cwdmNode1.getReferencesData(parentNode.getIdentifier(), false).size());
assertNotNull(cwdmNode2.getReferencesData(parentNode.getIdentifier(), false));
assertEquals(0, cwdmNode2.getReferencesData(parentNode.getIdentifier(), false).size());
// Test getChildNodesData by patterns
final List<QPathEntryFilter> patterns =
Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("",
"my-node", -1)));
parentNode = new PersistedNodeData("parent2-id11", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node11")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildNodesData(parentNode, patterns);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createAddedState(new PersistedNodeData("my-node2" + parentNode.getIdentifier(),
QPath.makeChildPath(parentNode.getQPath(), new QName("", "my-node"), 2), parentNode.getIdentifier(), 1, 2,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildNodesData(parentNode, patterns));
assertEquals(2, cwdmNode1.getChildNodesData(parentNode, patterns).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode, patterns));
assertEquals(2, cwdmNode2.getChildNodesData(parentNode, patterns).size());
parentNode = new PersistedNodeData("parent2-id12", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node12")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildNodesData(parentNode, patterns);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createDeletedState(new PersistedNodeData("my-node" + parentNode.getIdentifier(), QPath
.makeChildPath(parentNode.getQPath(), new QName("", "my-node"), 1), parentNode.getIdentifier(), 1, 1,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null)));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildNodesData(parentNode, patterns));
assertEquals(0, cwdmNode1.getChildNodesData(parentNode, patterns).size());
assertNotNull(cwdmNode2.getChildNodesData(parentNode, patterns));
assertEquals(0, cwdmNode2.getChildNodesData(parentNode, patterns).size());
// Test getChildPropertiesData by patterns
final List<QPathEntryFilter> propPattern2s =
Collections.singletonList((QPathEntryFilter)new PatternQPathEntryFilter(new PatternQPathEntry("",
"my-property*", -1)));
parentNode = new PersistedNodeData("parent2-id13", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node13")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildPropertiesData(parentNode, propPattern2s);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createAddedState(new PersistedPropertyData("id-property" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "my-property1")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode, propPattern2s));
assertEquals(2, cwdmNode1.getChildPropertiesData(parentNode, propPattern2s).size());
assertNotNull(cwdmNode2.getChildPropertiesData(parentNode, propPattern2s));
assertEquals(2, cwdmNode2.getChildPropertiesData(parentNode, propPattern2s).size());
parentNode = new PersistedNodeData("parent2-id14", QPath.makeChildPath(Constants.ROOT_PATH, new InternalQName(null, "parent2-node14")), Constants.ROOT_UUID, 1, 0,
Constants.NT_UNSTRUCTURED, new InternalQName[0], null);
con.setParentNode(parentNode);
cwdmNode2.getChildPropertiesData(parentNode, propPattern2s);
chlog = new PlainChangesLogImpl();
chlog.add(ItemState.createDeletedState(new PersistedPropertyData("id-property2" + parentNode.getIdentifier(), QPath.makeChildPath(
parentNode.getQPath(), new InternalQName(null, "my-property2")), parentNode.getIdentifier(), 0,
PropertyType.STRING, false, Arrays.asList((ValueData)new ByteArrayPersistedValueData(0, "some data".getBytes("UTF-8"))))));
cwdmNode1.save(new TransactionChangesLog(chlog));
assertNotNull(cwdmNode1.getChildPropertiesData(parentNode, propPattern2s));
assertEquals(0, cwdmNode1.getChildPropertiesData(parentNode, propPattern2s).size());