From 5d1fc7436786aaaaf48af4f77d335b51b5f1932d Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Tue, 30 Sep 2014 15:21:08 +0000 Subject: [PATCH] Further fix for ACE-2932 to allow the UI to post pseudo-qname strings like "Site" or "Tag". Without this fix, strings with no leading "{}" are rejected as not being recognised as QNames. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@86035 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/web/scripts/facet/FacetQNameUtils.java | 10 +++++++++- .../repo/web/scripts/facet/FacetQNameUtilsTest.java | 9 ++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java b/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java index a00ba23cb6..c39da5d7f8 100644 --- a/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java +++ b/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java @@ -24,7 +24,8 @@ import org.alfresco.service.namespace.QName; /** * This class provides some simple utility methods for dealing with {@link QName QNames} - * within the faceted search feature. + * within the faceted search feature. The whole thing should be considered a hack to handle 'special cases'. + *

* These are not intended for general use, or else they'd be in the {@link QName} class. * @since 5.0 */ @@ -58,6 +59,13 @@ public abstract class FacetQNameUtils // Assume it's a short-form qname. result = QName.createQName(s, resolver); } + else if (!s.contains(Character.toString(QName.NAMESPACE_BEGIN)) && + !s.contains(Character.toString(QName.NAMESPACE_END)) && + !s.contains(Character.toString(QName.NAMESPACE_PREFIX))) + { + // No '{', '}' or ':' means it's a prefixless QName (SITE or TAG, in our case). + result = QName.createQName(null, s); + } else { // We're not sure what sort of qname this is supposed to be. diff --git a/source/test-java/org/alfresco/repo/web/scripts/facet/FacetQNameUtilsTest.java b/source/test-java/org/alfresco/repo/web/scripts/facet/FacetQNameUtilsTest.java index 026879bd16..9f62827167 100644 --- a/source/test-java/org/alfresco/repo/web/scripts/facet/FacetQNameUtilsTest.java +++ b/source/test-java/org/alfresco/repo/web/scripts/facet/FacetQNameUtilsTest.java @@ -74,7 +74,14 @@ public class FacetQNameUtilsTest FacetQNameUtils.createQName("{http://www.alfresco.org/model/foo/1.0}localName", resolver)); } - // Note: it doesn't really make sense to have a short-form qname with no prefix. + @Test public void canCreateFromShortFormWithNoPrefix() throws Exception + { + // The sensibleness of this from an Alfresco perspective is questionable. + // But this is what we must do to support 'QName' strings like "Site" or "Tag" in the REST API. + assertEquals(QName.createQName(null, "localName"), + FacetQNameUtils.createQName("localName", resolver)); + } + @Test public void canCreateFromLongFormWithNoPrefix() throws Exception { assertEquals(QName.createQName(null, "localName"),