Bug 56588 - ApplicationListener#pluggabilityBlocked field is always "false" in Tomcat 8
Summary: ApplicationListener#pluggabilityBlocked field is always "false" in Tomcat 8
Alias: None
Product: Tomcat 8
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 8.0.8
Hardware: PC All
: P2 normal (vote)
Target Milestone: ----
Assignee: Tomcat Developers Mailing List
Depends on:
Reported: 2014-06-04 12:46 UTC by Konstantin Kolinko
Modified: 2014-06-05 12:46 UTC (History)
0 users


Note You need to log in before you can comment on or make changes to this bug.
Description Konstantin Kolinko 2014-06-04 12:46:07 UTC
(Noted when reviewing bug 55282 and its fix - r1597855 )

Apart from ~42 references in text code, the o.a.t.util.descriptor.web.ApplicationListener constructor is called in only one place and in that place [1] the pluggabilityBlocked argument is always "false".

[1] org.apache.catalina.startup.ContextConfig#configureContext(WebXml)

Originally this feature was added in r1492307 and this the second constructor argument was named "fromTLD". The feature is that listeners added by TLD scanning do not have access to all configuration APIs.

In Tomcat 8 Jasper now initializes itself via JasperInitializer.onStartup() and adds TLD listeners via ServletContext.addListener(String) calls.

1. I suspect that the feature implemented by r1492307 may be currently broken which means that listeners defined in TLDs have access to full API.

2. ApplicationListener.pluggabilityBlocked field and a bunch of code can be removed.
Comment 1 Mark Thomas 2014-06-04 19:43:21 UTC
The feature isn't broken. The original fix included a test that still passes. It works because all listeners added via ServletContext.addListener() are blocked from using pluggability features.

I agree there is some unused code we can remove.
Comment 2 Mark Thomas 2014-06-04 21:19:20 UTC
Fixed in 8.0.x for 8.0.9 onwards.
Comment 3 Konstantin Kolinko 2014-06-05 12:46:16 UTC
Ack. I see.
In StandardContext.listenerStart() the listeners that have been already configured before (via ServletContext API) are added to 'noPluggabilityListeners' set. That does the trick.

I updated deprecation markers on o.a.c.Context methods in Tomcat 7 in r1600638. It will be in 7.0.55.