Author: markt
Date: Mon Jan 7 19:10:28 2013
New Revision: 1429970
URL: http://svn.apache.org/viewvc?rev=1429970&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54284
As per clarification from the Servlet EG, anonymous Filters and Servlets are
not permitted.
Patch by Violeta Georgieva.
Added:
tomcat/tc7.0.x/trunk/test/org/apache/catalina/deploy/TestFilterDef.java
- copied unchanged from r1429969,
tomcat/trunk/test/org/apache/catalina/deploy/TestFilterDef.java
tomcat/tc7.0.x/trunk/test/org/apache/catalina/deploy/TestServletDef.java
- copied unchanged from r1429969,
tomcat/trunk/test/org/apache/catalina/deploy/TestServletDef.java
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/FilterDef.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/ServletDef.java
tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1429969
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
Mon Jan 7 19:10:28 2013
@@ -944,6 +944,11 @@ public class ApplicationContext
private FilterRegistration.Dynamic addFilter(String filterName,
String filterClass, Filter filter) throws IllegalStateException {
+ if (filterName == null || filterName.equals("")) {
+ throw new IllegalArgumentException(sm.getString(
+ "applicationContext.invalidFilterName", filterName));
+ }
+
if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
//TODO Spec breaking enhancement to ignore this restriction
throw new IllegalStateException(
@@ -1084,6 +1089,11 @@ public class ApplicationContext
private ServletRegistration.Dynamic addServlet(String servletName,
String servletClass, Servlet servlet) throws IllegalStateException
{
+ if (servletName == null || servletName.equals("")) {
+ throw new IllegalArgumentException(sm.getString(
+ "applicationContext.invalidServletName", servletName));
+ }
+
if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
//TODO Spec breaking enhancement to ignore this restriction
throw new IllegalStateException(
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
Mon Jan 7 19:10:28 2013
@@ -21,6 +21,8 @@ applicationContext.addListener.ise=Liste
applicationContext.addRole.ise=Roles can not be added to context {0} as the
context has been initialised
applicationContext.addServlet.ise=Servlets can not be added to context {0} as
the context has been initialised
applicationContext.attributeEvent=Exception thrown by attributes event listener
+applicationContext.invalidFilterName=Unable to add filter definition due to
invalid filter name [{0}].
+applicationContext.invalidServletName=Unable to add servlet definition due to
invalid servlet name [{0}].
applicationContext.mapping.error=Error during mapping
applicationContext.requestDispatcher.iae=Path {0} does not start with a "/"
character
applicationContext.resourcePaths.iae=Path {0} does not start with a "/"
character
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/FilterDef.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/FilterDef.java?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/FilterDef.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/FilterDef.java Mon Jan
7 19:10:28 2013
@@ -25,6 +25,8 @@ import java.util.Map;
import javax.servlet.Filter;
+import org.apache.tomcat.util.res.StringManager;
+
/**
* Representation of a filter definition for a web application, as represented
@@ -38,6 +40,9 @@ public class FilterDef implements Serial
private static final long serialVersionUID = 1L;
+ private static final StringManager sm =
+ StringManager.getManager(Constants.Package);
+
// ------------------------------------------------------------- Properties
@@ -108,6 +113,10 @@ public class FilterDef implements Serial
}
public void setFilterName(String filterName) {
+ if (filterName == null || filterName.equals("")) {
+ throw new IllegalArgumentException(
+ sm.getString("filterDef.invalidFilterName", filterName));
+ }
this.filterName = filterName;
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/LocalStrings.properties?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
(original)
+++
tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/LocalStrings.properties
Mon Jan 7 19:10:28 2013
@@ -12,6 +12,9 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+filterDef.invalidFilterName=Invalid <filter-name> [{0}] in filter definition.
+
+servletDef.invalidServletName=Invalid <servlet-name> [{0}] in servlet
definition.
webXml.duplicateEnvEntry=Duplicate env-entry name [{0}]
webXml.duplicateFilter=Duplicate filter name [{0}]
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/ServletDef.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/ServletDef.java?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/ServletDef.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/deploy/ServletDef.java Mon
Jan 7 19:10:28 2013
@@ -25,6 +25,8 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.apache.tomcat.util.res.StringManager;
+
/**
* Representation of a servlet definition for a web application, as represented
@@ -35,6 +37,9 @@ public class ServletDef implements Seria
private static final long serialVersionUID = 1L;
+ private static final StringManager sm =
+ StringManager.getManager(Constants.Package);
+
// ------------------------------------------------------------- Properties
@@ -104,6 +109,10 @@ public class ServletDef implements Seria
}
public void setServletName(String servletName) {
+ if (servletName == null || servletName.equals("")) {
+ throw new IllegalArgumentException(
+ sm.getString("servletDef.invalidServletName",
servletName));
+ }
this.servletName = servletName;
}
Modified:
tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java
(original)
+++
tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java
Mon Jan 7 19:10:28 2013
@@ -18,6 +18,9 @@ package org.apache.catalina.core;
import java.io.File;
+import javax.servlet.Filter;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import org.junit.Assert;
@@ -69,4 +72,40 @@ public class TestApplicationContext exte
Assert.assertEquals(HttpServletResponse.SC_OK, rc);
Assert.assertTrue(res.toString().contains("<p>OK</p>"));
}
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testAddFilterWithFilterNameNull() {
+ getServletContext().addFilter(null, (Filter) null);
+ }
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testAddFilterWithFilterNameEmptyString() {
+ getServletContext().addFilter("", (Filter) null);
+ }
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testAddServletWithServletNameNull() {
+ getServletContext().addServlet(null, (Servlet) null);
+ }
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testAddServletWithServletNameEmptyString() {
+ getServletContext().addServlet("", (Servlet) null);
+ }
+
+
+ private ServletContext getServletContext() {
+ Tomcat tomcat = getTomcatInstance();
+
+ File appDir = new File("test/webapp-3.0");
+ // app dir is relative to server home
+ StandardContext standardContext = (StandardContext) tomcat.addWebapp(
+ null, "/test", appDir.getAbsolutePath());
+
+ return standardContext.getServletContext();
+ }
}
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1429970&r1=1429969&r2=1429970&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Jan 7 19:10:28 2013
@@ -99,6 +99,11 @@
Georgieva. (markt)
</fix>
<fix>
+ <bug>54284</bug>: As per clarification from the Servlet EG, anonymous
+ Filters and Servlets are not permitted. Patch by Violeta Georgieva.
+ (markt)
+ </fix>
+ <fix>
<bug>54371</bug>: Prevent exceptions when processing web fragments for
unexpanded WAR files when the context path contains characters that
need to be encoded in URLs such as spaces. Patch provided by Polina
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]