package org.simpleflatmapper.test.map;
import org.simpleflatmapper.map.FieldKey;
import org.simpleflatmapper.map.mapper.KeyFactory;
import org.simpleflatmapper.reflect.TypeAffinity;
import java.lang.reflect.Type;
import java.util.Arrays;
public class SampleFieldKey extends FieldKey<SampleFieldKey> implements TypeAffinity {
public static final KeyFactory<SampleFieldKey> KEY_FACTORY = new KeyFactory<SampleFieldKey>() {
@Override
public SampleFieldKey newKey(String name, int i) {
return new SampleFieldKey(name, i);
}
} ;
private final Class<?>[] affinities;
private final Type type;
public SampleFieldKey(String name, int index) {
this(name, index, new Class[0]);
}
public SampleFieldKey(String name, int index, Class<?>... affinities) {
this(name, index, affinities, Object.class, null);
}
public SampleFieldKey(String name, int index, Class<?>[] affinities, Type type) {
this(name, index, affinities, type, null);
}
public SampleFieldKey(String name, int index, Class<?>[] affinities, Type type, SampleFieldKey parent) {
super(name, index, parent);
this.affinities = affinities;
this.type = type;
}
public SampleFieldKey(String name, int index, SampleFieldKey parent) {
this(name, index, new Class[0], Object.class, parent);
}
@Override
public Type getType(Type targetType) {
return type;
}
@Override
public SampleFieldKey alias(String alias) {
return new SampleFieldKey(alias, index, this);
}
@Override
public Class<?>[] getAffinities() {
return affinities;
}
@Override
public String toString() {
return "SampleFieldKey{" +
"name=" + getName() +
"affinities=" + Arrays.toString(affinities) +
", type=" + type +
'}';
}
}