[
https://issues.redhat.com/browse/WFWIP-312?page=com.atlassian.jira.plugin...
]
Petr Kremensky updated WFWIP-312:
---------------------------------
Description:
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-servle...
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-c4301c90ec39134...
{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.
was:
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-servle...
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-c4301c90ec39134...
{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.
*Reproduce:*
* start standalone server
* deploy [^source-names.war]
* curl
http://localhost:8080/source-names/servlet1
* see server logs
See [^source-names.zip] for sources.
[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
Attachments: source-names.war, source-names.zip
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-servle...
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-c4301c90ec39134...
{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)