]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5271: Revised factory methods to emit URITemplates with and without stored...
authorAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 01:58:32 +0000 (18:58 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 01:58:32 +0000 (18:58 -0700)
services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.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 c42a9b4fd11bafdc798c675f0059a553a7c8edbb..db15d6a9582b76c48f5f9e6876ffcfeb67f619ed 100644 (file)
@@ -43,17 +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);
     }
 
-    public void setStoredValuesMap(Map<String, String> storedValuesMap) {
+    final public void setStoredValuesMap(Map<String, String> storedValuesMap) {
         if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
             this.storedValuesMap = storedValuesMap;
         }
@@ -64,21 +64,22 @@ public class StoredValuesUriTemplate extends UriTemplate {
     }
 
     /**
-     * Builds a URI string from a combination of previously-stored values (such
-     * as static URI path components) and additional values (such as resource
-     * identifiers), both of which will replace variables within the URI
-     * template.
+     * Builds a URI string from a combination of previously-stored values, if
+     * any (such as static URI path components) and additional values, if any
+     * (such as resource identifiers), both of which will replace variables
+     * within the URI template.
      *
-     * @param additionalValuesMap a map of values that will replace variables
-     * within the URI template
+     * @param additionalValuesMap an optional map of values that will replace
+     * variables within the URI template
      * @return a URI string
      */
+    @Override
     public String buildUri(Map<String, String> additionalValuesMap) {
         Map<String, String> allValuesMap = new HashMap<String, String>();
         try {
-            Map<String,String> storedValuesMap = getStoredValuesMap();
-            if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
-                allValuesMap.putAll(storedValuesMap);
+            Map<String, String> storedValsMap = getStoredValuesMap();
+            if (storedValsMap != null && !storedValsMap.isEmpty()) {
+                allValuesMap.putAll(storedValsMap);
             }
             if (additionalValuesMap != null && !additionalValuesMap.isEmpty()) {
                 allValuesMap.putAll(additionalValuesMap);
index 2816b16c45a0d733c518a2ac519ccd3205f33177..e845a52304eff5ae8dfade1c7d8ba8d1b0d4f234 100644 (file)
@@ -27,40 +27,43 @@ import java.util.Map;
 /**\r
  * UriTemplateFactory.java\r
  *\r
- * A factory for building instances of URITemplate classes, based on a provided\r
- * template type.\r
+ * A factory for building instances of subclasses of URITemplate, based on a\r
+ * provided template type.\r
  */\r
 public class UriTemplateFactory {\r
 \r
-    public final static String RESOURCE_TEMPLATE_PATTERN =\r
+    public final static String RESOURCE_PATH_PATTERN =\r
             "/{servicename}/{identifier}";\r
     // FIXME: Get static strings below (e.g. "items", "contacts") from\r
     // already-declared constants elsewhere\r
-    public final static String ITEM_TEMPLATE_PATTERN =\r
+    public final static String ITEM_PATH_PATTERN =\r
             "/{servicename}/{identifier}/items/{itemIdentifier}";\r
-    public final static String CONTACT_TEMPLATE_PATTERN =\r
+    public final static String CONTACT_PATH_PATTERN =\r
             "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}";\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 StoredValuesUriTemplate getURITemplate(UriTemplateType type) {\r
+        return new StoredValuesUriTemplate(getUriPathPattern(type));\r
+    }\r
+    \r
+    public static StoredValuesUriTemplate getURITemplate(UriTemplateType type, Map<String,String> storedValuesMap) {\r
+        StoredValuesUriTemplate template = new StoredValuesUriTemplate(getUriPathPattern(type));\r
+        template.setStoredValuesMap(storedValuesMap);\r
+        return template;\r
+    }\r
+\r
+    private static String getUriPathPattern(UriTemplateType type) {\r
         switch (type) {\r
             case RESOURCE:\r
-                return RESOURCE_URI_TEMPLATE;\r
+                return RESOURCE_PATH_PATTERN;\r
 \r
             case ITEM:\r
-                return ITEM_URI_TEMPLATE;\r
+                return ITEM_PATH_PATTERN;\r
 \r
             case CONTACT:\r
-                return CONTACT_URI_TEMPLATE;\r
+                return CONTACT_PATH_PATTERN;\r
 \r
             default:\r
-                return RESOURCE_URI_TEMPLATE;\r
+                return RESOURCE_PATH_PATTERN;\r
         }\r
     }\r
 \r
index 4c48e8558f0e2d2abacc635c1ddcd53edfb691e5..35eeae82477e31aaf095b965dbfbc094d018cd5d 100644 (file)
@@ -51,7 +51,7 @@ public class UriTemplateTest {
         Assert.assertNotNull(resourceTemplate, "Resource template is null; it was not created successfully.");\r
         logger.debug("Resource template URI path = " + resourceTemplate.toString());\r
         Assert.assertNotNull(resourceTemplate.toString(), "Resource template URI path is null; it was not set successfully.");\r
-        Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_TEMPLATE_PATTERN,\r
+        Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_PATH_PATTERN,\r
                 "Resource template URI path doesn't match expected path.");\r
     }\r
 \r
@@ -72,10 +72,10 @@ public class UriTemplateTest {
     @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
+        StoredValuesUriTemplate storedValuesResourceTemplate =\r
+                UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE, storedValuesMap);\r
         Map<String, String> additionalValues = new HashMap<String, String>();\r
         additionalValues.put("identifier", EXAMPLE_CSID);\r
         String uriStr = storedValuesResourceTemplate.buildUri(additionalValues);\r