diff --git a/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java b/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java deleted file mode 100644 index c39da5d7f8..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facet/FacetQNameUtils.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2005-2014 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ - -package org.alfresco.repo.web.scripts.facet; - -import org.alfresco.service.namespace.NamespacePrefixResolver; -import org.alfresco.service.namespace.QName; - -/** - * This class provides some simple utility methods for dealing with {@link QName QNames} - * 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 - */ -public abstract class FacetQNameUtils -{ - /** - * This method converts the supplied qname string into a {@link QName} object. - * It accepts both short and long form qname strings. - * - * @param s a qname string, such as "cm:name" or "{http://www.alfresco.org/model/content/1.0}name" - * @param resolver this is needed to convert any qname prefixes into their long form. - * @return the QName instance. - * @throws NullPointerException if the provided string is {@code null}. - * @throws IllegalArgumentException if the provided string could not be recognised as a valid QName. - */ - public static QName createQName(String s, NamespacePrefixResolver resolver) - { - final QName result; - - if (s.length() < 2) { throw new IllegalArgumentException("Cannot convert string '" + s + "'"); } - - if (s.charAt(0) == QName.NAMESPACE_BEGIN && - s.substring(1).contains(Character.toString(QName.NAMESPACE_END))) - { - // Assume it's a long-form qname. - result = QName.createQName(s); - } - else if ( !s.contains(Character.toString(QName.NAMESPACE_BEGIN)) && - s.contains(Character.toString(QName.NAMESPACE_PREFIX))) - { - // 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. - throw new IllegalArgumentException("Cannot convert string '" + s + "'"); - } - - return result; - } -} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPost.java b/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPost.java index c5283343b0..8ee9c1580f 100644 --- a/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPost.java +++ b/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPost.java @@ -25,6 +25,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import org.alfresco.repo.search.impl.solr.facet.FacetQNameUtils; import org.alfresco.repo.search.impl.solr.facet.SolrFacetProperties; import org.alfresco.repo.search.impl.solr.facet.SolrFacetProperties.CustomProperties; import org.alfresco.service.namespace.QName; diff --git a/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPut.java b/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPut.java index 08291915a3..ce588eda8f 100644 --- a/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPut.java +++ b/source/java/org/alfresco/repo/web/scripts/facet/SolrFacetConfigAdminPut.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Set; import org.alfresco.repo.search.impl.solr.facet.Exceptions.UnrecognisedFacetId; +import org.alfresco.repo.search.impl.solr.facet.FacetQNameUtils; import org.alfresco.repo.search.impl.solr.facet.SolrFacetProperties.CustomProperties; import org.alfresco.repo.search.impl.solr.facet.SolrFacetProperties; import org.alfresco.service.namespace.QName; 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 deleted file mode 100644 index 9f62827167..0000000000 --- a/source/test-java/org/alfresco/repo/web/scripts/facet/FacetQNameUtilsTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2005-2014 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ - -package org.alfresco.repo.web.scripts.facet; - -import static org.junit.Assert.assertEquals; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import org.alfresco.service.namespace.NamespaceException; -import org.alfresco.service.namespace.NamespacePrefixResolver; -import org.alfresco.service.namespace.QName; -import org.junit.Test; - -/** - * Unit tests for {@link FacetQNameUtils}. - * @since 5.0 - */ -public class FacetQNameUtilsTest -{ - /** A test-only namespace resolver. */ - private final NamespacePrefixResolver resolver = new NamespacePrefixResolver() - { - private final List uris = Arrays.asList(new String[] { "http://www.alfresco.org/model/foo/1.0" }); - private final List prefixes = Arrays.asList(new String[] { "foo" }); - - @Override public Collection getURIs() { return this.uris; } - @Override public Collection getPrefixes() { return this.prefixes; } - - @Override public Collection getPrefixes(String namespaceURI) throws NamespaceException - { - if (uris.contains(namespaceURI)) - { return prefixes; } - else - { throw new NamespaceException("Unrecognised namespace: " + namespaceURI); } - } - - @Override public String getNamespaceURI(String prefix) throws NamespaceException - { - if (prefixes.contains(prefix)) - { return "http://www.alfresco.org/model/foo/1.0"; } - else - { throw new NamespaceException("Unrecognised prefix: " + prefix); } - } - }; - - @Test public void canCreateFromShortForm() throws Exception - { - assertEquals(QName.createQName("http://www.alfresco.org/model/foo/1.0", "localName"), - FacetQNameUtils.createQName("foo:localName", resolver)); - } - - @Test public void canCreateFromLongForm() throws Exception - { - assertEquals(QName.createQName("http://www.alfresco.org/model/foo/1.0", "localName"), - FacetQNameUtils.createQName("{http://www.alfresco.org/model/foo/1.0}localName", resolver)); - } - - @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"), - FacetQNameUtils.createQName("{}localName", resolver)); - } - - @Test public void canCreateLongFormQnameWithUnrecognisedUri() throws Exception - { - // Intentionally no validation of URIs against dictionary. - assertEquals(QName.createQName("http://www.alfresco.org/model/illegal/1.0", "localName"), - FacetQNameUtils.createQName("{http://www.alfresco.org/model/illegal/1.0}localName", resolver)); - } - - @Test (expected=NamespaceException.class) - public void shortFormQnameWithUnrecognisedPrefixFails() throws Exception - { - FacetQNameUtils.createQName("illegal:localName", resolver); - } -} \ No newline at end of file