Hi,

it is true that it is currently not possible to register custom property 
editors.
i think there is no reason speaking against it, but there was no need to do it 
so
far. 

However, I did a test and I cannot reproduce your problem that a class with a
string constructor could not be used. Consider the following code that works 
for me:

---

  public static class CustomValue {
    public String value;

    public CustomValue(String aValue) {
      super();
      value = aValue;
    }
  }

  public static class CustomValueAE1 extends JCasAnnotator_ImplBase {
    public static final String PARAM_VALUE = "value";
    @ConfigurationParameter(name = PARAM_VALUE, defaultValue = "default value", 
mandatory = false)
    public CustomValue param;

    @Override
    public void initialize(UimaContext aContext) throws 
ResourceInitializationException {
      super.initialize(aContext);
    }

    @Override
    public void process(JCas aJCas) throws AnalysisEngineProcessException {
      /* do nothing */
    }
  }

  @Test
  public void testCustomValueParams() throws Exception {
    AnalysisEngine aed = 
AnalysisEngineFactory.createEngine(CustomValueAE1.class,
            CustomValueAE1.PARAM_VALUE, "my value");
    CustomValueAE1 ae = new CustomValueAE1();
    ae.initialize(aed.getUimaContext());
    assertEquals("my value", ae.param.value);

    aed = AnalysisEngineFactory.createEngine(CustomValueAE1.class);
    ae = new CustomValueAE1();
    ae.initialize(aed.getUimaContext());
    assertEquals("default value", ae.param.value);
  }
  
---

I suppose what you are trying to do is something like this? 

---

    aed = AnalysisEngineFactory.createEngine(CustomValueAE1.class,
            CustomValueAE1.PARAM_VALUE, new CustomValue("other value"));
    ae = new CustomValueAE1();
    ae.initialize(aed.getUimaContext());
    assertEquals("other value", ae.param.value);
---

True, this currently does not work, but I think that uimaFIT should probably be
changed to fall back to toString() in such a case so that adding an appropriate
toString() method to CustomValue should fix the problem.

Would you mind opening Jira issues for those cases that do not work for you?

Cheers,

-- Richard


On 06.11.2014, at 14:14, Johannes Darms <[email protected]> 
wrote:

> Hey there,
> 
> I'm trying to inject an Object into an UIMA Component with a 
> @ConfigurationParameter Annotation. The Documentation says that I can inject 
> any Object with a single String Argument Constructor. Which does not work! I 
> can only inject Types that are defined in PropertyEditorRegistrySupport and 
> PropertyEditorUtil. And of course there is no custom PropertyEditor defined 
> for my Class which leads to an exception. Sadly the API for solving my 
> problem (configure custom PropertyEditors) is encapsulated. Are there any 
> restrictions and/or design decision to hide this functionality from a 
> developer? 
> 
> 
> Regards,
> 
> Johannes

Reply via email to