]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-5271: Remove per-resource cacheing of UriTemplateMap; likely would not have...
authorAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 21:15:08 +0000 (14:15 -0700)
committerAron Roberts <aron@socrates.berkeley.edu>
Fri, 8 Jun 2012 21:15:08 +0000 (14:15 -0700)
services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/AuthorityResource.java
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/UriTemplateFactory.java
services/contact/service/src/main/java/org/collectionspace/services/contact/AuthorityResourceWithContacts.java

index f8ca689d5f316d5a056d7e948b09cf1c65db3335..1ebd88a3b07a0973a71db42eca5fd40072219f4c 100644 (file)
@@ -970,9 +970,9 @@ public abstract class AuthorityResource<AuthCommon, AuthItemHandler>
     public Map<String,StoredValuesUriTemplate> getUriTemplateMap() {
         // Get resource URI template from superclass
         Map<String,StoredValuesUriTemplate> uriTemplateMap = super.getUriTemplateMap();
-        // Add item URI template
+        // Add item URI template, and return both templates in the map
         String itemDocType = getItemDocType();
-        StoredValuesUriTemplate itemUriTemplate = getItemUriTemplate();
+        StoredValuesUriTemplate itemUriTemplate = getUriTemplate(UriTemplateFactory.ITEM);
         if (itemDocType == null) {
             return uriTemplateMap; // return map as obtained from superclass
         }
@@ -980,16 +980,7 @@ public abstract class AuthorityResource<AuthCommon, AuthItemHandler>
             return uriTemplateMap; // return map as obtained from superclass
         }
         uriTemplateMap.put(itemDocType, itemUriTemplate);
-        cacheUriTemplateMap(uriTemplateMap);
         return uriTemplateMap;
     }
-    
-    private StoredValuesUriTemplate getItemUriTemplate() {
-        Map<String,String> storedValuesMap = new HashMap<String,String>();
-        storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, getServiceName());
-        StoredValuesUriTemplate template =
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.ITEM,
-                storedValuesMap);
-        return template;
-    }
+  
 }
index 433bc9956aa6869fc7acc018b45fac1cdc5a5b82..578159891a97c4447f727973ab7d522e17817327 100644 (file)
@@ -382,52 +382,33 @@ public abstract class ResourceBase
        return getDocModelForAuthorityItem(repoSession, RefName.AuthorityItem.parse(refName));\r
     }\r
     \r
-    // FIXME: For authority items, we will need to return an array / collection of uriTemplate objects,\r
-    // since there are two different doctypes, with associated uriTemplates, to insert into the registry.\r
-    // (One of those uriTemplates will also need to be of type ITEM, while in AuthorityResourceWithContacts,\r
-    // a third uriTemplate will need to be of type CONCEPT.)\r
-    \r
-    // The following is a placeholder to test proof of concept, adding a single item from each resource\r
-    // to the registry.\r
-    \r
     public String getDocType() {\r
         // FIXME: Proof of concept placeholder\r
         return getServiceName();\r
     }\r
     \r
     public Map<String,StoredValuesUriTemplate> getUriTemplateMap() {\r
-        // Return cached copy of URI template map, if available\r
         Map<String,StoredValuesUriTemplate> uriTemplateMap = new HashMap<String,StoredValuesUriTemplate>();\r
-        if (this.cachedUriTemplateMap != null && !this.cachedUriTemplateMap.isEmpty()) {\r
-            uriTemplateMap.putAll(cachedUriTemplateMap);\r
-            return uriTemplateMap;\r
-        } else {\r
-            // Construct and return a resource URI template as the sole item in the map\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
-            cacheUriTemplateMap(uriTemplateMap);\r
-            return uriTemplateMap;\r
+        // Construct and return a resource URI template as the sole item in the map\r
+        String docType = getDocType();\r
+        StoredValuesUriTemplate resourceUriTemplate = getUriTemplate(UriTemplateFactory.RESOURCE);\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
+    protected StoredValuesUriTemplate getUriTemplate(UriTemplateFactory.UriTemplateType type) {\r
         Map<String,String> storedValuesMap = new HashMap<String,String>();\r
         storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, getServiceName());\r
         StoredValuesUriTemplate template =\r
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.RESOURCE,\r
-                storedValuesMap);\r
+                UriTemplateFactory.getURITemplate(type, storedValuesMap);\r
         return template;\r
     }\r
 \r
-    public void cacheUriTemplateMap(Map<String, StoredValuesUriTemplate> uriTemplateMap) {\r
-            this.cachedUriTemplateMap = uriTemplateMap;\r
-    }\r
 \r
 }\r
