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