diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryNamespaceComponent.java b/source/java/org/alfresco/repo/dictionary/DictionaryNamespaceComponent.java index f929e9705f..5b1081e679 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryNamespaceComponent.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryNamespaceComponent.java @@ -36,8 +36,6 @@ import org.alfresco.service.namespace.NamespaceService; */ public class DictionaryNamespaceComponent implements NamespaceService { - - private static final long serialVersionUID = -3774701459465102431L; /** * Namespace DAO */ @@ -109,5 +107,4 @@ public class DictionaryNamespaceComponent implements NamespaceService // TODO: throw new UnsupportedOperationException(); } - } diff --git a/source/java/org/alfresco/repo/dictionary/NamespaceDAO.java b/source/java/org/alfresco/repo/dictionary/NamespaceDAO.java index 505e732e5e..4007123da0 100644 --- a/source/java/org/alfresco/repo/dictionary/NamespaceDAO.java +++ b/source/java/org/alfresco/repo/dictionary/NamespaceDAO.java @@ -36,7 +36,6 @@ import org.alfresco.service.namespace.NamespacePrefixResolver; */ public interface NamespaceDAO extends NamespacePrefixResolver { - /** * Add a namespace URI * diff --git a/source/java/org/alfresco/repo/dictionary/NamespaceDAOImpl.java b/source/java/org/alfresco/repo/dictionary/NamespaceDAOImpl.java index 44bceeb3a0..149c1423b7 100644 --- a/source/java/org/alfresco/repo/dictionary/NamespaceDAOImpl.java +++ b/source/java/org/alfresco/repo/dictionary/NamespaceDAOImpl.java @@ -48,8 +48,6 @@ public class NamespaceDAOImpl implements NamespaceDAO { private static final Log logger = LogFactory.getLog(NamespaceDAOImpl.class); - private static final long serialVersionUID = -1085431310721591548L; - /** * Lock objects */ @@ -63,6 +61,7 @@ public class NamespaceDAOImpl implements NamespaceDAO // Dependencies private TenantService tenantService; + private DictionaryDAO dictionaryDAO; public void setTenantService(TenantService tenantService) @@ -80,9 +79,6 @@ public class NamespaceDAOImpl implements NamespaceDAO this.prefixesCache = prefixesCache; } - - private DictionaryDAO dictionaryDAO; - public void registerDictionary(DictionaryDAO dictionaryDAO) { this.dictionaryDAO = dictionaryDAO; diff --git a/source/java/org/alfresco/repo/jscript/ContentAwareScriptableQNameMap.java b/source/java/org/alfresco/repo/jscript/ContentAwareScriptableQNameMap.java index c7122e59bb..f9aa3ffa81 100644 --- a/source/java/org/alfresco/repo/jscript/ContentAwareScriptableQNameMap.java +++ b/source/java/org/alfresco/repo/jscript/ContentAwareScriptableQNameMap.java @@ -29,6 +29,8 @@ import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.repository.ContentData; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; /** @@ -44,9 +46,21 @@ public class ContentAwareScriptableQNameMap extends ScriptableQNameMap private ServiceRegistry services; private ScriptNode factory; - public ContentAwareScriptableQNameMap(ScriptNode factory, ServiceRegistry services) + + /** + * Constructor + * + * @param factory Factory to provide further ScriptNode objects + * @param services ServiceRegistry + */ + public ContentAwareScriptableQNameMap(final ScriptNode factory, final ServiceRegistry services) { - super(services.getNamespaceService()); + super(new NamespacePrefixResolverProvider(){ + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return services.getNamespaceService(); + } + }); this.services = services; this.factory = factory; } @@ -62,7 +76,7 @@ public class ContentAwareScriptableQNameMap extends ScriptableQNameMap if (value == null) { // convert the key to a qname and look up the data-type for the property - QName qname = QName.resolveToQName(this.resolver, name.toString()); + QName qname = QName.resolveToQName(getResolver(), name.toString()); PropertyDefinition propDef = this.services.getDictionaryService().getProperty(qname); if (propDef != null && DataTypeDefinition.CONTENT.equals(propDef.getDataType().getName())) { diff --git a/source/java/org/alfresco/repo/jscript/ScriptNode.java b/source/java/org/alfresco/repo/jscript/ScriptNode.java index e075161854..a7bd5a5265 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptNode.java +++ b/source/java/org/alfresco/repo/jscript/ScriptNode.java @@ -77,6 +77,8 @@ import org.alfresco.service.cmr.version.VersionHistory; import org.alfresco.service.cmr.version.VersionType; import org.alfresco.service.cmr.workflow.WorkflowInstance; import org.alfresco.service.cmr.workflow.WorkflowService; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; @@ -104,9 +106,9 @@ import org.mozilla.javascript.Wrapper; * * @author Kevin Roast */ -public class ScriptNode implements Serializable, Scopeable +public class ScriptNode implements Serializable, Scopeable, NamespacePrefixResolverProvider { - private static final long serialVersionUID = -3378946227712939600L; + private static final long serialVersionUID = -3378946227712939601L; private static Log logger = LogFactory.getLog(ScriptNode.class); @@ -436,7 +438,7 @@ public class ScriptNode implements Serializable, Scopeable if (this.targetAssocs == null) { // this Map implements the Scriptable interface for native JS syntax property access - this.targetAssocs = new ScriptableQNameMap(this.services.getNamespaceService()); + this.targetAssocs = new ScriptableQNameMap(this); // get the list of target nodes for each association type List refs = this.nodeService.getTargetAssocs(this.nodeRef, RegexQNamePattern.MATCH_ALL); @@ -484,7 +486,7 @@ public class ScriptNode implements Serializable, Scopeable if (this.sourceAssocs == null) { // this Map implements the Scriptable interface for native JS syntax property access - this.sourceAssocs = new ScriptableQNameMap(this.services.getNamespaceService()); + this.sourceAssocs = new ScriptableQNameMap(this); // get the list of source nodes for each association type List refs = this.nodeService.getSourceAssocs(this.nodeRef, RegexQNamePattern.MATCH_ALL); @@ -532,7 +534,7 @@ public class ScriptNode implements Serializable, Scopeable if (this.childAssocs == null) { // this Map implements the Scriptable interface for native JS syntax property access - this.childAssocs = new ScriptableQNameMap(this.services.getNamespaceService()); + this.childAssocs = new ScriptableQNameMap(this); // get the list of child assoc nodes for each association type List refs = this.nodeService.getChildAssocs(nodeRef); @@ -2794,4 +2796,13 @@ public class ScriptNode implements Serializable, Scopeable */ ScriptNode transform(ContentService contentService, NodeRef noderef, ContentReader reader, ContentWriter writer); } + + + /** + * NamespacePrefixResolverProvider getter implementation + */ + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return this.services.getNamespaceService(); + } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/jscript/ScriptableQNameMap.java b/source/java/org/alfresco/repo/jscript/ScriptableQNameMap.java index bcbeeeefa1..941961df34 100644 --- a/source/java/org/alfresco/repo/jscript/ScriptableQNameMap.java +++ b/source/java/org/alfresco/repo/jscript/ScriptableQNameMap.java @@ -25,6 +25,7 @@ package org.alfresco.repo.jscript; import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QNameMap; import org.mozilla.javascript.Scriptable; @@ -36,7 +37,7 @@ public class ScriptableQNameMap extends QNameMap implements Scriptable /** * @param resolver */ - public ScriptableQNameMap(NamespacePrefixResolver resolver) + public ScriptableQNameMap(NamespacePrefixResolverProvider resolver) { super(resolver); } diff --git a/source/java/org/alfresco/repo/template/AVMTemplateNode.java b/source/java/org/alfresco/repo/template/AVMTemplateNode.java index 4268fb6428..7a4562ffa6 100644 --- a/source/java/org/alfresco/repo/template/AVMTemplateNode.java +++ b/source/java/org/alfresco/repo/template/AVMTemplateNode.java @@ -46,6 +46,8 @@ import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.TemplateImageResolver; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNameMap; import org.alfresco.util.Pair; @@ -67,7 +69,7 @@ import freemarker.ext.dom.NodeModel; * * @author Kevin Roast */ -public class AVMTemplateNode extends BasePermissionsNode +public class AVMTemplateNode extends BasePermissionsNode implements NamespacePrefixResolverProvider { private static Log logger = LogFactory.getLog(AVMTemplateNode.class); @@ -172,7 +174,7 @@ public class AVMTemplateNode extends BasePermissionsNode { this.version = version; this.path = path; - this.properties = new QNameMap(this.services.getNamespaceService()); + this.properties = new QNameMap(this); if (descriptor == null) { descriptor = this.services.getAVMService().lookup(version, path, true); @@ -471,6 +473,12 @@ public class AVMTemplateNode extends BasePermissionsNode } + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return this.services.getNamespaceService(); + } + + // ------------------------------------------------------------------------------ // Private helpers diff --git a/source/java/org/alfresco/repo/template/TemplateNode.java b/source/java/org/alfresco/repo/template/TemplateNode.java index 48ca033171..a11aaa9b9b 100644 --- a/source/java/org/alfresco/repo/template/TemplateNode.java +++ b/source/java/org/alfresco/repo/template/TemplateNode.java @@ -43,6 +43,8 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.TemplateImageResolver; import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.VersionHistory; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNameMap; import org.alfresco.service.namespace.RegexQNamePattern; @@ -66,7 +68,7 @@ import freemarker.ext.dom.NodeModel; * * @author Kevin Roast */ -public class TemplateNode extends BasePermissionsNode +public class TemplateNode extends BasePermissionsNode implements NamespacePrefixResolverProvider { private static final long serialVersionUID = 1234390333739034171L; @@ -123,7 +125,7 @@ public class TemplateNode extends BasePermissionsNode this.services = services; this.imageResolver = resolver; - this.properties = new QNameMap(this.services.getNamespaceService()); + this.properties = new QNameMap(this); } @@ -241,7 +243,7 @@ public class TemplateNode extends BasePermissionsNode if (this.targetAssocs == null) { List refs = this.services.getNodeService().getTargetAssocs(this.nodeRef, RegexQNamePattern.MATCH_ALL); - this.targetAssocs = new QNameMap>(this.services.getNamespaceService()); + this.targetAssocs = new QNameMap>(this); for (AssociationRef ref : refs) { String qname = ref.getTypeQName().toString(); @@ -272,7 +274,7 @@ public class TemplateNode extends BasePermissionsNode if (this.sourceAssocs == null) { List refs = this.services.getNodeService().getSourceAssocs(this.nodeRef, RegexQNamePattern.MATCH_ALL); - this.sourceAssocs = new QNameMap>(this.services.getNamespaceService()); + this.sourceAssocs = new QNameMap>(this); for (AssociationRef ref : refs) { String qname = ref.getTypeQName().toString(); @@ -303,7 +305,7 @@ public class TemplateNode extends BasePermissionsNode if (this.childAssocs == null) { List refs = this.services.getNodeService().getChildAssocs(this.nodeRef); - this.childAssocs = new QNameMap>(this.services.getNamespaceService()); + this.childAssocs = new QNameMap>(this); for (ChildAssociationRef ref : refs) { String qname = ref.getTypeQName().toString(); @@ -510,9 +512,15 @@ public class TemplateNode extends BasePermissionsNode return this.imageResolver; } + // ------------------------------------------------------------------------------ // Inner classes + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return this.services.getNamespaceService(); + } + /** * Class to convert properties into template accessable objects */ diff --git a/source/java/org/alfresco/repo/template/VersionHistoryNode.java b/source/java/org/alfresco/repo/template/VersionHistoryNode.java index 83d43a3825..49f3e617bb 100644 --- a/source/java/org/alfresco/repo/template/VersionHistoryNode.java +++ b/source/java/org/alfresco/repo/template/VersionHistoryNode.java @@ -37,6 +37,8 @@ import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.VersionType; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNameMap; import org.alfresco.util.URLEncoder; @@ -47,7 +49,7 @@ import org.alfresco.util.URLEncoder; * * @author Kevin Roast */ -public class VersionHistoryNode extends BaseContentNode +public class VersionHistoryNode extends BaseContentNode implements NamespacePrefixResolverProvider { private QNameMap properties; private boolean propsRetrieved = false; @@ -77,7 +79,7 @@ public class VersionHistoryNode extends BaseContentNode this.version = version; this.parent = parent; this.services = services; - this.properties = new QNameMap(parent.services.getNamespaceService()); + this.properties = new QNameMap(this); } /** @@ -264,6 +266,12 @@ public class VersionHistoryNode extends BaseContentNode } + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return this.services.getNamespaceService(); + } + + // ------------------------------------------------------------------------------ // Content API diff --git a/source/java/org/alfresco/repo/template/Workflow.java b/source/java/org/alfresco/repo/template/Workflow.java index 6078728bcd..75ae9472f8 100644 --- a/source/java/org/alfresco/repo/template/Workflow.java +++ b/source/java/org/alfresco/repo/template/Workflow.java @@ -49,6 +49,8 @@ import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTaskState; import org.alfresco.service.cmr.workflow.WorkflowTransition; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNameMap; import org.alfresco.service.namespace.RegexQNamePattern; @@ -160,7 +162,7 @@ public class Workflow extends BaseTemplateProcessorExtension /** * Simple bean wrapper around a WorkflowTask item */ - public static class WorkflowTaskItem + public static class WorkflowTaskItem implements NamespacePrefixResolverProvider { private WorkflowTask task; private QNameMap properties = null; @@ -317,7 +319,7 @@ public class Workflow extends BaseTemplateProcessorExtension { // convert properties to a QName accessable Map with TemplateNode objects as required PropertyConverter converter = new PropertyConverter(); - this.properties = new QNameMap(this.services.getNamespaceService()); + this.properties = new QNameMap(this); for (QName qname : this.task.properties.keySet()) { Serializable value = converter.convertProperty( @@ -327,5 +329,10 @@ public class Workflow extends BaseTemplateProcessorExtension } return this.properties; } + + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return this.services.getNamespaceService(); + } } } diff --git a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java index f62f44889c..1cf8f471d4 100644 --- a/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java +++ b/source/java/org/alfresco/repo/workflow/jscript/JscriptWorkflowTask.java @@ -51,6 +51,8 @@ import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTransition; +import org.alfresco.service.namespace.NamespacePrefixResolver; +import org.alfresco.service.namespace.NamespacePrefixResolverProvider; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; import org.alfresco.util.Pair; @@ -151,7 +153,12 @@ public class JscriptWorkflowTask extends BaseScopableProcessorExtension implemen // instantiate ScriptableQNameMap properties // from WorkflowTasks's Map properties - this.properties = new ScriptableQNameMap(serviceRegistry.getNamespaceService()); + this.properties = new ScriptableQNameMap(new NamespacePrefixResolverProvider(){ + public NamespacePrefixResolver getNamespacePrefixResolver() + { + return serviceRegistry.getNamespaceService(); + } + }); Set keys = cmrWorkflowTask.properties.keySet(); for (QName key : keys) diff --git a/source/java/org/alfresco/service/namespace/DynamicNamespacePrefixResolver.java b/source/java/org/alfresco/service/namespace/DynamicNamespacePrefixResolver.java index d48a371e1f..0a3678434d 100644 --- a/source/java/org/alfresco/service/namespace/DynamicNamespacePrefixResolver.java +++ b/source/java/org/alfresco/service/namespace/DynamicNamespacePrefixResolver.java @@ -36,13 +36,9 @@ import java.util.Set; * required. * * @author andyh - * */ public class DynamicNamespacePrefixResolver implements NamespaceService { - - private static final long serialVersionUID = -7721089444629137409L; - /** * The delegate */ @@ -53,6 +49,7 @@ public class DynamicNamespacePrefixResolver implements NamespaceService */ private HashMap map = new HashMap(); + public DynamicNamespacePrefixResolver(NamespacePrefixResolver delegate) { super(); @@ -64,6 +61,7 @@ public class DynamicNamespacePrefixResolver implements NamespaceService this(null); } + /** * Add prefix to name space mapping override * @@ -143,5 +141,4 @@ public class DynamicNamespacePrefixResolver implements NamespaceService uris.addAll(map.keySet()); return uris; } - } diff --git a/source/java/org/alfresco/service/namespace/NamespacePrefixResolver.java b/source/java/org/alfresco/service/namespace/NamespacePrefixResolver.java index ecd4306fa0..6b8a1141c5 100644 --- a/source/java/org/alfresco/service/namespace/NamespacePrefixResolver.java +++ b/source/java/org/alfresco/service/namespace/NamespacePrefixResolver.java @@ -37,7 +37,7 @@ import org.alfresco.service.PublicService; * @author David Caruana */ @PublicService -public interface NamespacePrefixResolver extends Serializable +public interface NamespacePrefixResolver { /** * Gets the namespace URI registered for the given prefix @@ -76,5 +76,4 @@ public interface NamespacePrefixResolver extends Serializable */ @Auditable Collection getURIs(); - } diff --git a/source/java/org/alfresco/service/namespace/NamespacePrefixResolverProvider.java b/source/java/org/alfresco/service/namespace/NamespacePrefixResolverProvider.java new file mode 100644 index 0000000000..59c22a5ead --- /dev/null +++ b/source/java/org/alfresco/service/namespace/NamespacePrefixResolverProvider.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2005-2009 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program 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 General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing + */ +package org.alfresco.service.namespace; + +import java.io.Serializable; + +/** + * Provides support for serializable objects such as the QNameMap that require a + * NamespacePrefixResolver to be available. Ensures that the objects can remain + * serializable themselves and still maintain a valid NamespacePrefixResolver. + * + * @author Kevin Roast + */ +public interface NamespacePrefixResolverProvider extends Serializable +{ + /** + * Get an object that implements the NamespacePrefixResolver interface + * + * @return NamespacePrefixResolver + */ + NamespacePrefixResolver getNamespacePrefixResolver(); +} \ No newline at end of file diff --git a/source/java/org/alfresco/service/namespace/QNameMap.java b/source/java/org/alfresco/service/namespace/QNameMap.java index 01f8407cd6..db8dc9b389 100644 --- a/source/java/org/alfresco/service/namespace/QNameMap.java +++ b/source/java/org/alfresco/service/namespace/QNameMap.java @@ -30,8 +30,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -import org.alfresco.service.ServiceRegistry; -import org.alfresco.util.ApplicationContextHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,39 +41,47 @@ import org.apache.commons.logging.LogFactory; */ public class QNameMap implements Map, Cloneable, Serializable { - private static final long serialVersionUID = -6578946123712939601L; + private static final long serialVersionUID = -6578946123712939602L; protected static Log logger = LogFactory.getLog(QNameMap.class); protected Map contents = new HashMap(16, 1.0f); - protected NamespacePrefixResolver resolver = null; + protected NamespacePrefixResolverProvider provider = null; + /** * Constructor * - * @param resolver Mandatory NamespacePrefixResolver helper + * @param provider Mandatory NamespacePrefixResolverProvider helper */ - public QNameMap(NamespacePrefixResolver resolver) + public QNameMap(NamespacePrefixResolverProvider provider) { - if (resolver == null) + if (provider == null) { - throw new IllegalArgumentException("NamespacePrefixResolver is mandatory."); + throw new IllegalArgumentException("NamespacePrefixResolverProvider is mandatory."); } - this.resolver = resolver; + this.provider = provider; } - - /** * Constructor for Serialization mechanism - * */ protected QNameMap() { super(); } - - - + + + /** + * Helper to return a NamespacePrefixResolver instance - should -always- be used + * rather than holding onto a reference on the heap. + * + * @return NamespacePrefixResolver + */ + protected final NamespacePrefixResolver getResolver() + { + return this.provider.getNamespacePrefixResolver(); + } + /** * @see java.util.Map#size() */ @@ -97,7 +103,7 @@ public class QNameMap implements Map, Cloneable, Serializable */ public boolean containsKey(Object key) { - return (this.contents.containsKey(QName.resolveToQNameString(resolver, key.toString()))); + return (this.contents.containsKey(QName.resolveToQNameString(getResolver(), key.toString()))); } /** @@ -113,7 +119,7 @@ public class QNameMap implements Map, Cloneable, Serializable */ public Object get(Object key) { - String qnameKey = QName.resolveToQNameString(resolver, key.toString()); + String qnameKey = QName.resolveToQNameString(getResolver(), key.toString()); Object obj = this.contents.get(qnameKey); return obj; @@ -124,7 +130,7 @@ public class QNameMap implements Map, Cloneable, Serializable */ public Object put(Object key, Object value) { - return this.contents.put(QName.resolveToQNameString(resolver, key.toString()), value); + return this.contents.put(QName.resolveToQNameString(getResolver(), key.toString()), value); } /** @@ -132,7 +138,7 @@ public class QNameMap implements Map, Cloneable, Serializable */ public Object remove(Object key) { - return this.contents.remove(QName.resolveToQNameString(resolver, key.toString())); + return this.contents.remove(QName.resolveToQNameString(getResolver(), key.toString())); } /** @@ -191,7 +197,7 @@ public class QNameMap implements Map, Cloneable, Serializable */ public Object clone() { - QNameMap map = new QNameMap(resolver); + QNameMap map = new QNameMap(provider); map.putAll(this); return map;