/* * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the "License"). You may not use this file except * in compliance with the License. * * You can obtain a copy of the license at * https://jwsdp.dev.java.net/CDDLv1.0.html * See the License for the specific language governing * permissions and limitations under the License. * * When distributing Covered Code, include this CDDL * HEADER in each file and include the License file at * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable, * add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your * own identifying information: Portions Copyright [yyyy] * [name of copyright owner] */ package com.sun.xml.xsom.util; import com.sun.xml.xsom.XSType; /** * Perform a transitive closure operation on a type to determine if it * belongs to this set. * * The contains method returns true iff the TypeSet contains an instance * of the specified XSType or any of the base types of the XSType. * * @author <a href="mailto:Ryan.Shoemaker@Sun.COM">Ryan Shoemaker</a>, Sun Microsystems, Inc. */ public class TypeClosure extends TypeSet { private final TypeSet typeSet; public TypeClosure(TypeSet typeSet) { this.typeSet = typeSet; } /* (non-Javadoc) * @see com.sun.xml.xsom.util.TypeSet#contains(com.sun.xml.xsom.XSDeclaration) * * transitive closure variation on the contains method. */ public boolean contains(XSType type) { if( typeSet.contains(type) ) { return true; } else { XSType baseType = type.getBaseType(); if( baseType == null ) { return false; } else { // climb the super type hierarchy return contains(baseType); } } } }