Author: markt
Date: Wed Feb 15 20:57:36 2012
New Revision: 1244718
URL: http://svn.apache.org/viewvc?rev=1244718&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=52669
Correct regression introduced by the invalid assumptions made in the
hack for Eclipse to address
https://issues.apache.org/bugzilla/show_bug.cgi?id=51741
Modified:
tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1244718&r1=1244717&r2=1244718&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed Feb 15
20:57:36 2012
@@ -1156,6 +1156,8 @@ public class ContextConfig implements Li
parseWebXml(contextWebXml, webXml, false);
if (webXml.getMajorVersion() >= 3) {
+ ServletContext sContext = context.getServletContext();
+
// Ordering is important here
// Step 1. Identify all the JARs packaged with the application
@@ -1178,6 +1180,9 @@ public class ContextConfig implements Li
// Step 4. Process /WEB-INF/classes for annotations
// This will add any matching classes to the typeInitializerMap
if (ok) {
+ // Hack required by Eclipse's "serve modules without
+ // publishing" feature since this backs WEB-INF/classes by
+ // multiple locations rather than one.
NamingEnumeration<Binding> listBindings = null;
try {
try {
@@ -1190,9 +1195,20 @@ public class ContextConfig implements Li
listBindings.hasMoreElements()) {
Binding binding = listBindings.nextElement();
if (binding.getObject() instanceof FileDirContext)
{
- File webInfCLassDir = new File(
+ File webInfClassDir = new File(
((FileDirContext)
binding.getObject()).getDocBase());
- processAnnotationsFile(webInfCLassDir, webXml);
+ processAnnotationsFile(webInfClassDir, webXml);
+ } else {
+ String resource =
+ "/WEB-INF/classes/" +
binding.getName();
+ try {
+ URL url = sContext.getResource(resource);
+ processAnnotationsUrl(url, webXml);
+ } catch (MalformedURLException e) {
+ log.error(sm.getString(
+ "contextConfig.webinfClassesUrl",
+ resource), e);
+ }
}
}
} catch (NamingException e) {
@@ -1236,9 +1252,9 @@ public class ContextConfig implements Li
// from having to re-generate it.
// TODO Use a ServletContainerInitializer for Jasper
String mergedWebXml = webXml.toXml();
- context.getServletContext().setAttribute(
+ sContext.setAttribute(
org.apache.tomcat.util.scan.Constants.MERGED_WEB_XML,
- mergedWebXml);
+ mergedWebXml);
if (context.getLogEffectiveWebXml()) {
log.info("web.xml:\n" + mergedWebXml);
}
Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=1244718&r1=1244717&r2=1244718&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Wed
Feb 15 20:57:36 2012
@@ -60,7 +60,7 @@ contextConfig.stop=ContextConfig: Proces
contextConfig.unavailable=Marking this application unavailable due to previous
error(s)
contextConfig.unknownUrlProtocol=The URL protocol [{0}] was not recognised
during annotation processing. URL [{1}] was ignored.
contextConfig.urlPatternValue=Both the UrlPattern and value attribute were set
for the WebServlet annotation on class [{0}]
-contextConfig.webinfClassesUrl=Unable to determine URL for WEB-INF/classes
+contextConfig.webinfClassesUrl=Unable to determine URL for [{0}]
contextConfig.xmlSettings=Context [{0}] will parse web.xml and
web-fragment.xml files with validation:{1} and namespaceAware:{2}
embedded.noEngines=No engines have been defined yet
embedded.notmp=Cannot find specified temporary folder at {0}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]