package org.springframework.roo.classpath.details;
import org.apache.commons.lang3.Validate;
import org.springframework.roo.classpath.PhysicalTypeCategory;
import org.springframework.roo.classpath.PhysicalTypeDetails;
import org.springframework.roo.model.AbstractCustomDataAccessorProvider;
import org.springframework.roo.model.CustomDataImpl;
import org.springframework.roo.model.JavaType;
/**
* Simple implementation of {@link PhysicalTypeDetails} that is suitable for
* {@link PhysicalTypeCategory#OTHER} or sub-classing by category-specific
* implementations.
*
* @author Ben Alex
* @since 1.0
*/
public class DefaultPhysicalTypeDetails extends AbstractCustomDataAccessorProvider implements
PhysicalTypeDetails {
private final JavaType javaType;
private final PhysicalTypeCategory physicalTypeCategory;
public DefaultPhysicalTypeDetails(final PhysicalTypeCategory physicalTypeCategory,
final JavaType javaType) {
super(CustomDataImpl.NONE);
Validate.notNull(javaType, "Java type required");
Validate.notNull(physicalTypeCategory, "Physical type category required");
this.javaType = javaType;
this.physicalTypeCategory = physicalTypeCategory;
}
public JavaType getName() {
return getType();
}
public PhysicalTypeCategory getPhysicalTypeCategory() {
return physicalTypeCategory;
}
public JavaType getType() {
return javaType;
}
}