From a8c01f4f9b223bf05672b0c9eac70a662656e9f1 Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Thu, 7 Jun 2012 18:58:32 -0700 Subject: [PATCH] CSPACE-5271: Revised factory methods to emit URITemplates with and without stored values. --- .../common/StoredValuesUriTemplate.java | 25 ++++++------- .../services/common/UriTemplateFactory.java | 35 ++++++++++--------- .../services/common/test/UriTemplateTest.java | 6 ++-- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.java b/services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.java index c42a9b4fd..db15d6a95 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.java +++ b/services/common/src/main/java/org/collectionspace/services/common/StoredValuesUriTemplate.java @@ -43,17 +43,17 @@ public class StoredValuesUriTemplate extends UriTemplate { private static final Logger logger = LoggerFactory.getLogger(StoredValuesUriTemplate.class); private Map storedValuesMap = new HashMap(); - + public StoredValuesUriTemplate(String path) { super(path); } - + public StoredValuesUriTemplate(String path, Map storedValuesMap) { super(path); setStoredValuesMap(storedValuesMap); } - public void setStoredValuesMap(Map storedValuesMap) { + final public void setStoredValuesMap(Map 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 additionalValuesMap) { Map allValuesMap = new HashMap(); try { - Map storedValuesMap = getStoredValuesMap(); - if (storedValuesMap != null && !storedValuesMap.isEmpty()) { - allValuesMap.putAll(storedValuesMap); + Map storedValsMap = getStoredValuesMap(); + if (storedValsMap != null && !storedValsMap.isEmpty()) { + allValuesMap.putAll(storedValsMap); } if (additionalValuesMap != null && !additionalValuesMap.isEmpty()) { allValuesMap.putAll(additionalValuesMap); 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 2816b16c4..e845a5230 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 @@ -27,40 +27,43 @@ import java.util.Map; /** * UriTemplateFactory.java * - * A factory for building instances of URITemplate classes, based on a provided - * template type. + * A factory for building instances of subclasses of URITemplate, based on a + * provided template type. */ public class UriTemplateFactory { - public final static String RESOURCE_TEMPLATE_PATTERN = + public final static String RESOURCE_PATH_PATTERN = "/{servicename}/{identifier}"; // FIXME: Get static strings below (e.g. "items", "contacts") from // already-declared constants elsewhere - public final static String ITEM_TEMPLATE_PATTERN = + public final static String ITEM_PATH_PATTERN = "/{servicename}/{identifier}/items/{itemIdentifier}"; - public final static String CONTACT_TEMPLATE_PATTERN = + public final static String CONTACT_PATH_PATTERN = "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}"; - - private final static StoredValuesUriTemplate RESOURCE_URI_TEMPLATE = - new StoredValuesUriTemplate(RESOURCE_TEMPLATE_PATTERN); - private final static StoredValuesUriTemplate ITEM_URI_TEMPLATE = - new StoredValuesUriTemplate(ITEM_TEMPLATE_PATTERN); - private final static StoredValuesUriTemplate CONTACT_URI_TEMPLATE = - new StoredValuesUriTemplate(CONTACT_TEMPLATE_PATTERN); 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; + } + + private static String getUriPathPattern(UriTemplateType type) { switch (type) { case RESOURCE: - return RESOURCE_URI_TEMPLATE; + return RESOURCE_PATH_PATTERN; case ITEM: - return ITEM_URI_TEMPLATE; + return ITEM_PATH_PATTERN; case CONTACT: - return CONTACT_URI_TEMPLATE; + return CONTACT_PATH_PATTERN; default: - return RESOURCE_URI_TEMPLATE; + return RESOURCE_PATH_PATTERN; } } 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 4c48e8558..35eeae824 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 @@ -51,7 +51,7 @@ public class UriTemplateTest { Assert.assertNotNull(resourceTemplate, "Resource template is null; it was not created successfully."); logger.debug("Resource template URI path = " + resourceTemplate.toString()); Assert.assertNotNull(resourceTemplate.toString(), "Resource template URI path is null; it was not set successfully."); - Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_TEMPLATE_PATTERN, + Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_PATH_PATTERN, "Resource template URI path doesn't match expected path."); } @@ -72,10 +72,10 @@ public class UriTemplateTest { @Test(dependsOnMethods = {"buildResourceUri"}) public void buildResourceUriWithStoredValues() { testBanner("buildResourceUriWithStoredValues"); - StoredValuesUriTemplate storedValuesResourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE); Map storedValuesMap = new HashMap(); storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME); - storedValuesResourceTemplate.setStoredValuesMap(storedValuesMap); + StoredValuesUriTemplate storedValuesResourceTemplate = + UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE, storedValuesMap); Map additionalValues = new HashMap(); additionalValues.put("identifier", EXAMPLE_CSID); String uriStr = storedValuesResourceTemplate.buildUri(additionalValues); -- 2.47.3