
com.thaiopensource.relaxng.pattern.NormalizedNsNameClass Maven / Gradle / Ivy
package com.thaiopensource.relaxng.pattern;
import com.thaiopensource.xml.util.Name;
import java.util.Map;
import java.util.Set;
/**
* A NormalizedNsNameClass that contains one or more namespace wildcards.
*/
public class NormalizedNsNameClass extends NormalizedNameClass {
private final Map> nsMap;
private final Set includedNamespaces;
public NormalizedNsNameClass(Set includedNames, Map> nsMap) {
super(includedNames);
this.nsMap = nsMap;
includedNamespaces = immutable(nsMap.keySet());
}
public boolean isEmpty() {
return super.isEmpty() && nsMap.isEmpty();
}
public boolean contains(Name name) {
Set excludedLocalNames = nsMap.get(name.getNamespaceUri());
if (excludedLocalNames == null)
return super.contains(name);
else
return !excludedLocalNames.contains(name.getLocalName());
}
public Set getIncludedNamespaces() {
return includedNamespaces;
}
public Set getExcludedLocalNames(String ns) {
return nsMap.get(ns);
}
public int hashCode() {
return super.hashCode() ^ nsMap.hashCode();
}
public boolean equals(Object obj) {
if (!(obj instanceof NormalizedNsNameClass))
return false;
NormalizedNsNameClass other = (NormalizedNsNameClass)obj;
if (!nsMap.equals(other.nsMap))
return false;
return equal(this, other);
}
boolean includesNamespace(String ns) {
return getIncludedNamespaces().contains(ns);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy