[ https://issues.apache.org/jira/browse/UIMA-5043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15416697#comment-15416697 ]
Richard Eckart de Castilho commented on UIMA-5043: -------------------------------------------------- Well, there are different types of end-users, annotation implementors are one. Pipeline implementors/deployers (that only use existing annotators) are an example of another kind of end-user. I think there should be a clear red flag that marks the boundary that marks that things are scoped differently. UIMAFramework for example has a global (static) scope. AFAIK UIMAContext is usually scoped to a component (which can be an aggregate). Putting the word "Thread" into "getThreadContext()" makes the scope of the returned context explicit: it is not the typical scope, but a thread scope. But considering this further, I believe that a UimaContextHolder following the pattern used by Spring for holding thread-bound contexts (they have many of them, e.g. SecurityContextHolder, LocaleContextHolder, RequestContextHolder, etc.) is a good solution: * it provides the clear read flag about scoping * it doesn't change the API of existing classes * it is very specifically focussed at solving the task of giving access to a context without explicit chaining or dependency injection There is already a getExternalOverrides() method in the UimaContextAdmin. So to complete the changes for the annotator implementer, that method should also be exposed through the UIMAContext interface. No matter what access path to thread-bound external overrides is implemented, the question remains what mechanisms can be used to set the overrides. I still think that setting external overrides through a static mechanism like system properties is not the way to go for UIMAJ-SDK. The mechanism to initialize the external overrides from whatever source should be invoked explicitly by the application/runtime context in which the UIMAJ-SDK is used, e.g. by UIMA-AS or UIMA-DUCC or some other kind of application/runtime that embeds the UIMAJ-SDK. The SDK can provide convenience methods to facilitate the initialization of the external overrides (i.e. Settings_impl.loadSystemDefaults()), but that method should not be called in Resource_ImplBase but rather in the code that triggers the creation of a component. > Provide method to access individual external override settings > -------------------------------------------------------------- > > Key: UIMA-5043 > URL: https://issues.apache.org/jira/browse/UIMA-5043 > Project: UIMA > Issue Type: Improvement > Components: Core Java Framework > Reporter: Burn Lewis > Assignee: Burn Lewis > Priority: Minor > Fix For: 2.9.0SDK > > > The framework loads the external override settings and uses them in any > configuration parameter that has an external override name attached, Users > have asked for the ability to access these values directly without the > indirection of configuration parameter entries in descriptors. Currently the > complete Settings object that holds all the external override settings loaded > by the framework is accessible via UimaContextAdmin. > An improvement would be to allow individual values to be read using a method > in the UimaContext interface, perhaps: > String getExternalOverride(String name) > String[] getExternalOverrideArray{String name) -- This message was sent by Atlassian JIRA (v6.3.4#6332)