1 package net.sf.cglib.transform.impl; 2 3 import net.sf.cglib.transform.*; 4 import java.util.*; 5 import net.sf.cglib.core.TypeUtils; 6 import org.objectweb.asm.Type; 7 8 public class ExampleTask extends AbstractTransformTask { 9 private List properties = new ArrayList(); 10 private String fieldSuffix = ""; 11 private ClassTransformer transformer; 12 13 protected ClassTransformer getClassTransformer(String name) { 14 return transformer; 15 } 16 17 protected void beforeExecute() { 18 ClassTransformer t1 = new AccessFieldTransformer(new AccessFieldTransformer.Callback() { 19 public String getPropertyName(Type owner, String fieldName) { 20 return fieldName + fieldSuffix; 21 } 22 }); 23 int size = properties.size(); 24 String[] names = new String[size]; 25 Type[] types = new Type[size]; 26 for (int i = 0; i < size; i++) { 27 NewProperty p = (NewProperty)properties.get(i); 28 names[i] = p.name; 29 types[i] = TypeUtils.parseType(p.type); 30 } 31 ClassTransformer t2 = new AddPropertyTransformer(names, types); 32 transformer = new ClassTransformerChain(new ClassTransformer[]{ t1, t2 }); 33 } 34 35 public static class NewProperty { 36 private String name; 37 private String type; 38 39 public void setName(String name) { 40 this.name = name; 41 } 42 43 public void setType(String type) { 44 this.type = type; 45 } 46 } 47 48 public void addNewproperty(NewProperty prop) { 49 properties.add(prop); 50 } 51 52 public void setFieldsuffix(String fieldSuffix) { 53 this.fieldSuffix = fieldSuffix; 54 } 55 }

This page was automatically generated by Maven