On 3/25/2015 10:34 AM, Richard Eckart de Castilho wrote:
> Thanks for the explanation. With this change, however, it is not possible 
> anymore
> to create a customized RootUimaContext with a custom resource manager.
>
> Admittedly, my case (which I didn't explain yet) is a freak case and should 
> probably
> also be fixed elsewhere... my workaround now is to create an anonymous 
> instance
> in which I override getResourceManager()...
>
> Yet, I would still propose to introduce a constructor which allows to create
> instances of this class based on pre-existing resource / configuration 
> managers.

Ok, can you propose a change that will work for you and still keep these fields
"final"?

-Marshall
>  
>
> Cheers,
>
> -- Richard
>
> On 25.03.2015, at 15:29, Marshall Schor <[email protected]> wrote:
>
>> The mResourceManager and mConfigurationManager initialization were changed a 
>> few
>> releases ago as part of the work to make this area more thread safe, in 
>> support
>> of multi-threaded read-only access to a shared CAS.
>>
>> These variables were made "final", and the comment for RootUimaContext_impl 
>> says
>> (I hope it's correct :-) ) that making these final causes a memory barrier 
>> to be
>> inserted for them which in turn makes other access to them "safe" from other
>> threads without further synchronization.
>>
>> The method "initializeRoot" is in a package ending with the word "impl", 
>> which
>> says this is an internal implementation method, not part of the exposed API.
>> It's public because it is defined in the UimaContextAdmin "interface" and all
>> interface-style methods need to be public.
>>
>> I think this is left-over stuff from that earlier change in the way these two
>> things were initialized.  I think the method and the interface should 
>> probably
>> be updated to remove these two arguments.  (But that's low priority...)
>>
>> -Marshall
>>
>> On 3/24/2015 6:13 PM, Richard Eckart de Castilho wrote:
>>> Hi all,
>>>
>>> I wonder... what is the point of having a method allowing to initialize
>>> a UimaContext with a resource manager if in fact the code is commented out?
>>>
>>> See RootUimaContext_impl
>>>
>>>  public void initializeRoot(Logger aLogger, ResourceManager 
>>> aResourceManager,
>>>          ConfigurationManager aConfigurationManager) {
>>>    mLogger = aLogger;
>>> //    mResourceManager = aResourceManager;
>>> //    mConfigurationManager = aConfigurationManager;
>>>    mSession = new Session_impl();
>>>  }
>>>
>>> Cheers,
>>>
>>> -- Richard
>

Reply via email to