]
Paul Ferraro moved JBEAP-10269 to WFLY-8553:
--------------------------------------------
Project: WildFly (was: JBoss Enterprise Application Platform)
Key: WFLY-8553 (was: JBEAP-10269)
Workflow: GIT Pull Request workflow (was: CDW with loose statuses v1)
Component/s: Naming
(was: Naming)
Affects Version/s: 11.0.0.Alpha1
(was: 7.1.0.DR16)
Adding external contexts breaks resolution of non-external on demand
resources
------------------------------------------------------------------------------
Key: WFLY-8553
URL:
https://issues.jboss.org/browse/WFLY-8553
Project: WildFly
Issue Type: Bug
Components: Naming
Affects Versions: 11.0.0.Alpha1
Reporter: Paul Ferraro
Assignee: David Lloyd
Priority: Critical
The logic in ContextNames.BindInfo.setupLookupInjection(...) does not correctly establish
dependencies for non-external context in the presence of external contexts.
Take the resource: java:jboss/infinispan/cache/mycontainer/mycache
The service registered under this name is installed on-demand. When no external contexts
are defined, ExternalContexts.getParentExternalContext(...) returns null and the
dependency is established correctly. However, when there are external contexts whose name
is lexicographically larger than the external context, the
ExternalContexts.getParentExternalContext(...) returns the ServiceName of the
lexicographically smallest external context, i.e. the result of NavigableSet.lower(...),
where the set contains the ServiceName of all external contexts. Therefore, if a user
defines an external context with name "java:global/foo", a call to
ContextNames.BindInfo.setupLookupInjection(...) for the jndi name above will establish a
dependency on "java:global/foo" instead of the correct service name
corresponding to the non-external context.