in modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java [173:206]
private void init() {
for (final Field field : fields) {
visitField(field.access, field.name, field.type.getDescriptor(), null, null).visitEnd();
}
final Method init = new Method("<init>", Type.VOID_TYPE, helper.getArgumentTypes());
final GeneratorAdapter mgen =
new GeneratorAdapter(0, init, null, Privilizer.EMPTY_TYPE_ARRAY, this);
mgen.visitCode();
final Label begin = mgen.mark();
// invoke super constructor
mgen.loadThis();
mgen.invokeConstructor(Type.getType(Object.class), Method.getMethod("void <init> ()"));
// assign remaining fields
int arg = 0;
for (final Field field : fields) {
mgen.loadThis();
mgen.loadArg(arg++);
mgen.putField(action, field.name, field.type);
}
mgen.returnValue();
final Label end = mgen.mark();
// declare local vars
mgen.visitLocalVariable("this", action.getDescriptor(), null, begin, end, 0);
arg = 1;
for (final Field field : fields) {
mgen.visitLocalVariable("arg" + arg, field.type.getDescriptor(), null, begin, end, arg++);
}
mgen.endMethod();
}