Ok, so here is the analysis. There are two independent reasons why the code does
not work.


== Unexpected used of "bindExternalResource" ==

I did not foresee using "bindExternalResource" for binding
a nested resource to a resource. So instead of

resourceA = 
createExternalResourceDescription(ResourceA.class,"http://resource.org/a";);
resourceB = 
createExternalResourceDescription(ResourceB.class,"http://resource.org/b";);
bindExternalResource(resourceB, ResourceA.RESOURCE_A_KEY, resourceA);

You need to write:

resourceA = 
createExternalResourceDescription(ResourceA.class,"http://resource.org/a";);
resourceB = 
createExternalResourceDescription(ResourceB.class,"http://resource.org/b";,
  ResourceA.RESOURCE_A_KEY, resourceA);

The reason here is that part of the magic that makes nesting work happens in 
createExternalResourceDescription and is missed if bindExternalResource is used.

Still, bindExternalResource shouldn't fail with an NPE here - it should give a 
reasonable
message. And it should behave consistently, so produce the same error no matter 
when it
is called in the code - or it should just work as expected...


== createExternalResourceDescription for SharedResourceObjects missing code ==

The proper code for handling nested resources is missing from the 
createExternalResourceDescription
variant used to with SharedResourceObjects. This is an oversight and will be 
fixed. I've done a
local fix and will commit that soon.


Btw. any reason you are still on UIMA 2.6.0? I am considering to do the next 
uimaFIT release
based on 2.7.0 (and Java 1.6).

-- Richard

Reply via email to