package com.buschmais.xo.impl.proxy.entity.property; import java.util.Collection; import com.buschmais.xo.api.XOException; /** * Defines the collection types supported for properties. */ public enum CollectionPropertyType { List(java.util.List.class), Set(java.util.Set.class), Collection(java.util.Collection.class); private Class<? extends Collection> collectionType; /** * Constructor. * * @param type * The collection type (i.e. interface). */ private CollectionPropertyType(Class<? extends java.util.Collection> type) { this.collectionType = type; } /** * Return the Java collection type. * * @return The Java collection type. */ public Class<? extends Collection> getCollectionType() { return collectionType; } /** * Determine the * {@link com.buschmais.xo.impl.proxy.entity.property.CollectionPropertyType} * for a given class. * * @param type * The class. * @return The collection property type. */ public static CollectionPropertyType getCollectionPropertyType(Class<?> type) { for (CollectionPropertyType collectionPropertyType : CollectionPropertyType.values()) { if (collectionPropertyType.collectionType.isAssignableFrom(type)) { return collectionPropertyType; } } throw new XOException(type.getName() + "is not a supported collection type."); } }