index 2769945fae15ad70cf875edaf4b544e3c4d38f5d..60fb2340fb91379c770378f72cdc0ab8dd13244a 100644 (file)
@@ -51,11 +51,17 @@ public class StoredValuesUriTemplate extends UriTemplate {
 
     public StoredValuesUriTemplate(UriTemplateType type, String path, Map<String, String> storedValuesMap) {
         super(type, path);
-        setStoredValuesMap(storedValuesMap);
+        setStoredValues(storedValuesMap);
     }
 
-    // Private access ensures that stored values can only be set via a constructor
-    private void setStoredValuesMap(Map<String, String> storedValuesMap) {
+    public void setStoredValuesMap(Map<String, String> storedValuesMap) {
+        setStoredValues(storedValuesMap);
+    }
+
+    // Called by both constructor and public setter
+    // Avoids having a subclass-overridable call in the constructor
+    // See http://stackoverflow.com/questions/6104262/java-overridable-call-in-constructor#comment7087131_6104273
+    private void setStoredValues(Map<String, String> storedValuesMap) {
         if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
             this.storedValuesMap = storedValuesMap;
         }
index 72dedc4f1212336ab07da373e7cfad0fc8bf7d70..1c270fc1322d369efea67bb6127dd891f9227682 100644 (file)
@@ -23,6 +23,7 @@
 package org.collectionspace.services.common;\r
 \r
 import java.util.Map;\r
+import org.collectionspace.services.client.AuthorityClient;\r
 \r
 /**\r
  * UriTemplateFactory.java\r
@@ -47,21 +48,29 @@ public class UriTemplateFactory {
     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 AUTHORITY_ITEM_PATH_COMPONENT = AuthorityClient.ITEMS;\r
+    // FIXME: Get this currently hard-coded value from an external authoritative source.\r
+    // The only candidate so far identified is ContactClient.SERVICE_PATH_COMPONENT;\r
+    // is this appropriate?\r
+    public final static String CONTACT_PATH_COMPONENT = "contacts";\r
 \r
     public final static String RESOURCE_PATH_PATTERN =\r
             "/"\r
             + "{" + SERVICENAME_VAR + "}"\r
             + "/"\r
             + "{" + IDENTIFIER_VAR + "}";\r
-    // FIXME: Get static strings below (e.g. "items", "contacts") from\r
-    // already-declared constants elsewhere\r
     public final static String ITEM_PATH_PATTERN =\r
             RESOURCE_PATH_PATTERN\r
-            + "/items/"\r
+            + "/"\r
+            + AUTHORITY_ITEM_PATH_COMPONENT\r
+            + "/"\r
             + "{" + ITEM_IDENTIFIER_VAR + "}";\r
     public final static String CONTACT_PATH_PATTERN =\r
             ITEM_PATH_PATTERN\r
-            + "/contacts/"\r
+            + "/"\r
+            + CONTACT_PATH_COMPONENT\r
+            + "/"\r
             + "{" + CONTACT_IDENTIFIER_VAR + "}";\r
 \r
     public static UriTemplate getURITemplate(UriTemplateType type) {\r
index fa381b66c09885d642ad5c2d11f8d3da78cf31ed..38031d16c50b7ea62f2886692e3658fe100b973b 100644 (file)
@@ -39,10 +39,7 @@ import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
-
-import org.collectionspace.services.client.IQueryManager;
-import org.collectionspace.services.client.PoxPayloadIn;
-import org.collectionspace.services.client.PoxPayloadOut;
+import org.collectionspace.services.client.*;
 import org.collectionspace.services.common.StoredValuesUriTemplate;
 import org.collectionspace.services.common.UriTemplateFactory;
 import org.collectionspace.services.common.vocabulary.AuthorityResource;
@@ -308,26 +305,17 @@ public abstract class AuthorityResourceWithContacts<AuthCommon, AuthItemHandler>
     public Map<String,StoredValuesUriTemplate> getUriTemplateMap() {
         // Get resource and item URI templates from superclass
         Map<String,StoredValuesUriTemplate> uriTemplateMap = super.getUriTemplateMap();
-        // Add item URI template
+        // Add contact URI template, and return all three templates in the map
         String contactDocType = getContactDocType();
-        StoredValuesUriTemplate itemUriTemplate = getItemUriTemplate();
+        StoredValuesUriTemplate contactUriTemplate = getUriTemplate(UriTemplateFactory.CONTACT);
         if (contactDocType == null) {
             return uriTemplateMap; // return map as obtained from superclass
         }
-        if (itemUriTemplate == null) {
+        if (contactUriTemplate == null) {
             return uriTemplateMap; // return map as obtained from superclass
         }
-        uriTemplateMap.put(contactDocType, itemUriTemplate);
-        cacheUriTemplateMap(uriTemplateMap);
+        uriTemplateMap.put(contactDocType, contactUriTemplate);
         return uriTemplateMap;
     }
-    
-    private StoredValuesUriTemplate getItemUriTemplate() {
-        Map<String,String> storedValuesMap = new HashMap<String,String>();
-        storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, getServiceName());
-        StoredValuesUriTemplate template =
-                UriTemplateFactory.getURITemplate(UriTemplateFactory.ITEM,
-                storedValuesMap);
-        return template;
-    }
+
 }