001/*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved.            *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD      *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file.                                                     *
007 *****************************************************************************/
008
009package org.picocontainer.gems.constraints;
010
011import org.picocontainer.ComponentAdapter;
012
013/**
014 * Constraint that accepts an adapter whose implementation is either the
015 * same type or a subtype of the type(s) represented by this object.
016 *
017 * @author Nick Sieger
018 */
019@SuppressWarnings("serial")
020public final class IsType extends AbstractConstraint {
021        private final Class type;
022
023    /**
024     * Creates a new <code>IsType</code> instance.
025     *
026     * @param c the <code>Class</code> to match
027     */
028    public IsType(final Class c) {
029        this.type = c;
030    }
031
032    @Override
033        public boolean evaluate(final ComponentAdapter adapter) {
034        return type.isAssignableFrom(adapter.getComponentImplementation());
035    }
036
037}