@Override
public boolean run(Outline outline, Options options, ErrorHandler errorHandler){
JCodeModel codeModel = outline.getCodeModel();
Map<String, JClass> typeCache = new HashMap<>();
Collection<? extends ClassOutline> classOutlines = outline.getClasses();
for(ClassOutline classOutline : classOutlines){
JDefinedClass beanClazz = classOutline.implClass;
CPluginCustomization extendsCustomization = CustomizationUtils.findCustomization(classOutline, Customizations.EXTENDS_ELEMENT_NAME);
if(extendsCustomization != null){
ExtendsClass extendsClass = (ExtendsClass)CustomizationUtils.unmarshall(Customizations.getContext(), extendsCustomization);
JClass type = parseType(typeCache, codeModel, getClassName(extendsClass));
beanClazz._extends(type);
}
List<CPluginCustomization> implementsCustomizations = CustomizationUtils.findCustomizations(classOutline, Customizations.IMPLEMENTS_ELEMENT_NAME);
for(CPluginCustomization implementsCustomization : implementsCustomizations){
ImplementsInterface implementsInterface = (ImplementsInterface)CustomizationUtils.unmarshall(Customizations.getContext(), implementsCustomization);
JClass type = parseType(typeCache, codeModel, getInterfaceName(implementsInterface));
beanClazz._implements(type);
}
FieldOutline[] fieldOutlines = classOutline.getDeclaredFields();
for(FieldOutline fieldOutline : fieldOutlines){
CPropertyInfo propertyInfo = fieldOutline.getPropertyInfo();
CustomizationUtils.findPropertyCustomizationsInProperty(propertyInfo, Customizations.EXTENDS_ELEMENT_NAME);
CustomizationUtils.findPropertyCustomizationsInProperty(propertyInfo, Customizations.IMPLEMENTS_ELEMENT_NAME);
}
}
return true;
}