package com.feedly.cassandra.entity;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
public class ListPropertyMetadata extends PropertyMetadataBase
{
private final PropertyMetadataBase _elementPropertyMetadata;
public ListPropertyMetadata(String name,
Type type,
Annotation[] annotations,
String physicalName,
int ttl,
Method getter,
Method setter)
{
super(name, List.class, annotations, physicalName, ttl, getter, setter, true, EPropertyType.LIST);
if(type instanceof ParameterizedType)
{
ParameterizedType ptype = (ParameterizedType) type;
if(((ParameterizedType) type).getActualTypeArguments().length != 1)
throw new IllegalStateException("List types must have 1 generic argument");
_elementPropertyMetadata = PropertyMetadataFactory.buildPropertyMetadata("", ptype.getActualTypeArguments()[0], null, physicalName, ttl, null, null, null, false);
}
else
{
throw new IllegalStateException("lists must be parameterized types: property " + physicalName + ", type " + type);
}
}
public PropertyMetadataBase getElementPropertyMetadata()
{
return _elementPropertyMetadata;
}
public boolean hasCounter()
{
return _elementPropertyMetadata.hasCounter();
}
public boolean hasSimple()
{
return _elementPropertyMetadata.hasSimple();
}
}