今天我想创建一个自定义安装操作,其中包含我的自定义类的实例作为属性。自定义类由install4j的 Set Varaible 操作实例化,因此它也设置为安装上下文。现在我想将此实例传递给自定义操作。因此,我使用 getter()和 setter()方法实现了操作,并创建了相应的 ActionBeanInfo 类。如果我将IDE中的操作放入我的项目配置中,则无法为自定义类的配置字段设置任何值。也许我必须为我的自定义类实现某种 PropertyConverter 类?我查看了示例代码,但没有找到任何解决方案。那我怎么能搞定这个呢?
AbstractInstallAction 实施:
public class MyCustomAction extends AbstractInstallAction {
private MyCustomClass instance;
@Override
public boolean install(InstallerContext installerContext) throws UserCanceledException {
...
// do some stuff with the MyCustomClass instance
...
}
public MyCustomClass getMyCustomClass() {
return instance;
}
public void setMyCustomClass(MyCustomClass instance) {
this.instance= instance;
}
}
ActionBeanInfo 实施:
public class MyCustomActionBeanInfo extends ActionBeanInfo {
private static final String PROPERTY_CUSTOM_CLASS = "myCustomClass";
public MyCustomActionBeanInfo () {
super("Custom Action.", "This action will do some custom stuff.", null,
true, false, null, MyCustomAction.class);
addPropertyDescriptor(create(PROPERTY_CUSTOM_CLASS, getBeanClass(), "Custom class",
"Sets the custom class to do some custom stuff during installation."));
}
}
答案 0 :(得分:0)
您必须编写一个属性转换器,它可以将MyCustomCass
的实例转换为字符串,并可选地将字符串转换为实例MyCustomClass
。
您必须实现的界面是com.install4j.api.beaninfo.PropertyConverter
。一旦实现了属性转换器,就可以在BeanInfo类的构造函数中注册它,如下所示:
setPropertyConverters(new PropertyConverter[] {propertyConverters});