]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5271: Store type in UriTemplates. Establish initial pattern for returning...
authorAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 18:45:10 +0000 (11:45 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 18:45:10 +0000 (11:45 -0700)
services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java
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 882f86ba9eb6fc62daf282115815ee73cb14a548..8ba0c0cf65d8bae061a7a2a63d2a91c1ec02409c 100644 (file)
@@ -396,11 +396,25 @@ public abstract class ResourceBase
     // As generally mentioned by Patrick, we will want to cache generated values, and\r
     // only generate one time if the cached value has not yet been populated. \r
 \r
-    public StoredValuesUriTemplate getUriTemplate() {\r
+    public Map<String,StoredValuesUriTemplate> getUriTemplateMap() {\r
+        Map<String,StoredValuesUriTemplate> uriTemplateMap = new HashMap<String,StoredValuesUriTemplate>();\r
+        String docType = getDocType();\r
+        StoredValuesUriTemplate resourceUriTemplate = getResourceUriTemplate();\r
+        if (docType == null) {\r
+            return uriTemplateMap; // return an empty map\r
+        }\r
+        if (resourceUriTemplate == null) {\r
+            return uriTemplateMap; // return an empty map\r
+        }\r
+        uriTemplateMap.put(docType, resourceUriTemplate);\r
+        return uriTemplateMap;\r
+    }\r
+    \r
+    private StoredValuesUriTemplate getResourceUriTemplate() {\r
         Map<String,String> storedValuesMap = new HashMap<String,String>();\r
         storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, getServiceName());\r
         StoredValuesUriTemplate template =\r
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE,\r
+                UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE,\r
                 storedValuesMap);\r
         return template;\r
     }\r
index db15d6a9582b76c48f5f9e6876ffcfeb67f619ed..47efe1f75adb567caebc1bbdbc1d2ae371a0c6b5 100644 (file)
@@ -24,6 +24,7 @@ package org.collectionspace.services.common;
 
 import java.util.HashMap;
 import java.util.Map;
+import org.collectionspace.services.common.UriTemplateFactory.UriTemplateType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -44,12 +45,12 @@ 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(UriTemplateType type, String path) {
+        super(type, path);
     }
 
