[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
Fri Apr 24 07:41:00 EDT 2020


Petr Kremensky created WFWIP-312:
------------------------------------

             Summary: [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


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 will use the fields provided in the name.

I'll add sources in a minute...






--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the jboss-jira mailing list