1
package com.thaiopensource.relaxng.pattern;
3
import com.thaiopensource.xml.util.Name;
5
class ChoiceNameClass implements NameClass {
7
private final NameClass nameClass1;
8
private final NameClass nameClass2;
10
ChoiceNameClass(NameClass nameClass1, NameClass nameClass2) {
11
this.nameClass1 = nameClass1;
12
this.nameClass2 = nameClass2;
15
public boolean contains(Name name) {
16
return (nameClass1.contains(name)
17
|| nameClass2.contains(name));
20
public int containsSpecificity(Name name) {
21
return Math.max(nameClass1.containsSpecificity(name),
22
nameClass2.containsSpecificity(name));
25
public int hashCode() {
26
return nameClass1.hashCode() ^ nameClass2.hashCode();
29
public boolean equals(Object obj) {
30
if (obj == null || !(obj instanceof ChoiceNameClass))
32
ChoiceNameClass other = (ChoiceNameClass)obj;
33
return (nameClass1.equals(other.nameClass1)
34
&& nameClass2.equals(other.nameClass2));
37
public void accept(NameClassVisitor visitor) {
38
visitor.visitChoice(nameClass1, nameClass2);
41
public boolean isOpen() {
42
return nameClass1.isOpen() || nameClass2.isOpen();