]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5271: Factory now emits only StoredValueUriTemplate objects; UriTemplate objec...
authorAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 01:41:22 +0000 (18:41 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 01:41:22 +0000 (18:41 -0700)
services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.java
services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java
services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java
services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java

index dd97ebbf9f2c2d47761ed10ee995efa80ae85a46..c42a9b4fd11bafdc798c675f0059a553a7c8edbb 100644 (file)
@@ -43,13 +43,17 @@ public class StoredValuesUriTemplate extends UriTemplate {
 
     private static final Logger logger = LoggerFactory.getLogger(StoredValuesUriTemplate.class);
     private Map<String, String> storedValuesMap = new HashMap<String, String>();
-
+    
+    public StoredValuesUriTemplate(String path) {
+        super(path);
+    }
+    
     public StoredValuesUriTemplate(String path, Map<String, String> storedValuesMap) {
         super(path);
         setStoredValuesMap(storedValuesMap);
     }
 
-    private void setStoredValuesMap(Map<String, String> storedValuesMap) {
+    public void setStoredValuesMap(Map<String, String> storedValuesMap) {
         if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
             this.storedValuesMap = storedValuesMap;
         }
index 5d39d11b8da7474f83dbebc1642cf9f39ffe38f8..9cde898f20f2154291becd53e7261dd9dc0613fd 100644 (file)
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
  * Generates URI strings by combining a URI template with provided values, which\r
  * replace variables within the template.\r
  */\r
-public class UriTemplate {\r
+public abstract class UriTemplate {\r
 \r
     private static final Logger logger = LoggerFactory.getLogger(UriTemplate.class);\r
     private UriBuilder builder;\r
index 945892c6a89e0f07e7335bb086a0b45b2ce3d56b..2816b16c45a0d733c518a2ac519ccd3205f33177 100644 (file)
@@ -22,6 +22,8 @@
  */\r
 package org.collectionspace.services.common;\r
 \r
+import java.util.Map;\r
+\r
 /**\r
  * UriTemplateFactory.java\r
  *\r
@@ -38,14 +40,15 @@ public class UriTemplateFactory {
             "/{servicename}/{identifier}/items/{itemIdentifier}";\r
     public final static String CONTACT_TEMPLATE_PATTERN =\r
             "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}";\r
-    private final static UriTemplate RESOURCE_URI_TEMPLATE =\r
-            new UriTemplate(RESOURCE_TEMPLATE_PATTERN);\r
-    private final static UriTemplate ITEM_URI_TEMPLATE =\r
-            new UriTemplate(ITEM_TEMPLATE_PATTERN);\r
-    private final static UriTemplate CONTACT_URI_TEMPLATE =\r
-            new UriTemplate(CONTACT_TEMPLATE_PATTERN);\r
+    \r
+    private final static StoredValuesUriTemplate RESOURCE_URI_TEMPLATE =\r
+            new StoredValuesUriTemplate(RESOURCE_TEMPLATE_PATTERN);\r
+    private final static StoredValuesUriTemplate ITEM_URI_TEMPLATE =\r
+            new StoredValuesUriTemplate(ITEM_TEMPLATE_PATTERN);\r
+    private final static StoredValuesUriTemplate CONTACT_URI_TEMPLATE =\r
+            new StoredValuesUriTemplate(CONTACT_TEMPLATE_PATTERN);\r
 \r
-    public static UriTemplate getURITemplate(UriTemplateType type) {\r
+    public static StoredValuesUriTemplate getURITemplate(UriTemplateType type) {\r
         switch (type) {\r
             case RESOURCE:\r
                 return RESOURCE_URI_TEMPLATE;\r
index 3ef8b688838596a64641ff8bc4adbe568612e27f..4c48e8558f0e2d2abacc635c1ddcd53edfb691e5 100644 (file)
@@ -23,6 +23,7 @@ package org.collectionspace.services.common.test;
 \r
 import java.util.HashMap;\r
 import java.util.Map;\r
+import org.collectionspace.services.common.StoredValuesUriTemplate;\r
 import org.collectionspace.services.common.UriTemplate;\r
 import org.collectionspace.services.common.UriTemplateFactory;\r
 import org.collectionspace.services.common.api.Tools;\r
@@ -35,6 +36,7 @@ public class UriTemplateTest {
 \r
     final static String EXAMPLE_SERVICE_NAME = "examples";\r
     final static String EXAMPLE_CSID = "a87f6616-4146-4c17-a41a-048597cc12aa";\r
+    final static HashMap<String, String> EMPTY_VALUES_MAP = new HashMap<String, String>();\r
     private static final Logger logger = LoggerFactory.getLogger(UriTemplateTest.class);\r
 \r
     private void testBanner(String msg) {\r
@@ -62,6 +64,24 @@ public class UriTemplateTest {
         resourceUriVars.put("identifier", EXAMPLE_CSID);\r
         String uriStr = resourceTemplate.buildUri(resourceUriVars);\r
         Assert.assertFalse(Tools.isBlank(uriStr), "Generated URI string is null or blank.");\r
+        Assert.assertTrue(uriStr.contains(EXAMPLE_SERVICE_NAME), "Generated URI string does not contain expected value: " + EXAMPLE_SERVICE_NAME);\r
+        Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID);\r
+        logger.debug("Generated URI string = " + uriStr);\r
+    }\r
+\r
+    @Test(dependsOnMethods = {"buildResourceUri"})\r
+    public void buildResourceUriWithStoredValues() {\r
+        testBanner("buildResourceUriWithStoredValues");\r
+        StoredValuesUriTemplate storedValuesResourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        Map<String, String> storedValuesMap = new HashMap<String, String>();\r
+        storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME);\r
+        storedValuesResourceTemplate.setStoredValuesMap(storedValuesMap);\r
+        Map<String, String> additionalValues = new HashMap<String, String>();\r
+        additionalValues.put("identifier", EXAMPLE_CSID);\r
+        String uriStr = storedValuesResourceTemplate.buildUri(additionalValues);\r
+        Assert.assertFalse(Tools.isBlank(uriStr), "Generated URI string is null or blank.");\r
+        Assert.assertTrue(uriStr.contains(EXAMPLE_SERVICE_NAME), "Generated URI string does not contain expected value: " + EXAMPLE_SERVICE_NAME);\r
+        Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID);\r
         logger.debug("Generated URI string = " + uriStr);\r
     }\r
 \r
@@ -90,4 +110,14 @@ public class UriTemplateTest {
         Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been.");\r
         logger.debug("Generated URI string = " + uriStr);\r
     }\r
+\r
+    @Test(dependsOnMethods = {"buildResourceUri"})\r
+    public void buildResourceUriWithEmptyValuesMap() {\r
+        testBanner("buildResourceUriWithEmptyValuesMap");\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        logger.debug("This is a negative test, and an error message is expected here:");\r
+        String uriStr = resourceTemplate.buildUri(EMPTY_VALUES_MAP);\r
+        Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been.");\r
+        logger.debug("Generated URI string = " + uriStr);\r
+    }\r
 }\r