// creates the method descriptor with parameter descriptors
// TODO parameterize parameter descriptors
ParameterDescriptor parameterDescriptor1 = new ParameterDescriptor();
parameterDescriptor1.setName("listener");
parameterDescriptor1.setDisplayName("listener");
ParameterDescriptor[] parameterDescriptors = {parameterDescriptor1};
descriptor = new MethodDescriptor(method, parameterDescriptors);
} catch (Throwable t) {
// alternative: create a plain method descriptor
descriptor = new MethodDescriptor(method);
}
// TODO parameterize descriptor properties
descriptor.setDisplayName("${method.simpleName}(java.beans.PropertyChangeListener)");
descriptor.setShortDescription("Adds a property change listener.");
descriptor.setExpert(false);
descriptor.setHidden(false);
descriptor.setValue("preferred", false);
return descriptor;
}
#end
}
注意在这个模板运作之前,我们需要将以下信息传递给Velocity:
packageName:生成类的完整包名。
className:生成类的类名。
fields:源类中包含的filed的集合。我们需要从每个field中获取以下信息:
simpleName:filed的变量名。
type:filed的类型。
description:filed的自我描述(在本例中没有使用)
……
methods:源类中包含的method的集合。我们需要从每个method中获取以下信息:
simpleName:method的方法名。
arguments:method的参数(在本