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 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")
020public 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}