From 66984e9f71f8c3b59291f7db8e336281cdfd553e Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Thu, 7 Jun 2012 18:41:22 -0700 Subject: [PATCH] CSPACE-5271: Factory now emits only StoredValueUriTemplate objects; UriTemplate objects are now abstract. --- .../common/StoredValuesUriTemplate.java | 8 +++-- .../services/common/UriTemplate.java | 2 +- .../services/common/UriTemplateFactory.java | 17 ++++++----- .../services/common/test/UriTemplateTest.java | 30 +++++++++++++++++++ 4 files changed, 47 insertions(+), 10 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 dd97ebbf9..c42a9b4fd 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,13 +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); } - private void setStoredValuesMap(Map storedValuesMap) { + public void setStoredValuesMap(Map storedValuesMap) { if (storedValuesMap != null && !storedValuesMap.isEmpty()) { this.storedValuesMap = storedValuesMap; } diff --git a/services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java b/services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java index 5d39d11b8..9cde898f2 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java +++ b/services/common/src/main/java/org/collectionspace/services/common/UriTemplate.java @@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory; * Generates URI strings by combining a URI template with provided values, which * replace variables within the template. */ -public class UriTemplate { +public abstract class UriTemplate { private static final Logger logger = LoggerFactory.getLogger(UriTemplate.class); private UriBuilder builder; 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 945892c6a..2816b16c4 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 @@ -22,6 +22,8 @@ */ package org.collectionspace.services.common; +import java.util.Map; + /** * UriTemplateFactory.java * @@ -38,14 +40,15 @@ public class UriTemplateFactory { "/{servicename}/{identifier}/items/{itemIdentifier}"; public final static String CONTACT_TEMPLATE_PATTERN = "/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}"; - private final static UriTemplate RESOURCE_URI_TEMPLATE = - new UriTemplate(RESOURCE_TEMPLATE_PATTERN); - private final static UriTemplate ITEM_URI_TEMPLATE = - new UriTemplate(ITEM_TEMPLATE_PATTERN); - private final static UriTemplate CONTACT_URI_TEMPLATE = - new UriTemplate(CONTACT_TEMPLATE_PATTERN); + + 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 UriTemplate getURITemplate(UriTemplateType type) { + public static StoredValuesUriTemplate getURITemplate(UriTemplateType type) { switch (type) { case RESOURCE: return RESOURCE_URI_TEMPLATE; 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 3ef8b6888..4c48e8558 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 @@ -23,6 +23,7 @@ package org.collectionspace.services.common.test; import java.util.HashMap; import java.util.Map; +import org.collectionspace.services.common.StoredValuesUriTemplate; import org.collectionspace.services.common.UriTemplate; import org.collectionspace.services.common.UriTemplateFactory; import org.collectionspace.services.common.api.Tools; @@ -35,6 +36,7 @@ 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 static final Logger logger = LoggerFactory.getLogger(UriTemplateTest.class); private void testBanner(String msg) { @@ -62,6 +64,24 @@ public class UriTemplateTest { resourceUriVars.put("identifier", EXAMPLE_CSID); String uriStr = resourceTemplate.buildUri(resourceUriVars); 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"}) + 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); + 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."); + 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); } @@ -90,4 +110,14 @@ public class UriTemplateTest { Assert.assertTrue(Tools.isBlank(uriStr), "Generated URI string was not blank, but should have been."); logger.debug("Generated URI string = " + uriStr); } + + @Test(dependsOnMethods = {"buildResourceUri"}) + public void buildResourceUriWithEmptyValuesMap() { + testBanner("buildResourceUriWithEmptyValuesMap"); + 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); + } } -- 2.47.3