package com.maxifier.guice.property.converter;
import com.google.inject.TypeLiteral;
import com.google.inject.matcher.AbstractMatcher;
import java.lang.reflect.GenericArrayType;
import java.lang.reflect.Type;
/**
* Project: Maxifier
* Date: 10.09.2009
* Time: 15:19:12
* <p/>
* Copyright (c) 1999-2009 Magenta Corporation Ltd. All Rights Reserved.
* Magenta Technology proprietary and confidential.
* Use is subject to license terms.
*
* @author Aleksey Didik
*/
public class ArrayMatcher extends AbstractMatcher<TypeLiteral<?>> {
private final Class<?> arrayClass;
public ArrayMatcher(Class<?> arrayClass) {
this.arrayClass = arrayClass;
}
@Override
public boolean matches(TypeLiteral<?> typeLiteral) {
Type type = typeLiteral.getType();
return type instanceof GenericArrayType
&&
((GenericArrayType) type).getGenericComponentType().equals(arrayClass);
}
@Override
public String toString() {
return String.format("ArrayMatcher{%s}", arrayClass.getName());
}
}