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