-    public StoredValuesUriTemplate(String path, Map<String, String> storedValuesMap) {
-        super(path);
+    public StoredValuesUriTemplate(UriTemplateType type, String path, Map<String, String> storedValuesMap) {
+        super(type, path);
         setStoredValuesMap(storedValuesMap);
     }
 
index 9cde898f20f2154291becd53e7261dd9dc0613fd..30e265a979bbcb95fc5c8e36c323c5b38f1989a7 100644 (file)
@@ -27,6 +27,7 @@ import java.util.Map;
 import javax.ws.rs.core.UriBuilder;\r
 import javax.ws.rs.core.UriBuilderException;\r
 import org.collectionspace.services.common.api.Tools;\r
+import org.collectionspace.services.common.UriTemplateFactory.UriTemplateType;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
@@ -39,14 +40,27 @@ import org.slf4j.LoggerFactory;
 public abstract class UriTemplate {\r
 \r
     private static final Logger logger = LoggerFactory.getLogger(UriTemplate.class);\r
-    private UriBuilder builder;\r
-    private String uriPath;\r
+    private UriTemplateType uriTemplateType = null;\r
+    private String uriPath = "";\r
+    private UriBuilder builder = null;\r
     private final static String EMPTY_STRING = "";\r
 \r
-    public UriTemplate(String path) {\r
+\r
+    public UriTemplate(UriTemplateType type, String path) {\r
+        setUriTemplateType(type);\r
         setUriPath(path);\r
         setBuilder();\r
     }\r
+    \r
+    private void setUriTemplateType(UriTemplateType type) {\r
+        if (type != null) {\r
+            this.uriTemplateType = type;\r
+        }\r
+    }\r
+\r
+    public UriTemplateType getUriTemplateType() {\r
+        return this.uriTemplateType;\r
+    }\r
 \r
     private void setUriPath(String path) {\r
         if (Tools.notBlank(path)) {\r
@@ -55,7 +69,7 @@ public abstract class UriTemplate {
     }\r
 \r
     private String getUriPath() {\r
-        return uriPath;\r
+        return this.uriPath;\r
     }\r
 \r
     private void setBuilder() {\r
index d442dbf5637dacec0bac153c0432f0919b1e7fa2..75755816197e6448d2e238d40878232d5da084f7 100644 (file)
@@ -32,13 +32,24 @@ import java.util.Map;
  */\r
 public class UriTemplateFactory {\r
     \r
+    // For coding convenience, each item in the enum is also available as a field\r
+    // in the enclosing class.\r
+    public final static UriTemplateType RESOURCE = UriTemplateType.RESOURCE;\r
+    public final static UriTemplateType ITEM = UriTemplateType.ITEM;\r
+    public final static UriTemplateType CONTACT = UriTemplateType.CONTACT;\r
+\r
+    public enum UriTemplateType {\r
+\r
+        RESOURCE, ITEM, CONTACT\r
+    };\r
+    \r
     public final static String SERVICENAME_VAR = "servicename";\r
     public final static String IDENTIFIER_VAR = "identifier";\r
     public final static String ITEM_IDENTIFIER_VAR = "itemIdentifier";\r
     public final static String CONTACT_IDENTIFIER_VAR = "contactIdentifier";\r
 \r
     public final static String RESOURCE_PATH_PATTERN =\r
-            "/ +"\r
+            "/"\r
             + "{" + SERVICENAME_VAR + "}"\r
             + "/"\r
             + "{" + IDENTIFIER_VAR + "}";\r
@@ -54,11 +65,11 @@ public class UriTemplateFactory {
             + "{" + CONTACT_IDENTIFIER_VAR + "}";\r
 \r
     public static StoredValuesUriTemplate getURITemplate(UriTemplateType type) {\r
-        return new StoredValuesUriTemplate(getUriPathPattern(type));\r
+        return new StoredValuesUriTemplate(type, getUriPathPattern(type));\r
     }\r
     \r
     public static StoredValuesUriTemplate getURITemplate(UriTemplateType type, Map<String,String> storedValuesMap) {\r
-        return new StoredValuesUriTemplate(getUriPathPattern(type), storedValuesMap);\r
+        return new StoredValuesUriTemplate(type, getUriPathPattern(type), storedValuesMap);\r
     }\r
 \r
     private static String getUriPathPattern(UriTemplateType type) {\r
@@ -77,8 +88,4 @@ public class UriTemplateFactory {
         }\r
     }\r
 \r
-    public enum UriTemplateType {\r
-\r
-        RESOURCE, ITEM, CONTACT\r
-    };\r
 }
\ No newline at end of file
index 11ec7ce9685d01e3cd01f9c9d4184ccb301b4857..be6796c680ee3803a7371f4ca00ade945fe64363 100644 (file)
@@ -40,6 +40,7 @@ public class UriTemplateTest {
     private final static HashMap<String, String> EMPTY_VALUES_MAP = new HashMap<String, String>();\r
     private static final Logger logger = LoggerFactory.getLogger(UriTemplateTest.class);\r
 \r
+\r
     private void testBanner(String msg) {\r
         String BANNER = "-------------------------------------------------------";\r
         logger.debug("\r" + BANNER + "\r\n" + this.getClass().getName() + "\r\n" + msg + "\r\n" + BANNER);\r
@@ -48,21 +49,26 @@ public class UriTemplateTest {
     @Test\r
     public void createResourceUriTemplate() {\r
         testBanner("createResourceUriTemplate");\r
-        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE);\r
         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.getUriTemplateType(), "Resource template type is null; it was not set successfully.");\r
+        Assert.assertEquals(resourceTemplate.getUriTemplateType(), UriTemplateFactory.RESOURCE,\r
+                "Resource template type + " + resourceTemplate.getUriTemplateType()\r
+                + " doesn't match expected type: " + UriTemplateFactory.RESOURCE);\r
         Assert.assertNotNull(resourceTemplate.toString(), "Resource template URI path is null; it was not set successfully.");\r
         Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_PATH_PATTERN,\r
-                "Resource template URI path doesn't match expected path.");\r
+                "Resource template URI path " + resourceTemplate.toString()\r
+                + " doesn't match expected path: " + UriTemplateFactory.RESOURCE_PATH_PATTERN);\r
     }\r
 \r
     @Test(dependsOnMethods = {"createResourceUriTemplate"})\r
     public void buildResourceUri() {\r
         testBanner("buildResourceUri");\r
-        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE);\r
         Map<String, String> resourceUriVars = new HashMap<String, String>();\r
-        resourceUriVars.put("servicename", EXAMPLE_SERVICE_NAME);\r
-        resourceUriVars.put("identifier", EXAMPLE_CSID);\r
+        resourceUriVars.put(UriTemplateFactory.SERVICENAME_VAR, EXAMPLE_SERVICE_NAME);\r
+        resourceUriVars.put(UriTemplateFactory.IDENTIFIER_VAR, EXAMPLE_CSID);\r
         String uriStr = resourceTemplate.buildUri(resourceUriVars);\r
         logger.debug("Generated URI string = " + uriStr);\r
         Assert.assertFalse(Tools.isBlank(uriStr), "Generated URI string is null or blank.");\r
@@ -74,11 +80,11 @@ public class UriTemplateTest {
     public void buildResourceUriWithStoredValues() {\r
         testBanner("buildResourceUriWithStoredValues");\r
         Map<String, String> storedValuesMap = new HashMap<String, String>();\r
-        storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME);\r
+        storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, EXAMPLE_SERVICE_NAME);\r
         StoredValuesUriTemplate storedValuesResourceTemplate =\r
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE, storedValuesMap);\r
+                UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE, storedValuesMap);\r
         Map<String, String> additionalValues = new HashMap<String, String>();\r
-        additionalValues.put("identifier", EXAMPLE_CSID);\r
+        additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, EXAMPLE_CSID);\r
         String uriStr = storedValuesResourceTemplate.buildUri(additionalValues);\r
         logger.debug("Generated URI string = " + uriStr);\r
         Assert.assertTrue(Tools.notBlank(uriStr), "Generated URI string is null or blank.");\r
@@ -86,16 +92,16 @@ public class UriTemplateTest {
         Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID);\r
     }\r
 \r
-    @Test(dependsOnMethods = {"buildResourceUri"})\r
+    @Test(dependsOnMethods = {"buildResourceUriWithStoredValues"})\r
     public void buildItemUri() {\r
         testBanner("buildItemUri");\r
         Map<String, String> storedValuesMap = new HashMap<String, String>();\r
-        storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME);\r
+        storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, EXAMPLE_SERVICE_NAME);\r
         StoredValuesUriTemplate itemTemplate =\r
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.ITEM, storedValuesMap);\r
+                UriTemplateFactory.getURITemplate(UriTemplateFactory.ITEM, storedValuesMap);\r
         Map<String, String> additionalValues = new HashMap<String, String>();\r
