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    
009    package org.picocontainer.gems.constraints;
010    
011    import org.picocontainer.ComponentAdapter;
012    
013    /**
014     * Constraint that only accepts an adapter whose implementation is the same
015     * class instance as the type represented by this object.
016     *
017     * @author Nick Sieger
018     */
019    @SuppressWarnings("serial")
020    public final class IsExactType extends AbstractConstraint {
021    
022            private final Class type;
023    
024        /**
025         * Creates a new <code>IsExactType</code> instance.
026         *
027         * @param c the <code>Class</code> to match
028         */
029        public IsExactType(final Class c) {
030            this.type = c;
031        }
032    
033        @Override
034            public boolean evaluate(final ComponentAdapter adapter) {
035            return type == adapter.getComponentImplementation();
036        }
037    
038    }