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(String path, Map<String, String> storedValuesMap) {
super(path);
setStoredValuesMap(storedValuesMap);
}
- public void setStoredValuesMap(Map<String, String> storedValuesMap) {
+ final public void setStoredValuesMap(Map<String, String> storedValuesMap) {
if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
this.storedValuesMap = storedValuesMap;
}
}
/**
- * 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<String, String> additionalValuesMap) {
Map<String, String> allValuesMap = new HashMap<String, String>();
try {
- Map<String,String> storedValuesMap = getStoredValuesMap();
- if (storedValuesMap != null && !storedValuesMap.isEmpty()) {
- allValuesMap.putAll(storedValuesMap);
+ Map<String, String> storedValsMap = getStoredValuesMap();
+ if (storedValsMap != null && !storedValsMap.isEmpty()) {
+ allValuesMap.putAll(storedValsMap);
}
if (additionalValuesMap != null && !additionalValuesMap.isEmpty()) {
allValuesMap.putAll(additionalValuesMap);
/**\r
* UriTemplateFactory.java\r
*\r
- * A factory for building instances of URITemplate classes, based on a provided\r
- * template type.\r
+ * A factory for building instances of subclasses of URITemplate, based on a\r
+ * provided template type.\r
*/\r
public class UriTemplateFactory {\r
\r
- public final static String RESOURCE_TEMPLATE_PATTERN =\r
+ public final static String RESOURCE_PATH_PATTERN =\r
"/{servicename}/{identifier}";\r
// FIXME: Get static strings below (e.g. "items", "contacts") from\r
// already-declared constants elsewhere\r
- public final static String ITEM_TEMPLATE_PATTERN =\r
+ public final static String ITEM_PATH_PATTERN =\r
"/{servicename}/{identifier}/items/{itemIdentifier}";\r
- public final static String CONTACT_TEMPLATE_PATTERN =\r
+ public final static String CONTACT_PATH_PATTERN =\r
"/{servicename}/{identifier}/items/{itemIdentifier}/contacts/{contactIdentifier}";\r
- \r
- private final static StoredValuesUriTemplate RESOURCE_URI_TEMPLATE =\r
- new StoredValuesUriTemplate(RESOURCE_TEMPLATE_PATTERN);\r
- private final static StoredValuesUriTemplate ITEM_URI_TEMPLATE =\r
- new StoredValuesUriTemplate(ITEM_TEMPLATE_PATTERN);\r
- private final static StoredValuesUriTemplate CONTACT_URI_TEMPLATE =\r
- new StoredValuesUriTemplate(CONTACT_TEMPLATE_PATTERN);\r
\r
public static StoredValuesUriTemplate getURITemplate(UriTemplateType type) {\r
+ return new StoredValuesUriTemplate(getUriPathPattern(type));\r
+ }\r
+ \r
+ public static StoredValuesUriTemplate getURITemplate(UriTemplateType type, Map<String,String> storedValuesMap) {\r
+ StoredValuesUriTemplate template = new StoredValuesUriTemplate(getUriPathPattern(type));\r
+ template.setStoredValuesMap(storedValuesMap);\r
+ return template;\r
+ }\r
+\r
+ private static String getUriPathPattern(UriTemplateType type) {\r
switch (type) {\r
case RESOURCE:\r
- return RESOURCE_URI_TEMPLATE;\r
+ return RESOURCE_PATH_PATTERN;\r
\r
case ITEM:\r
- return ITEM_URI_TEMPLATE;\r
+ return ITEM_PATH_PATTERN;\r
\r
case CONTACT:\r
- return CONTACT_URI_TEMPLATE;\r
+ return CONTACT_PATH_PATTERN;\r
\r
default:\r
- return RESOURCE_URI_TEMPLATE;\r
+ return RESOURCE_PATH_PATTERN;\r
}\r
}\r
\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.toString(), "Resource template URI path is null; it was not set successfully.");\r
- Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_TEMPLATE_PATTERN,\r
+ Assert.assertEquals(resourceTemplate.toString(), UriTemplateFactory.RESOURCE_PATH_PATTERN,\r
"Resource template URI path doesn't match expected path.");\r
}\r
\r
@Test(dependsOnMethods = {"buildResourceUri"})\r
public void buildResourceUriWithStoredValues() {\r
testBanner("buildResourceUriWithStoredValues");\r
- StoredValuesUriTemplate storedValuesResourceTemplate = UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE);\r
Map<String, String> storedValuesMap = new HashMap<String, String>();\r
storedValuesMap.put("servicename", EXAMPLE_SERVICE_NAME);\r
- storedValuesResourceTemplate.setStoredValuesMap(storedValuesMap);\r
+ StoredValuesUriTemplate storedValuesResourceTemplate =\r
+ UriTemplateFactory.getURITemplate(UriTemplateFactory.UriTemplateType.RESOURCE, storedValuesMap);\r
Map<String, String> additionalValues = new HashMap<String, String>();\r
additionalValues.put("identifier", EXAMPLE_CSID);\r
String uriStr = storedValuesResourceTemplate.buildUri(additionalValues);\r