From 4f54b3751d4e411d85a030113e87a1288c602020 Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Thu, 7 Jun 2012 20:09:24 -0700 Subject: [PATCH] CSPACE-5217: Initial placeholder population of uriTemplateRegistry, *not* yet tested. --- .../CollectionSpaceJaxRsApplication.java | 4 +- .../services/common/ResourceBase.java | 22 +++++++++++ .../services/common/UriTemplateFactory.java | 22 ++++++++--- .../services/common/test/UriTemplateTest.java | 37 +++++++++++++++---- 4 files changed, 70 insertions(+), 15 deletions(-) diff --git a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java index 85808b5d7..56eaf47c8 100644 --- a/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java +++ b/services/JaxRsServiceProvider/src/main/java/org/collectionspace/services/jaxrs/CollectionSpaceJaxRsApplication.java @@ -142,7 +142,9 @@ public class CollectionSpaceJaxRsApplication extends Application private void addResourceToMapAndSingletons(ResourceBase resource) { singletons.add(resource); resourceMap.put(resource.getServiceName(), resource); - // uriTemplateRegistry.put(resource.getDocType(), resource.getUriTemplate()); + // FIXME: Accept multiple entries from each resource into the registry. + // See also similar comments in ResourceBase. + uriTemplateRegistry.put(resource.getDocType(), resource.getUriTemplate()); } @Override diff --git a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java index 38f34669a..4df2662b7 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java +++ b/services/common/src/main/java/org/collectionspace/services/common/ResourceBase.java @@ -47,7 +47,9 @@ import org.nuxeo.ecm.core.api.repository.RepositoryInstance; import javax.ws.rs.*; import javax.ws.rs.core.*; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * $LastChangedRevision: $ @@ -377,5 +379,25 @@ public abstract class ResourceBase throws Exception, DocumentNotFoundException { return getDocModelForAuthorityItem(repoSession, RefName.AuthorityItem.parse(refName)); } + + // FIXME: For authority items, we will need to return an array / collection of uriTemplate objects, + // since there are two different doctypes, with associated uriTemplates, to insert into the registry. + // The following is a placeholder to test proof of concept, adding a single item from each resource + // to the registry. + + public String getDocType() { + // FIXME: Proof of concept placeholder + return getServiceName(); + } + + + public StoredValuesUriTemplate getUriTemplate() { + Map storedValuesMap = new HashMap(); + storedValuesMap.put(UriTemplateFactory.SERVICENAME_VAR, getServiceName()); + StoredValuesUriTemplate template = + UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE, + storedValuesMap); + return template; + } } diff --git a/services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java b/services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java index e845a5230..d442dbf56 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java +++ b/services/common/src/main/java/org/collectionspace/services/common/UriTemplateFactory.java @@ -31,24 +31,34 @@ import java.util.Map; * provided template type. */ public class UriTemplateFactory { + + public final static String SERVICENAME_VAR = "servicename"; + public final static String IDENTIFIER_VAR = "identifier"; + public final static String ITEM_IDENTIFIER_VAR = "itemIdentifier"; + public final static String CONTACT_IDENTIFIER_VAR = "contactIdentifier"; public final static String RESOURCE_PATH_PATTERN = - "/{servicename}/{identifier}"; + "/ +" + + "{" + SERVICENAME_VAR + "}" + + "/" + + "{" + IDENTIFIER_VAR + "}"; // FIXME: Get static strings below (e.g. "items", "contacts") from // already-declared constants elsewhere public final static String ITEM_PATH_PATTERN = - "/{servicename}/{identifier}/items/{itemIdentifier}"; + RESOURCE_PATH_PATTERN + + "/items/" + + "{" + ITEM_IDENTIFIER_VAR + "}"; public final static String CONTACT_PATH_PATTERN = - "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}"; + ITEM_PATH_PATTERN + + "/contacts/" + + "{" + CONTACT_IDENTIFIER_VAR + "}"; public static StoredValuesUriTemplate getURITemplate(UriTemplateType type) { return new StoredValuesUriTemplate(getUriPathPattern(type)); } public static StoredValuesUriTemplate getURITemplate(UriTemplateType type, Map storedValuesMap) { - StoredValuesUriTemplate template = new StoredValuesUriTemplate(getUriPathPattern(type)); - template.setStoredValuesMap(storedValuesMap); - return template; + return new StoredValuesUriTemplate(getUriPathPattern(type), storedValuesMap); } private static String getUriPathPattern(UriTemplateType type) { diff --git a/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java b/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java index 35eeae824..11ec7ce96 100644 --- a/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java +++ b/services/common/src/test/java/org/collectionspace/services/common/test/UriTemplateTest.java @@ -34,9 +34,10 @@ import org.testng.annotations.Test; public class UriTemplateTest { - final static String EXAMPLE_SERVICE_NAME = "examples"; - final static String EXAMPLE_CSID = "a87f6616-4146-4c17-a41a-048597cc12aa"; - final static HashMap EMPTY_VALUES_MAP = new HashMap(); + private final static String EXAMPLE_SERVICE_NAME = "examples"; + private final static String EXAMPLE_CSID = "a87f6616-4146-4c17-a41a-048597cc12aa"; + private final static String EXAMPLE_ITEM_CSID = "5d1c2f45-6d02-4376-8852-71893eaf8b1b"; + private final static HashMap EMPTY_VALUES_MAP = new HashMap(); private static final Logger logger = LoggerFactory.getLogger(UriTemplateTest.class); private void testBanner(String msg) { @@ -63,10 +64,10 @@ public class UriTemplateTest { resourceUriVars.put("servicename", EXAMPLE_SERVICE_NAME); resourceUriVars.put("identifier", EXAMPLE_CSID); String uriStr = resourceTemplate.buildUri(resourceUriVars); + logger.debug("Generated URI string = " + uriStr); Assert.assertFalse(Tools.isBlank(uriStr), "Generated URI string is null or blank."); Assert.assertTrue(uriStr.contains(EXAMPLE_SERVICE_NAME), "Generated URI string does not contain expected value: " + EXAMPLE_SERVICE_NAME); Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID); - logger.debug("Generated URI string = " + uriStr); } @Test(dependsOnMethods = {"buildResourceUri"}) @@ -79,11 +80,31 @@ public class UriTemplateTest { Map additionalValues = new HashMap(); additionalValues.put("identifier", EXAMPLE_CSID); String uriStr = storedValuesResourceTemplate.buildUri(additionalValues); - Assert.assertFalse(Tools.isBlank(uriStr), "Generated URI string is null or blank."); + logger.debug("Generated URI string = " + uriStr); + Assert.assertTrue(Tools.notBlank(uriStr), "Generated URI string is null or blank."); Assert.assertTrue(uriStr.contains(EXAMPLE_SERVICE_NAME), "Generated URI string does not contain expected value: " + EXAMPLE_SERVICE_NAME); Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID); + } + + @Test(dependsOnMethods = {"buildResourceUri"}) + public void buildItemUri() { + testBanner("buildItemUri"); + Map storedValuesMap = new HashMap(); + storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME); + StoredValuesUriTemplate itemTemplate = + UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.ITEM, storedValuesMap); + Map additionalValues = new HashMap(); + additionalValues.put("identifier", EXAMPLE_CSID); + additionalValues.put("itemIdentifier", EXAMPLE_ITEM_CSID); + String uriStr = itemTemplate.buildUri(additionalValues); logger.debug("Generated URI string = " + uriStr); + Assert.assertTrue(Tools.notBlank(uriStr), "Generated URI string is null or blank."); + Assert.assertTrue(uriStr.contains(EXAMPLE_SERVICE_NAME), "Generated URI string does not contain expected value: " + EXAMPLE_SERVICE_NAME); + Assert.assertTrue(uriStr.contains(EXAMPLE_CSID), "Generated URI string does not contain expected value: " + EXAMPLE_CSID); + Assert.assertTrue(uriStr.contains(EXAMPLE_ITEM_CSID), "Generated URI string does not contain expected item value: " + EXAMPLE_ITEM_CSID); } + + // Negative tests: errors are anticipated and checked for in each of the following tests @Test(dependsOnMethods = {"buildResourceUri"}) public void buildResourceUriWithMissingValue() { @@ -94,8 +115,8 @@ public class UriTemplateTest { // The required 'identifier' value is missing from the Map from which the URI will be built logger.debug("This is a negative test, and an error message is expected here:"); String uriStr = resourceTemplate.buildUri(resourceUriVars); - Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); logger.debug("Generated URI string = " + uriStr); + Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); } @Test(dependsOnMethods = {"buildResourceUri"}) @@ -107,8 +128,8 @@ public class UriTemplateTest { resourceUriVars.put("identifier", null); logger.debug("This is a negative test, and an error message is expected here:"); String uriStr = resourceTemplate.buildUri(resourceUriVars); - Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); logger.debug("Generated URI string = " + uriStr); + Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); } @Test(dependsOnMethods = {"buildResourceUri"}) @@ -117,7 +138,7 @@ public class UriTemplateTest { UriTemplate resourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE); logger.debug("This is a negative test, and an error message is expected here:"); String uriStr = resourceTemplate.buildUri(EMPTY_VALUES_MAP); - Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); logger.debug("Generated URI string = " + uriStr); + Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); } } -- 2.47.3