Author: mbenson
Date: Wed Jun 13 11:45:43 2007
New Revision: 546994
URL: http://svn.apache.org/viewvc?view=rev&rev=546994
Log:
complete sealing handling
Modified:
jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/NamespaceResolver.java
Modified:
jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/NamespaceResolver.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/NamespaceResolver.java?view=diff&rev=546994&r1=546993&r2=546994
==============================================================================
---
jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/NamespaceResolver.java
(original)
+++
jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/NamespaceResolver.java
Wed Jun 13 11:45:43 2007
@@ -51,14 +51,17 @@
public NamespaceResolver(NamespaceResolver parent) {
this.parent = parent;
}
-
+
/**
* Registers a namespace prefix.
*
* @param prefix A namespace prefix
* @param namespaceURI A URI for that prefix
*/
- public void registerNamespace(String prefix, String namespaceURI) {
+ public synchronized void registerNamespace(String prefix, String
namespaceURI) {
+ if (isSealed()) {
+ throw new IllegalStateException("Cannot register namespaces on a
sealed NamespaceResolver");
+ }
namespaceMap.put(prefix, namespaceURI);
reverseMap = null;
}
@@ -92,7 +95,7 @@
* @param prefix The namespace prefix to look up
* @return namespace URI or null if the prefix is undefined.
*/
- public String getNamespaceURI(String prefix) {
+ public synchronized String getNamespaceURI(String prefix) {
String uri = (String) namespaceMap.get(prefix);
if (uri == null && pointer != null) {
uri = pointer.getNamespaceURI(prefix);
@@ -108,7 +111,7 @@
* @param namespaceURI the ns URI to check.
* @return String prefix
*/
- public String getPrefix(String namespaceURI) {
+ public synchronized String getPrefix(String namespaceURI) {
if (reverseMap == null) {
reverseMap = new HashMap();
NodeIterator ni = pointer.namespaceIterator();
@@ -159,7 +162,9 @@
*/
public Object clone() {
try {
- return super.clone();
+ NamespaceResolver result = (NamespaceResolver) super.clone();
+ result.sealed = false;
+ return result;
}
catch (CloneNotSupportedException e) {
// Of course, it's supported.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]