如何将自定义类属性设置为自定义操作?

时间:2017-03-08 13:43:12

标签: java install4j

今天我想创建一个自定义安装操作,其中包含我的自定义类的实例作为属性。自定义类由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."));
  }
}

1 个答案:

答案 0 :(得分:0)

您必须编写一个属性转换器,它可以将MyCustomCass的实例转换为字符串,并可选地将字符串转换为实例MyCustomClass

您必须实现的界面是com.install4j.api.beaninfo.PropertyConverter。一旦实现了属性转换器,就可以在BeanInfo类的构造函数中注册它,如下所示:

setPropertyConverters(new PropertyConverter[] {propertyConverters});