-        additionalValues.put("identifier", EXAMPLE_CSID);\r
-        additionalValues.put("itemIdentifier", EXAMPLE_ITEM_CSID);\r
+        additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, EXAMPLE_CSID);\r
+        additionalValues.put(UriTemplateFactory.ITEM_IDENTIFIER_VAR, EXAMPLE_ITEM_CSID);\r
         String uriStr = itemTemplate.buildUri(additionalValues);\r
         logger.debug("Generated URI string = " + uriStr);\r
         Assert.assertTrue(Tools.notBlank(uriStr), "Generated URI string is null or blank.");\r
@@ -109,9 +115,9 @@ public class UriTemplateTest {
     @Test(dependsOnMethods = {"buildResourceUri"})\r
     public void buildResourceUriWithMissingValue() {\r
         testBanner("buildResourceUriWithMissingValue");\r
-        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE);\r
         Map<String, String> resourceUriVars = new HashMap<String, String>();\r
-        resourceUriVars.put("servicename", EXAMPLE_SERVICE_NAME);\r
+        resourceUriVars.put(UriTemplateFactory.SERVICENAME_VAR, EXAMPLE_SERVICE_NAME);\r
         // The required 'identifier' value is missing from the Map from which the URI will be built\r
         logger.debug("This is a negative test, and an error message is expected here:");\r
         String uriStr = resourceTemplate.buildUri(resourceUriVars);\r
@@ -122,10 +128,10 @@ public class UriTemplateTest {
     @Test(dependsOnMethods = {"buildResourceUri"})\r
     public void buildResourceUriWithNullValue() {\r
         testBanner("buildResourceUriWithNullValue");\r
-        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE);\r
         Map<String, String> resourceUriVars = new HashMap<String, String>();\r
-        resourceUriVars.put("servicename", EXAMPLE_SERVICE_NAME);\r
-        resourceUriVars.put("identifier", null);\r
+        resourceUriVars.put(UriTemplateFactory.SERVICENAME_VAR, EXAMPLE_SERVICE_NAME);\r
+        resourceUriVars.put(UriTemplateFactory.IDENTIFIER_VAR, null);\r
         logger.debug("This is a negative test, and an error message is expected here:");\r
         String uriStr = resourceTemplate.buildUri(resourceUriVars);\r
         logger.debug("Generated URI string = " + uriStr);\r
@@ -135,7 +141,7 @@ public class UriTemplateTest {
     @Test(dependsOnMethods = {"buildResourceUri"})\r
     public void buildResourceUriWithEmptyValuesMap() {\r
         testBanner("buildResourceUriWithEmptyValuesMap");\r
-        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
+        UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.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
         logger.debug("Generated URI string = " + uriStr);\r