From f58422cc9b350084d4a571f940510658551dc23c Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Thu, 8 Oct 2009 09:06:49 +0000 Subject: [PATCH] AVM - follow-on to CHK-9608 (add unit tests & fix update of serializable store property) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16742 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../avm-common-SqlMap.xml | 2 +- .../org/alfresco/repo/avm/AVMServiceTest.java | 125 +++++++++++++++--- 2 files changed, 111 insertions(+), 16 deletions(-) diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/avm-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/avm-common-SqlMap.xml index c00bb74501..6c404692f1 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/avm-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/avm-common-SqlMap.xml @@ -376,7 +376,7 @@ - + update avm_store_properties set diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index 475fbe671c..95e4d26a45 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -410,20 +410,20 @@ public class AVMServiceTest extends AVMServiceTestBase } /** - * Test properties. + * Test (node) properties. */ public void testProperties() throws Exception { try { setupBasicTree(); - + StoreRef storeRef = AVMNodeConverter.ToStoreRef("main"); SearchService searchService = fIndexerAndSearcher.getSearcher(storeRef, true); ResultSet results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}SillyProperty") + ":\"Silly\""); assertEquals(0, results.length()); results.close(); - + QName name = QName.createQName("silly.uri", "SillyProperty"); PropertyValue value = new PropertyValue(DataTypeDefinition.TEXT, "Silly Property Value"); fService.setNodeProperty("main:/a/b/c/foo", name, value); @@ -436,7 +436,7 @@ public class AVMServiceTest extends AVMServiceTestBase Map props = fService.getNodeProperties(-1, "main:/a/b/c/foo"); assertEquals(1, props.size()); assertEquals(value.toString(), props.get(name).toString()); - + props = new HashMap(); QName n1 = QName.createQName("silly.uri", "Prop1"); PropertyValue p1 = new PropertyValue(DataTypeDefinition.DATETIME, new Date(System.currentTimeMillis())); @@ -447,45 +447,87 @@ public class AVMServiceTest extends AVMServiceTestBase QName n3 = QName.createQName("silly.uri", "Prop3"); PropertyValue p3 = new PropertyValue(DataTypeDefinition.INT, 42); props.put(n3, p3); + QName n4 = QName.createQName("silly.uri", "Prop4"); + PropertyValue p4 = new PropertyValue(null, new Boolean(false)); + props.put(n4, p4); + QName n5 = QName.createQName("silly.uri", "Prop5"); + List strList = new ArrayList(2); + strList.add("hello"); + strList.add("world"); + PropertyValue p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList); + props.put(n5, p5); fService.setNodeProperties("main:/a/b/c/bar", props); fService.createSnapshot("main", null, null); props = fService.getNodeProperties(-1, "main:/a/b/c/bar"); - assertEquals(3, props.size()); + assertEquals(5, props.size()); assertEquals(p1.toString(), props.get(n1).toString()); assertEquals(p2.toString(), props.get(n2).toString()); assertEquals(p3.toString(), props.get(n3).toString()); - + assertEquals(p4.toString(), props.get(n4).toString()); + assertEquals(p5.toString(), props.get(n5).toString()); + results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop1") + ":\"" + props.get(n1).getStringValue() + "\""); assertEquals(1, results.length()); results.close(); results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\""); assertEquals(1, results.length()); results.close(); - + + props = new HashMap(); + n1 = QName.createQName("silly.uri", "Prop1"); + p1 = new PropertyValue(DataTypeDefinition.DATETIME, new Date(System.currentTimeMillis())); + props.put(n1, p1); + n2 = QName.createQName("silly.uri", "Prop2"); + p2 = new PropertyValue(DataTypeDefinition.TEXT, "A String Property - updated."); + props.put(n2, p2); + n3 = QName.createQName("silly.uri", "Prop3"); + p3 = new PropertyValue(DataTypeDefinition.INT, -42); + props.put(n3, p3); + n4 = QName.createQName("silly.uri", "Prop4"); + p4 = new PropertyValue(null, new Boolean(true)); + props.put(n4, p4); + n5 = QName.createQName("silly.uri", "Prop5"); + strList = new ArrayList(2); + strList.add("goodbye"); + strList.add("world"); + p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList); + props.put(n5, p5); + fService.setNodeProperties("main:/a/b/c/bar", props); + fService.createSnapshot("main", null, null); + props = fService.getNodeProperties(-1, "main:/a/b/c/bar"); + assertEquals(5, props.size()); + assertEquals(p1.toString(), props.get(n1).toString()); + assertEquals(p2.toString(), props.get(n2).toString()); + assertEquals(p3.toString(), props.get(n3).toString()); + assertEquals(p4.toString(), props.get(n4).toString()); + assertEquals(p5.toString(), props.get(n5).toString()); + fService.deleteNodeProperty("main:/a/b/c/bar", n1); fService.createSnapshot("main", null, null); - + results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop1") + ":\"" + props.get(n1).getStringValue() + "\""); assertEquals(0, results.length()); results.close(); results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\""); assertEquals(1, results.length()); results.close(); - + props = fService.getNodeProperties(-1, "main:/a/b/c/bar"); - assertEquals(2, props.size()); + assertEquals(4, props.size()); assertEquals(p2.toString(), props.get(n2).toString()); assertEquals(p3.toString(), props.get(n3).toString()); + assertEquals(p4.toString(), props.get(n4).toString()); + assertEquals(p5.toString(), props.get(n5).toString()); fService.deleteNodeProperties("main:/a/b/c/bar"); fService.createSnapshot("main", null, null); - + results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop1") + ":\"" + p1.getStringValue() + "\""); assertEquals(0, results.length()); results.close(); results = searchService.query(storeRef, "lucene", LuceneQueryParser.escape("@{silly.uri}Prop2") + ":\"" + props.get(n2).getStringValue() + "\""); assertEquals(0, results.length()); results.close(); - + props = fService.getNodeProperties(-1, "main:/a/b/c/bar"); assertEquals(0, props.size()); fService.removeNode("main:/a/b/c/foo"); @@ -4968,12 +5010,21 @@ public class AVMServiceTest extends AVMServiceTestBase { try { + Map props = fService.getStoreProperties("main"); + assertEquals(2, props.size()); + assertEquals(AuthenticationUtil.getAdminUserName(), props.get(ContentModel.PROP_CREATOR).getStringValue()); + assertNotNull(props.get(ContentModel.PROP_CREATED)); + System.out.println(props.toString()); + QName name = QName.createQName("silly.uri", "SillyProperty"); PropertyValue value = new PropertyValue(DataTypeDefinition.TEXT, "Silly Property Value"); fService.setStoreProperty("main", name, value); PropertyValue found = fService.getStoreProperty("main", name); assertEquals(value.toString(), found.toString()); - Map props = new HashMap(); + props = fService.getStoreProperties("main"); + assertEquals(3, props.size()); + + props = new HashMap(5); QName n1 = QName.createQName("silly.uri", "Prop1"); PropertyValue p1 = new PropertyValue(null, new Date(System.currentTimeMillis())); props.put(n1, p1); @@ -4983,15 +5034,59 @@ public class AVMServiceTest extends AVMServiceTestBase QName n3 = QName.createQName("silly.uri", "Prop3"); PropertyValue p3 = new PropertyValue(null, 42); props.put(n3, p3); + QName n4 = QName.createQName("silly.uri", "Prop4"); + PropertyValue p4 = new PropertyValue(null, new Boolean(false)); + props.put(n4, p4); + QName n5 = QName.createQName("silly.uri", "Prop5"); + List strList = new ArrayList(2); + strList.add("hello"); + strList.add("world"); + PropertyValue p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList); + props.put(n5, p5); fService.setStoreProperties("main", props); + props = fService.getStoreProperties("main"); - assertEquals(6, props.size()); + System.out.println(props.toString()); + assertEquals(8, props.size()); assertEquals(p1.toString(), props.get(n1).toString()); assertEquals(p2.toString(), props.get(n2).toString()); assertEquals(p3.toString(), props.get(n3).toString()); + assertEquals(p4.toString(), props.get(n4).toString()); + assertEquals(p5.toString(), props.get(n5).toString()); + + props = new HashMap(5); + n1 = QName.createQName("silly.uri", "Prop1"); + p1 = new PropertyValue(null, new Date(System.currentTimeMillis())); + props.put(n1, p1); + n2 = QName.createQName("silly.uri", "Prop2"); + p2 = new PropertyValue(null, "A String Property - updated."); + props.put(n2, p2); + n3 = QName.createQName("silly.uri", "Prop3"); + p3 = new PropertyValue(null, -42); + props.put(n3, p3); + n4 = QName.createQName("silly.uri", "Prop4"); + p4 = new PropertyValue(null, new Boolean(true)); + props.put(n4, p4); + n5 = QName.createQName("silly.uri", "Prop5"); + strList = new ArrayList(2); + strList.add("goodbye"); + strList.add("world"); + p5 = new PropertyValue(DataTypeDefinition.TEXT, (Serializable)strList); + props.put(n5, p5); + fService.setStoreProperties("main", props); + + props = fService.getStoreProperties("main"); + System.out.println(props.toString()); + assertEquals(8, props.size()); + assertEquals(p1.toString(), props.get(n1).toString()); + assertEquals(p2.toString(), props.get(n2).toString()); + assertEquals(p3.toString(), props.get(n3).toString()); + assertEquals(p4.toString(), props.get(n4).toString()); + assertEquals(p5.toString(), props.get(n5).toString()); + fService.deleteStoreProperty("main", name); props = fService.getStoreProperties("main"); - assertEquals(5, props.size()); + assertEquals(7, props.size()); } catch (Exception e) {