From 3acf58834afbed5caf0a43d6d1f9099038ff0e14 Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Thu, 16 Aug 2012 20:01:13 -0700 Subject: [PATCH] CSPACE-5271:CSPACE-5453: Handles cases where URI template cannot be retrieved from the URI template registry, or where an unrecognized URI template type is obtained. --- .../vocabulary/RefNameServiceUtils.java | 41 ++++++++++-------- .../services/imports/TemplateExpander.java | 43 +++++++++++-------- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/services/common/src/main/java/org/collectionspace/services/common/vocabulary/RefNameServiceUtils.java b/services/common/src/main/java/org/collectionspace/services/common/vocabulary/RefNameServiceUtils.java index 64ad5f971..e6691991a 100644 --- a/services/common/src/main/java/org/collectionspace/services/common/vocabulary/RefNameServiceUtils.java +++ b/services/common/src/main/java/org/collectionspace/services/common/vocabulary/RefNameServiceUtils.java @@ -577,25 +577,32 @@ public class RefNameServiceUtils { UriTemplateRegistry registry = ServiceMain.getInstance().getUriTemplateRegistry(); UriTemplateRegistryKey key = new UriTemplateRegistryKey(tenantId, docType); StoredValuesUriTemplate template = registry.get(key); - // FIXME: Need to check here for any failure to retrieve a URI Template - // from the registry, given a tenant ID and docType - Map additionalValues = new HashMap(); - if (template.getUriTemplateType() == UriTemplateFactory.ITEM) { - try { - String inAuthorityCsid = (String) docModel.getPropertyValue("inAuthority"); // AuthorityItemJAXBSchema.IN_AUTHORITY - additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, inAuthorityCsid); - additionalValues.put(UriTemplateFactory.ITEM_IDENTIFIER_VAR, csid); + if (template != null) { + Map additionalValues = new HashMap(); + if (template.getUriTemplateType() == UriTemplateFactory.RESOURCE) { + additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, csid); uri = template.buildUri(additionalValues); - } catch (Exception e) { - logger.warn("Could not extract inAuthority property from authority item record: " + e.getMessage()); + } else if (template.getUriTemplateType() == UriTemplateFactory.ITEM) { + try { + String inAuthorityCsid = (String) docModel.getPropertyValue("inAuthority"); // AuthorityItemJAXBSchema.IN_AUTHORITY + additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, inAuthorityCsid); + additionalValues.put(UriTemplateFactory.ITEM_IDENTIFIER_VAR, csid); + uri = template.buildUri(additionalValues); + } catch (Exception e) { + logger.warn("Could not extract inAuthority property from authority item record: " + e.getMessage()); + } + } else if (template.getUriTemplateType() == UriTemplateFactory.CONTACT) { + // FIXME: Generating contact sub-resource URIs requires additional work, + // as a follow-on to CSPACE-5271 - ADR 2012-08-16 + // Sets the default (empty string) value for uri, for now + } else { + logger.warn("Unrecognized URI template type = " + template.getUriTemplateType()); + // Sets the default (empty string) value for uri } - // FIXME: Generating contact sub-resource URIs requires additional work, - // beyond CSPACE-5271 - ADR 2012-08-16 - } else if (template.getUriTemplateType() == UriTemplateFactory.CONTACT) { - // Return the default (empty string) value for URI, for now. - } else { - additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, csid); - uri = template.buildUri(additionalValues); + } else { // (if template == null) + logger.warn("Could not retrieve URI template from registry via tenant ID " + + tenantId + " and docType " + docType); + // Sets the default (empty string) value for uri } ilistItem.setUri(uri); try { diff --git a/services/imports/service/src/main/java/org/collectionspace/services/imports/TemplateExpander.java b/services/imports/service/src/main/java/org/collectionspace/services/imports/TemplateExpander.java index cb661e036..bbf13fe53 100644 --- a/services/imports/service/src/main/java/org/collectionspace/services/imports/TemplateExpander.java +++ b/services/imports/service/src/main/java/org/collectionspace/services/imports/TemplateExpander.java @@ -215,26 +215,33 @@ public class TemplateExpander { UriTemplateRegistry registry = ServiceMain.getInstance().getUriTemplateRegistry(); UriTemplateRegistryKey key = new UriTemplateRegistryKey(tenantId, docType); StoredValuesUriTemplate template = registry.get(key); - // FIXME: Need to check here for any failure to retrieve a URI Template - // from the registry, given a tenant ID and docType - Map additionalValues = new HashMap(); - if (template.getUriTemplateType() == UriTemplateFactory.ITEM) { - try { - String inAuthorityCsid = getInAuthorityValue(partTmpl); - additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, inAuthorityCsid); - additionalValues.put(UriTemplateFactory.ITEM_IDENTIFIER_VAR, docID); + if (template != null) { + Map additionalValues = new HashMap(); + if (template.getUriTemplateType() == UriTemplateFactory.RESOURCE) { + additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, docID); uri = template.buildUri(additionalValues); - - } catch (Exception e) { - logger.warn("Could not extract inAuthority property from authority item record: " + e.getMessage()); + } else if (template.getUriTemplateType() == UriTemplateFactory.ITEM) { + try { + String inAuthorityCsid = getInAuthorityValue(partTmpl); + additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, inAuthorityCsid); + additionalValues.put(UriTemplateFactory.ITEM_IDENTIFIER_VAR, docID); + uri = template.buildUri(additionalValues); + } catch (Exception e) { + logger.warn("Could not extract inAuthority property from authority item record: " + e.getMessage()); + // Returns the default (empty string) value for uri + } + } else if (template.getUriTemplateType() == UriTemplateFactory.CONTACT) { + // FIXME: Generating contact sub-resource URIs requires additional work, + // as a follow-on to CSPACE-5271 - ADR 2012-08-16 + // Returns the default (empty string) value for uri, for now + } else { + logger.warn("Unrecognized URI template type = " + template.getUriTemplateType()); + // Returns the default (empty string) value for uri } - // FIXME: Generating contact sub-resource URIs requires additional work, - // beyond CSPACE-5271 - ADR 2012-08-16 - } else if (template.getUriTemplateType() == UriTemplateFactory.CONTACT) { - return uri; - } else { - additionalValues.put(UriTemplateFactory.IDENTIFIER_VAR, docID); - uri = template.buildUri(additionalValues); + } else { // (if template == null) + logger.warn("Could not retrieve URI template from registry via tenant ID " + + tenantId + " and docType " + docType); + // Returns the default (empty string) value for uri } return uri; } -- 2.47.3