package org.tynamo.internal.services;
import org.apache.tapestry5.model.MutableComponentModel;
import org.apache.tapestry5.plastic.PlasticClass;
import org.apache.tapestry5.services.ComponentClassResolver;
import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
import org.apache.tapestry5.services.transform.TransformationSupport;
import org.tynamo.descriptor.annotation.beaneditor.BeanModel;
import org.tynamo.descriptor.annotation.beaneditor.BeanModels;
public class BeanModelWorker implements ComponentClassTransformWorker2
{
private final BeanModelsAnnotationBMModifier modifier;
private final ComponentClassResolver componentClassResolver;
public BeanModelWorker(BeanModelsAnnotationBMModifier modifier, ComponentClassResolver componentClassResolver)
{
this.modifier = modifier;
this.componentClassResolver = componentClassResolver;
}
@Override
public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model)
{
if (plasticClass.hasAnnotation(BeanModels.class))
{
String pageName = componentClassResolver.resolvePageClassNameToPageName(plasticClass.getClassName());
String canonicalized = componentClassResolver.canonicalizePageName(pageName);
BeanModels bms = plasticClass.getAnnotation(BeanModels.class);
for (BeanModel bm : bms.value())
{
modifier.put(canonicalized, bm);
}
}
}
}