uima-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Leitner <fleit...@cnio.es>
Subject Re: generics and type safety in UIMA AEs
Date Mon, 06 Aug 2012 12:21:08 GMT
On 6 Aug 2012, at 12:59, Richard Eckart de Castilho wrote:

> Hello Florian,
> with vanilla UIMA, there is no other way than casting. You might want to take a look
at uimaFIT though.
>> FSIterator<Annotation> annIt = jcas.getAnnotationIndex(myType).iterator();
> List<Token> tokens = JCasUtil.select(jcas, Token.class)
>> 2. The second type safety issue I have is with external resources. Lets assume I've
got an interface defining a StringMapResource<T>, i.e., much like in the UIMA tutorials,
essentially a Map<String, T> using String keys and some generic values. Usually, in
the initialize(UimaContext ctx) method, I'd write:
>> StringMapResource<MyType> smr = (StringMapResource<MyType>)  ctx.getResourceObject(myResourceKey);
> This is really a bit difficult to do statically type safe, but uimaFIT allows you to
at least avoid the compiler warnings. You'd just set up a class variable of the type you want
and annotate it with @ExternalResource:
> @ExternalResource(key="MY_RESOURCE_KEY")
> private StringMapResource<MyType> smr;
> Mind that for this annotation (or the similarliy useful @ConfigurationParameter annotation)
to work either your component must inherit from one of the uimaFIT base classes (e.g. org.uimafit.component.JCasAnnotator_ImplBase)
or you have to call ConfigurationParameterInitializer and ExternalResourceInitializer manually
in initialize().
> Cheers,
> -- Richard
> -- 

Hello Richard,

Thank you very much for your responses!

In general, I am already using uimaFIT to write my tests, because UIMA itself seems virtually
"untestable", but I am (so far) reluctant to included it in my main code, too, in the hopes
of minimizing my dependencies,  maintenance overhead, and maximizing compatibility (Maybe
I should really over think my decision - I am astonished how fast uimaFIT 1.4 was out, following
the UIMA 2.4.0 release.)

However, as a matter of fact, I am not sure I understand why uimaFIT isn't part of UIMA. I'd
think this stuff is so good it should be included into the Apache code-base.

View raw message