Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)

57046: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3)
      56513: Merged HEAD-BUG-FIX to V4.2-BUG-FIX (4.2.1)
         56119: Fixed MNT-9752 (ALF-20165): ShortQNameMethod documentation is not accurate


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61680 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-02-11 18:55:58 +00:00
parent 76f8740cd3
commit b53b0fedc8

View File

@@ -1,4 +1,4 @@
/* /*
* Copyright (C) 2005-2010 Alfresco Software Limited. * Copyright (C) 2005-2010 Alfresco Software Limited.
* *
* This file is part of Alfresco * This file is part of Alfresco
@@ -14,99 +14,99 @@
* GNU Lesser General Public License for more details. * GNU Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public License * You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/ */
package org.alfresco.repo.template; package org.alfresco.repo.template;
import java.util.List; import java.util.List;
import org.alfresco.repo.processor.BaseProcessorExtension; import org.alfresco.repo.processor.BaseProcessorExtension;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.namespace.NamespaceException; import org.alfresco.service.namespace.NamespaceException;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import freemarker.ext.beans.BeanModel; import freemarker.ext.beans.BeanModel;
import freemarker.template.TemplateMethodModelEx; import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException; import freemarker.template.TemplateModelException;
import freemarker.template.TemplateScalarModel; import freemarker.template.TemplateScalarModel;
/** /**
* @author Mike Hatfield * @author Mike Hatfield
* *
* FreeMarker custom method to return the short (prefix) version of a QName. * FreeMarker custom method to return the short (prefix) version of a QName.
* <p> * <p>
* Usage: String shortQname(String longQName) * Usage: String shortQName(String longQName)
*/ */
public final class ShortQNameMethod extends BaseProcessorExtension implements TemplateMethodModelEx public final class ShortQNameMethod extends BaseProcessorExtension implements TemplateMethodModelEx
{ {
private final static String NAMESPACE_BEGIN = "" + QName.NAMESPACE_BEGIN; private final static String NAMESPACE_BEGIN = "" + QName.NAMESPACE_BEGIN;
/* Repository Service Registry */ /* Repository Service Registry */
private ServiceRegistry services; private ServiceRegistry services;
/** /**
* Set the service registry * Set the service registry
* *
* @param serviceRegistry the service registry * @param serviceRegistry the service registry
*/ */
public void setServiceRegistry(ServiceRegistry serviceRegistry) public void setServiceRegistry(ServiceRegistry serviceRegistry)
{ {
this.services = serviceRegistry; this.services = serviceRegistry;
} }
/** /**
* @see freemarker.template.TemplateMethodModel#exec(java.util.List) * @see freemarker.template.TemplateMethodModel#exec(java.util.List)
*/ */
public Object exec(List args) throws TemplateModelException public Object exec(List args) throws TemplateModelException
{ {
String result = null; String result = null;
if (args.size() == 1) if (args.size() == 1)
{ {
// arg 0 can be either wrapped QName object or a String // arg 0 can be either wrapped QName object or a String
String arg0String = null; String arg0String = null;
Object arg0 = args.get(0); Object arg0 = args.get(0);
if (arg0 instanceof BeanModel) if (arg0 instanceof BeanModel)
{ {
arg0String = ((BeanModel)arg0).getWrappedObject().toString(); arg0String = ((BeanModel)arg0).getWrappedObject().toString();
} }
else if (arg0 instanceof TemplateScalarModel) else if (arg0 instanceof TemplateScalarModel)
{ {
arg0String = ((TemplateScalarModel)arg0).getAsString(); arg0String = ((TemplateScalarModel)arg0).getAsString();
} }
try try
{ {
result = createQName(arg0String).toPrefixString(services.getNamespaceService()); result = createQName(arg0String).toPrefixString(services.getNamespaceService());
} }
catch (NamespaceException e) catch (NamespaceException e)
{ {
// not valid qname -> return original value // not valid qname -> return original value
result = arg0String; result = arg0String;
} }
} }
return result != null ? result : ""; return result != null ? result : "";
} }
/** /**
* Helper to create a QName from either a fully qualified or short-name QName string * Helper to create a QName from either a fully qualified or short-name QName string
* *
* @param s Fully qualified or short-name QName string * @param s Fully qualified or short-name QName string
* *
* @return QName * @return QName
*/ */
private QName createQName(String s) private QName createQName(String s)
{ {
QName qname; QName qname;
if (s.indexOf(NAMESPACE_BEGIN) != -1) if (s.indexOf(NAMESPACE_BEGIN) != -1)
{ {
qname = QName.createQName(s); qname = QName.createQName(s);
} }
else else
{ {
qname = QName.createQName(s, this.services.getNamespaceService()); qname = QName.createQName(s, this.services.getNamespaceService());
} }
return qname; return qname;
} }
} }