package com.googlecode.tawus.internal.transform; import org.apache.tapestry5.model.MutableComponentModel; import org.apache.tapestry5.plastic.PlasticClass; import org.apache.tapestry5.plastic.PlasticField; import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2; import org.apache.tapestry5.services.transform.TransformationSupport; import com.googlecode.tawus.annotations.InjectDAO; import com.googlecode.tawus.services.EntityDAOLocator; public class InjectDAOWorker implements ComponentClassTransformWorker2 { private EntityDAOLocator locator; public InjectDAOWorker(EntityDAOLocator locator) { this.locator = locator; } public void transform(PlasticClass plasticClass, TransformationSupport support, MutableComponentModel model) { for(final PlasticField field : plasticClass.getFieldsWithAnnotation(InjectDAO.class)) { InjectDAO annotation = field.getAnnotation(InjectDAO.class); field.claim(annotation); Class<?> entityClass = (Class<?>) annotation.value(); field.inject(locator.get(entityClass)); } } }