/***************************************************************************
* Copyright 2009-2012 by Christian Ihle *
* kontakt@usikkert.net *
* *
* This file is part of KouInject. *
* *
* KouInject is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version. *
* *
* KouInject is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with KouInject. *
* If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
package net.usikkert.kouinject.beandata;
import net.usikkert.kouinject.generics.TypeLiteral;
import org.apache.commons.lang.Validate;
/**
* A {@link BeanKey} for representing a request for a collection of beans.
*
* @author Christian Ihle
*/
public class CollectionBeanKey extends BeanKey {
private final BeanKey actualBeanKey;
/**
* Creates a new collection bean key for the specified bean type, with the specified qualifier.
*
* @param actualBeanType The actual collection bean type this key describes.
* @param beanType The type used on the collection.
* @param qualifier The qualifier for this key.
*/
public CollectionBeanKey(final TypeLiteral<?> actualBeanType, final TypeLiteral<?> beanType, final String qualifier) {
super(beanType, qualifier);
Validate.notNull(actualBeanType, "Actual bean type can not be null");
actualBeanKey = new BeanKey(actualBeanType, qualifier);
}
/**
* Checks if this bean key is for a collection of beans.
*
* @return True.
*/
@Override
public boolean isCollection() {
return true;
}
/**
* Returns the actual collection type as requested originally.
*
* @return The actual bean type as a new bean key.
*/
@Override
public BeanKey getActualBeanKey() {
return actualBeanKey;
}
@Override
public String toString() {
final StringBuilder toStringBuilder = new StringBuilder();
toStringBuilder.append("[collection] ");
toStringBuilder.append(super.toString());
return toStringBuilder.toString();
}
}