package org.kxml;
import java.util.*;
/** Like Attribute, this class is immutable for similar reasons */
public class PrefixMap {
public static final PrefixMap DEFAULT = new PrefixMap (null, "", "");
String prefix;
String namespace;
PrefixMap previous;
public PrefixMap (PrefixMap previous, String prefix, String namespace) {
this.previous = previous;
this.prefix = prefix;
this.namespace = namespace;
}
public String getNamespace () {
return namespace;
}
public String getPrefix () {
return prefix;
}
public PrefixMap getPrevious () {
return previous;
}
/** returns the namespace associated with the given prefix,
or null, if none is assigned */
public String getNamespace (String prefix) {
PrefixMap current = this;
do {
if (prefix.equals (current.prefix)) return current.namespace;
current = current.previous;
}
while (current != null);
return null;
}
public String getPrefix (String namespace) {
PrefixMap current = this;
do {
//System.err.println ("found: "+current.namespace +"/"+ current.prefix + "/" +getNamespace (current.prefix));
if (namespace.equals (current.namespace)
&& namespace.equals (getNamespace (current.prefix)))
return current.prefix;
current = current.previous;
}
while (current != null);
return null;
}
}