[jboss-jira] [JBoss JIRA] (WFWIP-312) [EAP7-1386] servletContext and servletConfig in config provider names are always null
Petr Kremensky (Jira)
issues at jboss.org
Mon May 11 07:27:00 EDT 2020
[ https://issues.redhat.com/browse/WFWIP-312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Petr Kremensky resolved WFWIP-312.
----------------------------------
Resolution: Done
[~ron_sigal] Thanks again for a test coverage!
Verifying the issue:
{code}
3.12_2406 85f48041e [ronsigal/3.12_2406] Merge branch '3.12' into 3.12_2406
{code}
I've removed the reproducer, which was not reproducing the issue at all :) (one can use the test cases Ron authored to reproduce the issue)
> [EAP7-1386] servletContext and servletConfig in config provider names are always null
> -------------------------------------------------------------------------------------
>
> Key: WFWIP-312
> URL: https://issues.redhat.com/browse/WFWIP-312
> Project: WildFly WIP
> Issue Type: Quality Risk
> Reporter: Petr Kremensky
> Assignee: Ronald Sigal
> Priority: Major
>
> I've noticed that names of additional config sources provided by EAP7-1386 are always:
> {noformat}
> null:null:ServletConfigSource
> null:null:FilterConfigSource
> null:ServletContextConfigSource
> {noformat}
> I've tried to enhance the https://www.geeksforgeeks.org/difference-between-servletconfig-and-servletcontext-in-java-servlet/ example with MP config, to get the different names
> Servlet additions:
> {code:java}
> System.out.println("-------------------------------------");
> System.out.println("Servlet context name: " + getServletContext().getServletContextName());
> System.out.println("Servlet virtual server name: " + getServletContext().getVirtualServerName());
> System.out.println("Servlet name from servlet config: " + getServletConfig().getServletName());
> System.out.println("Servlet name: " + getServletName());
> System.out.println("Servlet info: " + getServletInfo());
> ConfigProvider.getConfig().getConfigSources().forEach(configSource -> {
> System.out.println("=================================");
> System.out.println(configSource.getName());
> System.out.println(configSource.getOrdinal());
> System.out.println("Property names: " + configSource.getPropertyNames().stream().collect(Collectors.joining(", ")));
> });
> System.out.println("-------------------------------------");
> {code}
> web.xml addition
> {code:xml}
> <web-app>
> + <display-name>test</display-name>
> ...
> {code}
> server output:
> {noformat}
> -------------------------------------
> Servlet context name: test
> Servlet virtual server name: default-host
> Servlet name from servlet config: recruiter
> Servlet name: recruiter
> Servlet info:
> =================================
> SysPropConfigSource
> 400
> Property names: [Standalone], awt.toolkit, java.specification.version ...
> =================================
> EnvConfigSource
> 300
> Property names: PATH, ...
> =================================
> null:null:ServletConfigSource
> 60
> Property names:
> =================================
> null:null:FilterConfigSource
> 50
> Property names:
> =================================
> null:ServletContextConfigSource
> 40
> Property names:
> -------------------------------------
> {noformat}
> Looking into sources https://github.com/resteasy/Resteasy/pull/2250/files#diff-c4301c90ec3913499dfd71e2507e471bR51
> {code:java}
> @Override
> public String getName() {
> if (name == null) {
> synchronized(this) {
> if (name == null) {
> ServletContext servletContext = ResteasyProviderFactory.getContextData(ServletContext.class);
> ServletConfig servletConfig = ResteasyProviderFactory.getContextData(ServletConfig.class);
> StringBuilder sb = new StringBuilder();
> name = sb.append(servletContext != null ? servletContext.getServletContextName() : null).append(":")
> .append(servletConfig != null ? servletConfig.getServletName() : null)
> .append(":ServletConfigSource").toString();
> }
> }
> }
> return name;
> }
> {code}
> My simple-minded expectation would be that the config sources name will use the fields provided in web.xml.
> *Reproduce:*
> * start standalone server
> * deploy [^source-names.war]
> * curl http://localhost:8080/source-names/servlet1
> * see server logs
> See [^source-names.zip] for sources.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)
More information about the jboss-jira
mailing list