On 6/10/2013 12:44 PM, Richard Eckart de Castilho wrote:
> Am 10.06.2013 um 18:03 schrieb Marshall Schor <m...@schor.com>:
>
>> I'm not an expert here; I took a look at the code.
>>
>> It seems that the interface Resource includes the method getResourceManager()
>> which returns the ResourceManager that was used to create this instance.
>> The implementations seem to inherit from the Resource_ImplBase which has the
>> getResourceManager method.
>> So it seems to me that Resources can find the ResourceManager they were 
>> created in?
>
> I can offer two tests and a diagnosis, and at least a suggestion for one or 
> two fixes.
>
> == Tests ==
>
> Try this:
>
> - Set a breakpoint in TestResourceInterface_impl line 48
> - Run ResourceManager_implTest in debug mode
> - when the breakpoint is hit, inspect aData.getResourceManager() (is "null")
>
> Admittedly, the external resource is not initialized in its natural 
> environment (within an AE) here.
>
> Different test:
>
> - Set a breakpoint in Apache uimaFIT 
> ExternalResourceFactoryTest$DummySharedResourceObject.load(DataResource) 
> line: 558 
> - Run ExternalResourceFactoryTest.testScanBind() line: 103 in debug mode
> - when the breakpoint is hit, inspect aData.getResourceManager() (is "null")
>
> == Diagnosis ==
>
> The ResourceManager_impl (line 567) would set a resource manager on the 
> created external resource, if one had been specified in the 
> aResourceInitParams which are handed down all the way from the creation of 
> the analysis component to the resource. But if the original called did leave 
> it to UIMA to set up a resource manager, this internally created manager is 
> not passed through. Thus, Resource_ImplBase.initialize (line 88ff) creates a 
> new resource manager for the resource.
> This could be fixed by adding the following code in Resource_ImplBase line 
> 176:
>
> if (aAdditionalParams == null) {
>   aAdditionalParams = new HashMap<String, Object>();
> }
> if (!aAdditionalParams.containsKey(PARAM_RESOURCE_MANAGER)) {
>   aAdditionalParams.put(PARAM_RESOURCE_MANAGER, 
> mUimaContextAdmin.getResourceManager());
> }

This seems reasonable to me.  It says to share whatever resource manager is
passed in or created for this UIMA Context with external resource, unless a
specific additional param was passed in specifying a resource manager to use.


>
> Additionally, ConfigurableDataResource_impl seems never to call 
> super.initialize(), so its mUimaContextAdmin is never initialized, hence any 
> getResourceManager() call returns null.

This will take some more investigation / code research for me to offer any
(hopefully useful) opinions...

>
> Cheers,
>
> -- Richard
>
> Btw., are there any general guidelines when to reply to Jira-issues via Jira 
> and when to simply reply on the list? 
Here are the guidelines I think about:
   a) Jira doesn't have nested reply capability, or the ability to reply in-line
to a previous comment (with your comments interspersed)
   b) A particular Jira can represent a cross-cutting collection of comments on
a particular topic.

So, I tend to use mailing list for discussion, but post summaries and other
things I want to be able to have longer-lasting references to, on the Jira.

-Marshall

Reply via email to