001 package com.thaiopensource.relaxng.impl; 002 003 import com.thaiopensource.xml.util.Name; 004 005 class NsNameExceptNameClass implements NameClass { 006 007 private final NameClass nameClass; 008 private final String namespaceURI; 009 010 NsNameExceptNameClass(String namespaceURI, NameClass nameClass) { 011 this.namespaceURI = namespaceURI; 012 this.nameClass = nameClass; 013 } 014 015 public boolean contains(Name name) { 016 return (this.namespaceURI.equals(name.getNamespaceUri()) 017 && !nameClass.contains(name)); 018 } 019 020 public int containsSpecificity(Name name) { 021 return contains(name) ? SPECIFICITY_NS_NAME : SPECIFICITY_NONE; 022 } 023 024 public boolean equals(Object obj) { 025 if (obj == null || !(obj instanceof NsNameExceptNameClass)) 026 return false; 027 NsNameExceptNameClass other = (NsNameExceptNameClass)obj; 028 return (namespaceURI.equals(other.namespaceURI) 029 && nameClass.equals(other.nameClass)); 030 } 031 032 public int hashCode() { 033 return namespaceURI.hashCode() ^ nameClass.hashCode(); 034 } 035 036 public void accept(NameClassVisitor visitor) { 037 visitor.visitNsNameExcept(namespaceURI, nameClass); 038 } 039 040 public boolean isOpen() { 041 return true; 042 } 043 } 044