You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by go...@hyperreal.org on 1999/11/05 06:35:02 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/core Constants.java Container.java Context.java LookupResult.java RequestMapper.java
gonzo 99/11/04 21:35:01
Modified: src/share/org/apache/tomcat/core Tag: TOMCAT_J2EE_10F_102199
Constants.java Container.java Context.java
LookupResult.java RequestMapper.java
Log:
feature:
jsp "servlet name" is available via the following
request attribute:
org.apache.tomcat.servlet.resolved
if the referenced jsp file is registered (ie web.xml)
the associated <servlet-name> will be returned,
regardless as to if the request was resolved against
an associated map or against the file directly [note:
due to an implementation detail this was trivial]
where as an un-registered jsp file will reflect the
file path
fix:
disable InvokerServlet
null pointer check - apm/indeer
note:
examples: pass
tests: pass
watchdog: 1 test failure -> negativeBeanName
it looks as though the /examples/servlets/index.html
and /examples/jsp/index.html have been modified such
that the img tags render invalid image access:
before:
<td width="30"><img src="../images/execute.gif"></td>
after:
<td WIDTH="30"><img SRC="execute.gif" ></td>
Revision Changes Path
No revision
No revision
1.2.2.4 +4 -4 jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v
retrieving revision 1.2.2.3
retrieving revision 1.2.2.4
diff -u -r1.2.2.3 -r1.2.2.4
--- Constants.java 1999/11/05 00:42:57 1.2.2.3
+++ Constants.java 1999/11/05 05:34:48 1.2.2.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v 1.2.2.3 1999/11/05 00:42:57 costin Exp $
- * $Revision: 1.2.2.3 $
- * $Date: 1999/11/05 00:42:57 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Constants.java,v 1.2.2.4 1999/11/05 05:34:48 gonzo Exp $
+ * $Revision: 1.2.2.4 $
+ * $Date: 1999/11/05 05:34:48 $
*
* ====================================================================
*
@@ -200,7 +200,7 @@
public static final String ERROR_MESSAGE =
"javax.servlet.error.message";
public static final String RESOLVED_SERVLET =
- "javax.servlet.resolved";
+ "org.apache.tomcat.servlet.resolved";
}
public static class Locale {
1.1.2.3 +18 -9 jakarta-tomcat/src/share/org/apache/tomcat/core/Container.java
Index: Container.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Container.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Container.java 1999/11/03 20:02:32 1.1.2.2
+++ Container.java 1999/11/05 05:34:48 1.1.2.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Container.java,v 1.1.2.2 1999/11/03 20:02:32 costin Exp $
- * $Revision: 1.1.2.2 $
- * $Date: 1999/11/03 20:02:32 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Container.java,v 1.1.2.3 1999/11/05 05:34:48 gonzo Exp $
+ * $Revision: 1.1.2.3 $
+ * $Date: 1999/11/05 05:34:48 $
*
* ====================================================================
*
@@ -266,7 +266,7 @@
if (sw != null &&
(path.length() > 0)) {
if (path.startsWith("/") &&
- path.endsWith("/*")){
+ path.endsWith("/*")){
prefixMappedServlets.put(path, sw);
} else if (path.startsWith("*.")) {
extensionMappedServlets.put(path, sw);
@@ -295,7 +295,7 @@
}
LookupResult lookupServlet(String lookupPath) {
- RequestMapper requestMapper = new RequestMapper();
+ RequestMapper requestMapper = new RequestMapper(this);
requestMapper.setPathMaps(pathMappedServlets);
requestMapper.setPrefixMaps(prefixMappedServlets);
@@ -304,7 +304,7 @@
LookupResult lookupResult =
requestMapper.lookupServlet(lookupPath);
- if (lookupResult == null) {
+ if (lookupResult == null) {
ServletWrapper wrapper = null;
if (defaultServlet != null) {
@@ -369,6 +369,11 @@
// XXX
// check for duplicates!
+ if (servlets.get(name) != null) {
+ removeServlet(name);
+ removeServletByName(name);
+ }
+
ServletWrapper wrapper = new ServletWrapper(this);
wrapper.setServletName(name);
@@ -438,9 +443,10 @@
while (enum.hasMoreElements()) {
String key = (String)enum.nextElement();
ServletWrapper sw = (ServletWrapper)servlets.get(key);
+
- if (sw.getServletClass() != null &&
- sw.getServletClass().equals(name)) {
+ if (sw.getServletClass() != null &&
+ sw.getServletClass().equals(name)) {
servletWrappers.addElement(sw);
}
}
@@ -452,8 +458,11 @@
return wrappers;
}
+
+ // XXX
+ // made package protected so that RequestMapper can have access
- private ServletWrapper[] getServletsByPath(String path) {
+ ServletWrapper[] getServletsByPath(String path) {
Vector servletWrappers = new Vector();
Enumeration enum = servlets.keys();
1.5.2.6 +7 -4 jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java
Index: Context.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v
retrieving revision 1.5.2.5
retrieving revision 1.5.2.6
diff -u -r1.5.2.5 -r1.5.2.6
--- Context.java 1999/11/03 20:02:33 1.5.2.5
+++ Context.java 1999/11/05 05:34:48 1.5.2.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v 1.5.2.5 1999/11/03 20:02:33 costin Exp $
- * $Revision: 1.5.2.5 $
- * $Date: 1999/11/03 20:02:33 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v 1.5.2.6 1999/11/05 05:34:48 gonzo Exp $
+ * $Revision: 1.5.2.6 $
+ * $Date: 1999/11/05 05:34:48 $
*
* ====================================================================
*
@@ -635,7 +635,10 @@
request.setServletPath(result.getServletPath());
request.setPathInfo(result.getPathInfo());
- if (result.getMappedPath() != null) {
+ if (result.getResolvedServlet() != null) {
+ request.setAttribute(Constants.Attribute.RESOLVED_SERVLET,
+ result.getResolvedServlet());
+ } else if (result.getMappedPath() != null) {
request.setAttribute(Constants.Attribute.RESOLVED_SERVLET,
result.getMappedPath());
} else {
1.1.2.1 +15 -6 jakarta-tomcat/src/share/org/apache/tomcat/core/LookupResult.java
Index: LookupResult.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/LookupResult.java,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- LookupResult.java 1999/10/09 00:30:14 1.1
+++ LookupResult.java 1999/11/05 05:34:49 1.1.2.1
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/LookupResult.java,v 1.1 1999/10/09 00:30:14 duncan Exp $
- * $Revision: 1.1 $
- * $Date: 1999/10/09 00:30:14 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/LookupResult.java,v 1.1.2.1 1999/11/05 05:34:49 gonzo Exp $
+ * $Revision: 1.1.2.1 $
+ * $Date: 1999/11/05 05:34:49 $
*
* ====================================================================
*
@@ -76,20 +76,25 @@
private String servletPath = null;
private String mappedPath = null;
private String pathInfo = null;
+ private String resolvedServlet = null;
LookupResult(ServletWrapper wrapper, String servletPath,
String pathInfo) {
- this.wrapper = wrapper;
- this.servletPath = servletPath;
- this.pathInfo = pathInfo;
+ this(wrapper, servletPath, null, pathInfo, null);
}
LookupResult(ServletWrapper wrapper, String servletPath,
String mappedPath, String pathInfo) {
+ this(wrapper, servletPath, mappedPath, pathInfo, null);
+ }
+
+ LookupResult(ServletWrapper wrapper, String servletPath,
+ String mappedPath, String pathInfo, String resolvedServlet) {
this.wrapper = wrapper;
this.servletPath = servletPath;
this.mappedPath = mappedPath;
this.pathInfo = pathInfo;
+ this.resolvedServlet = resolvedServlet;
}
ServletWrapper getWrapper() {
@@ -106,5 +111,9 @@
String getPathInfo() {
return pathInfo;
+ }
+
+ String getResolvedServlet() {
+ return resolvedServlet;
}
}
1.2.2.4 +23 -6 jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java
Index: RequestMapper.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v
retrieving revision 1.2.2.3
retrieving revision 1.2.2.4
diff -u -r1.2.2.3 -r1.2.2.4
--- RequestMapper.java 1999/11/05 00:43:02 1.2.2.3
+++ RequestMapper.java 1999/11/05 05:34:49 1.2.2.4
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v 1.2.2.3 1999/11/05 00:43:02 costin Exp $
- * $Revision: 1.2.2.3 $
- * $Date: 1999/11/05 00:43:02 $
+ * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/RequestMapper.java,v 1.2.2.4 1999/11/05 05:34:49 gonzo Exp $
+ * $Revision: 1.2.2.4 $
+ * $Date: 1999/11/05 05:34:49 $
*
* ====================================================================
*
@@ -74,6 +74,7 @@
*/
public class RequestMapper {
+ private Container container = null;
private Hashtable prefixMaps = null;
private Hashtable extensionMaps = null;
private Hashtable pathMaps = null;
@@ -82,7 +83,8 @@
private String pathInfo = null;
private String resourceName = null;
- RequestMapper() {
+ RequestMapper(Container container) {
+ this.container = container;
}
void setPathMaps(Hashtable pathMaps) {
@@ -103,9 +105,11 @@
if (wrapper != null) {
this.mapPath = getMapPath(wrapper);
+ String resolvedServlet = getResolvedServlet(this.mapPath);
lookupResult = new LookupResult(wrapper,
- this.servletPath, this.mapPath, this.pathInfo);
+ this.servletPath, this.mapPath, this.pathInfo,
+ resolvedServlet);
}
return lookupResult;
@@ -237,7 +241,8 @@
this.resourceName = this.servletPath;
while (stillSearching) {
- if (wrapper.getPath() != null &&
+ if (wrapper != null &&
+ wrapper.getPath() != null &&
wrapper.getServletClass() == null) {
this.resourceName = wrapper.getPath();
wrapper = getMatch(wrapper.getPath() +
@@ -294,5 +299,17 @@
}
return mapPath;
+ }
+
+ private String getResolvedServlet(String path) {
+ String resolvedServlet = null;
+ ServletWrapper[] sw = this.container.getServletsByPath(path);
+
+ if (sw.length > 0) {
+ // assume one
+ resolvedServlet = sw[0].getServletName();
+ }
+
+ return resolvedServlet;
}
}