| package testsubjects; |
| |
| import org.apache.tapestry5.plastic.PlasticClass; |
| import org.apache.tapestry5.plastic.PlasticClassTransformer; |
| import org.apache.tapestry5.plastic.PlasticField; |
| import org.apache.tapestry5.plastic.test.TestInject; |
| |
| public class TestInjectTransformer<T> implements PlasticClassTransformer |
| { |
| private final String className; |
| |
| private final T fieldValue; |
| |
| public TestInjectTransformer(Class<T> fieldType, T fieldValue) |
| { |
| // Limited; won't handle primitives or array types |
| this.className = fieldType.getName(); |
| this.fieldValue = fieldValue; |
| } |
| |
| @Override |
| public void transform(PlasticClass plasticClass) |
| { |
| for (PlasticField f : plasticClass.getFieldsWithAnnotation(TestInject.class)) |
| { |
| if (f.getTypeName().equals(className)) |
| { |
| f.inject(fieldValue); |
| |
| f.claim(this); |
| } |
| } |
| } |
| } |