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"),