From: Aron Roberts Date: Thu, 22 Aug 2013 00:16:58 +0000 (-0700) Subject: CSPACE-6130: Always emit non-preferred terms in authority item list results in a... X-Git-Url: https://git.aero2k.de/?a=commitdiff_plain;h=2c7317d479adec52f64721e559b784870d8508bb;p=tmp%2Fjakarta-migration.git CSPACE-6130: Always emit non-preferred terms in authority item list results in a standard way, ignoring any instances where the termDisplayName field may be configured as a ListResultsField in services/tenant bindings. --- diff --git a/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java b/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java index 3090b6b6f..bca58a84c 100644 --- a/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java +++ b/services/authority/service/src/main/java/org/collectionspace/services/common/vocabulary/nuxeo/AuthorityItemDocumentModelHandler.java @@ -258,14 +258,14 @@ public abstract class AuthorityItemDocumentModelHandler // Ensure that each item in a list of Authority items includes // a set of common fields, so we do not depend upon configuration // for general logic. - boolean hasDisplayName = false; - boolean hasShortId = false; + int termDisplayNamePosInList = 0; + boolean hasShortId = false; boolean hasTermStatus = false; for (int i = 0; i < nFields; i++) { ListResultField field = list.get(i); String elName = field.getElement(); if (isTermDisplayName(elName) == true) { - hasDisplayName = true; + termDisplayNamePosInList = i; } else if (AuthorityItemJAXBSchema.SHORT_IDENTIFIER.equals(elName)) { hasShortId = true; } else if (AuthorityItemJAXBSchema.TERM_STATUS.equals(elName)) { @@ -274,10 +274,16 @@ public abstract class AuthorityItemDocumentModelHandler } ListResultField field; - if (!hasDisplayName) { - field = getListResultsDisplayNameField(); - list.add(field); - } + // Ignore (throw out) any supplied configuration of how + // the termDisplayName will be emitted in list results + if (termDisplayNamePosInList > 0) { + list.remove(termDisplayNamePosInList); + } + // Specially handle termDisplayName values in authority + // item lists, by invoking code that emits display names + // for both preferred and non-preferred terms + field = getListResultsDisplayNameField(); + list.add(field); if (!hasShortId) { field = new ListResultField(); field.setElement(AuthorityItemJAXBSchema.SHORT_IDENTIFIER);