You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/07/27 18:03:51 UTC

svn commit: r680135 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java

Author: jukka
Date: Sun Jul 27 09:03:51 2008
New Revision: 680135

URL: http://svn.apache.org/viewvc?rev=680135&view=rev
Log:
JCR-1644: make NamespaceContext#getPrefix(java.lang.String) iterative instead of recursive

Applied patch by Fabrizio Giustina.

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java?rev=680135&r1=680134&r2=680135&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/xml/NamespaceContext.java Sun Jul 27 09:03:51 2008
@@ -90,14 +90,15 @@
      * @throws NamespaceException if the prefix is not mapped
      */
     public String getURI(String prefix) throws NamespaceException {
-        String uri = (String) prefixToURI.get(prefix);
-        if (uri != null) {
-            return uri;
-        } else if (parent != null) {
-            return parent.getURI(prefix);
-        } else {
-            throw new NamespaceException("Unknown prefix: " + prefix);
+        NamespaceContext current = this;
+        while (current != null) {
+            String uri = (String) current.prefixToURI.get(prefix);
+            if (uri != null) {
+                return uri;
+            }
+            current = current.parent;
         }
+        throw new NamespaceException("Unknown prefix: " + prefix);
     }
 
     /**
@@ -108,13 +109,14 @@
      * @throws NamespaceException if the URI is not mapped
      */
     public String getPrefix(String uri) throws NamespaceException {
-        String prefix = (String) uriToPrefix.get(uri);
-        if (prefix != null) {
-            return prefix;
-        } else if (parent != null) {
-            return parent.getPrefix(uri);
-        } else {
-            throw new NamespaceException("Unknown URI: " + uri);
+        NamespaceContext current = this;
+        while (current != null) {
+            String prefix = (String) current.uriToPrefix.get(uri);
+            if (prefix != null) {
+                return prefix;
+            }
+            current = current.parent;
         }
+        throw new NamespaceException("Unknown URI: " + uri);
     }
 }