01: /*
02: * The contents of this file are subject to the terms
03: * of the Common Development and Distribution License
04: * (the "License"). You may not use this file except
05: * in compliance with the License.
06: *
07: * You can obtain a copy of the license at
08: * https://jwsdp.dev.java.net/CDDLv1.0.html
09: * See the License for the specific language governing
10: * permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL
13: * HEADER in each file and include the License file at
14: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
15: * add the following below this CDDL HEADER, with the
16: * fields enclosed by brackets "[]" replaced with your
17: * own identifying information: Portions Copyright [yyyy]
18: * [name of copyright owner]
19: */
20: package com.sun.xml.xsom.util;
21:
22: import com.sun.xml.xsom.XSType;
23:
24: /**
25: * Perform a transitive closure operation on a type to determine if it
26: * belongs to this set.
27: *
28: * The contains method returns true iff the TypeSet contains an instance
29: * of the specified XSType or any of the base types of the XSType.
30: *
31: * @author <a href="mailto:Ryan.Shoemaker@Sun.COM">Ryan Shoemaker</a>, Sun Microsystems, Inc.
32: */
33: public class TypeClosure extends TypeSet {
34:
35: private final TypeSet typeSet;
36:
37: public TypeClosure(TypeSet typeSet) {
38: this .typeSet = typeSet;
39: }
40:
41: /* (non-Javadoc)
42: * @see com.sun.xml.xsom.util.TypeSet#contains(com.sun.xml.xsom.XSDeclaration)
43: *
44: * transitive closure variation on the contains method.
45: */
46: public boolean contains(XSType type) {
47: if (typeSet.contains(type)) {
48: return true;
49: } else {
50: XSType baseType = type.getBaseType();
51: if (baseType == null) {
52: return false;
53: } else {
54: // climb the super type hierarchy
55: return contains(baseType);
56: }
57: }
58: }
59:
60: }
|