DO NOT REPLY [Bug 10407] - Tomcat Memory Management

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10407.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10407

Tomcat Memory Management





--- Additional Comments From [EMAIL PROTECTED]  2003-01-29 08:03 ---
Hi,
 We tried calling System.gc() explicitly and it seems to work, at least in 
windows. Hope this works for others too.

regards, 

Srikanth. S

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16531] New: - Updating already deployed .war files in a single step

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16531.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16531

Updating already deployed .war files in a single step

   Summary: Updating already deployed .war files in a single step
   Product: Tomcat 4
   Version: 4.1.20
  Platform: All
OS/Version: All
Status: NEW
  Severity: Enhancement
  Priority: Other
 Component: Unknown
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


After a WAR file is deployed and unpacked by Tomcat, irrespective of the value 
of the unpackWARs attribute in server.xml, replacing the WAR file with a 
newer version (an upgrade) does nothing, because a newer version of the WAR
file is ignored if any previous version has already been unpacked (until the
unpacked files are deleted).  If the WAR file is updated, it's *probably*
safe to assume that this was done voluntarily, and so any previous unpacked
version should be removed then replaced.

This was discussed on the tomcat-dev mailing list on 22nd January 2002.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16532] New: - TagLibraryInfoImpl produces NullPointerException

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16532.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16532

TagLibraryInfoImpl produces NullPointerException

   Summary: TagLibraryInfoImpl produces NullPointerException
   Product: Tomcat 4
   Version: 4.1.12
  Platform: Other
OS/Version: Other
Status: NEW
  Severity: Normal
  Priority: Other
 Component: Jasper 2
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


I ran JspC via the ant-task proposed by the JavaDocs (taskdef 
classname=org.apache.jasper.JspC name=jasper2/) on a I think quite normal webapp 
like 
so:
jasper2 verbose=0
  uriroot=${webapp.dir}
  outputDir=${jsp.output.dir}
  
classDebugInfo=true
  compile=true/
(running directly from jspc.sh made no 
difference to the problem.)

But this failed at the first file with a NullPointerException in 
TagLibraryInfoImpl around line 212, which is a catch clause stating
Constants.message(

jsp.error.taglib.jarFileException,
new Object[] {url.toString(), 
ex.getMessage()},
Logger.ERROR);

But url is null in my situation.
I investigated 
the cause and found it to be around line 192 which says
if(ctxt.getClassLoader() != null 
  
URLClassLoader.class.equals(ctxt.getClassLoader().getClass())
   
path.startsWith(/))
  path = path.substring(1,path.length());

In my situation this 
resulted in the paths to JARs of taglibs I use to be truncated from 
/WEB-INF/lib/thejar.jar to 
WEB-INF/lib/thejar.jar, which in turn of course causes a MalformedURLException at 
the next 
line,
url = ctxt.getResource(path);
which is caught at the well-known catch-clause - but url is 
null!

Frankly, I don't understand the URLClassLoader thing at all, but what I do understand 
is that the catch-clause, which would have reported the malformed URL or some other 
useful 
Exception containing information about the problem at hand, instead produces a 
genuinely 
unhelpful NullPointerException.

What confuses me most, though, is this: after I removed 
the URLClassloader-statements, JspC compiled my webapp just fine...

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16331] - don't override the default port for the channelSocket

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16331.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16331

don't override the default port for the channelSocket

[EMAIL PROTECTED] changed:

   What|Removed |Added

   Severity|Normal  |Minor
   Priority|Other   |Low
Version|4.1.19  |4.1.18

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




? to find servlets and their cpu usage at runtime

2003-01-29 Thread gautamjha
I want to find the names of servlets running on the tomcat 4.0 server at a 
particular time with their corresponding CPU usage.
Please send me either some tool available or some way of doing this


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[GUMP] Build Failure - jakarta-tomcat-jk-ant

2003-01-29 Thread Craig McClanahan

This email is autogenerated from the output from:
http://cvs.apache.org/builds/gump/2003-01-29/jakarta-tomcat-jk-ant.html


Buildfile: build.xml does not exist!
Build failed

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Ap..cache

2003-01-29 Thread Fabio Salvi
Hi all,

recently I've been thinking about a way to implement a cache mechanism in 
Apache-Tomcat interaction (e.g. ajp13). I'd be really grateful if you gave me some 
suggestions or advice on the matter. Below I shortly describe what I've built as a 
kind of prototype.

To sum up, I've modified mod_jk (win2000) in some points in order to make it 
cache-aware. I've introduced in httpd.conf the following directives:

#
# normal jk directives
#
JkMount /*.jsp ajp13

#Cache extensions
JkCache on
JkCacheDirectory C:\cache

This is, basically, the collaboration diagram I've implemented:

·   mod_jk intercepts request for /pippo/cachetest.jsp;
·   mod_jk asks Tomcat, at the moment actually a WebApp controller, for a list of 
dirty items in cache folder;
·   then, mod_jk deletes dirty-bit pages in the cache;
·   now mod_jk manages current request. If it finds the page in the cache it 
returns static file to Apache.
·   Otherwise it requires the resource back to the WebApp controller. The latter 
knows if the page is to be cached and  puts a special tag on the byte stream in 
response, after having dynamically built it;
·   mod_jk receives the response and if it does contain the above mentioned tag, 
mod_jk writes it in the cache folder   before sending it to Apache. If there's a 
query string, it'll include it in the static resource name.

The second and third steps are an overload respect to normal interaction, but that 
permits to save a lot of elaborating time and network roundtrips when you ask for a 
very heavy resource (e.g a jsp which loads many non-volatile and quite stable data 
from a db).
All that seems to work fine...According to your opinion is a worth-to-develop idea?

Thanks in advance for your advise!
Fabio

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




RE: ? to find servlets and their cpu usage at runtime

2003-01-29 Thread Mladen Turk

Here is what my mail server said about you ;).

 -Original Message-
 From: gautamjha [mailto:[EMAIL PROTECTED]] 
 Sent: Wednesday, January 29, 2003 10:57 AM
 To: [EMAIL PROTECTED]
 Subject: *SPAM* ? to find servlets and their cpu 
 usage at runtime
 
 SPAM: See http://spamassassin.org/tag/ for more details.
 SPAM: 
 SPAM: Content analysis details:   (7.20 hits, 5 required)
 SPAM: RCVD_IN_ORBS   (2.2 points)  RBL: Received via a 
 relay in orbs.dorkslayers.com
 SPAM:[RBL check: found 
 97.102.86.203.orbs.dorkslayers.com.]
 SPAM: RCVD_IN_OSIRUSOFT_COM (0.4 points)  RBL: Received via a 
 relay in relays.osirusoft.com
 SPAM:[RBL check: found 
 97.102.86.203.relays.osirusoft.com., type: 127.0.0.4]
 SPAM: X_OSIRU_SPAM_SRC   (2.7 points)  RBL: DNSBL: sender is 
 Confirmed Spam Source
 
 I want to find the names of servlets running on the tomcat 
 4.0 server at a 
 particular time with their corresponding CPU usage.
 Please send me either some tool available or some way of doing this
 

MT.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 9931] - Base64 decoder chokes on a whitespace: FASTER?

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9931.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9931

Base64 decoder chokes on a whitespace: FASTER?





--- Additional Comments From [EMAIL PROTECTED]  2003-01-29 12:30 ---
I've just been bitten by this bug. Nice to see the patch is available, but I
would like to call your attention to RFC2045:

  The encoded output stream must be represented in lines of no more
   than 76 characters each.  All line breaks or other characters not
   found in Table 1 must be ignored by decoding software.  In base64
   data, characters other than those in Table 1, line breaks, and other
   white space probably indicate a transmission error, about which a
   warning message or even a message rejection might be appropriate
   under some circumstances.

So, it seems discardWhitespace() should either discard all non-base64 characters
or throw an exception. As the patch stands, other invalid characters will still
silently corrupt the data.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina Wrapper.java

2003-01-29 Thread remm
remm2003/01/29 04:41:47

  Modified:catalina/src/share/org/apache/catalina Wrapper.java
  Log:
  - Add a way to get the mappings associated with a wrapper (there was none
which of course is a problem unless the mapper is the context itself).
  
  Revision  ChangesPath
  1.2   +26 -4 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Wrapper.java
  
  Index: Wrapper.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Wrapper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Wrapper.java  18 Jul 2002 16:47:38 -  1.1
  +++ Wrapper.java  29 Jan 2003 12:41:47 -  1.2
  @@ -205,6 +205,14 @@
   
   
   /**
  + * Add a mapping associated with the Wrapper.
  + * 
  + * @param pattern The new wrapper mapping
  + */
  +public void addMapping(String mapping);
  +
  +
  +/**
* Add a new security role reference record to the set of records for
* this servlet.
*
  @@ -260,6 +268,12 @@
   
   
   /**
  + * Return the mappings associated with this wrapper.
  + */
  +public String[] findMappings();
  +
  +
  +/**
* Return the security role link for the specified security role
* reference name, if any; otherwise return codenull/code.
*
  @@ -302,6 +316,14 @@
* @param listener The listener to remove
*/
   public void removeInstanceListener(InstanceListener listener);
  +
  +
  +/**
  + * Remove a mapping associated with the wrapper.
  + *
  + * @param mapping The pattern to remove
  + */
  +public void removeMapping(String mapping);
   
   
   /**
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core StandardWrapper.java

2003-01-29 Thread remm
remm2003/01/29 04:42:21

  Modified:catalina/src/share/org/apache/catalina/core
StandardWrapper.java
  Log:
  - Add a way to get the mappings associated with a wrapper (there was none
which of course is a problem unless the mapper is the context itself).
  
  Revision  ChangesPath
  1.14  +53 -4 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
  
  Index: StandardWrapper.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- StandardWrapper.java  27 Jan 2003 23:33:10 -  1.13
  +++ StandardWrapper.java  29 Jan 2003 12:42:20 -  1.14
  @@ -66,6 +66,7 @@
   
   
   import java.io.PrintStream;
  +import java.util.ArrayList;
   import java.util.Enumeration;
   import java.util.HashMap;
   import java.util.Stack;
  @@ -187,6 +188,12 @@
   
   
   /**
  + * Mappings associated with the wrapper.
  + */
  +private ArrayList mappings = new ArrayList();
  +
  +
  +/**
* The initialization parameters for this servlet, keyed by
* parameter name.
*/
  @@ -620,6 +627,21 @@
   
   
   /**
  + * Add a mapping associated with the Wrapper.
  + * 
  + * @param pattern The new wrapper mapping
  + */
  +public void addMapping(String mapping) {
  +
  +synchronized (mappings) {
  +mappings.add(mapping);
  +}
  +fireContainerEvent(addMapping, mapping);
  +
  +}
  +
  +
  +/**
* Add a new security role reference record to the set of records for
* this servlet.
*
  @@ -776,6 +798,18 @@
   
   
   /**
  + * Return the mappings associated with this wrapper.
  + */
  +public String[] findMappings() {
  +
  +synchronized (mappings) {
  +return (String[]) mappings.toArray(new String[mappings.size()]);
  +}
  +
  +}
  +
  +
  +/**
* Return the security role link for the specified security role
* reference name, if any; otherwise return codenull/code.
*
  @@ -1041,6 +1075,21 @@
   public void removeInstanceListener(InstanceListener listener) {
   
   instanceSupport.removeInstanceListener(listener);
  +
  +}
  +
  +
  +/**
  + * Remove a mapping associated with the wrapper.
  + *
  + * @param mapping The pattern to remove
  + */
  +public void removeMapping(String mapping) {
  +
  +synchronized (mappings) {
  +mappings.remove(mapping);
  +}
  +fireContainerEvent(removeMapping, mapping);
   
   }
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11 Http11Processor.java

2003-01-29 Thread remm
remm2003/01/29 04:43:26

  Modified:http11/src/java/org/apache/coyote/http11
Http11Processor.java
  Log:
  - Don't generate useless garbage in the critical path (if the value is used later,
toString can be called on the object).
  
  Revision  ChangesPath
  1.58  +1 -1  
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java
  
  Index: Http11Processor.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- Http11Processor.java  20 Jan 2003 23:47:05 -  1.57
  +++ Http11Processor.java  29 Jan 2003 12:43:26 -  1.58
  @@ -582,7 +582,7 @@
   socket.setSoTimeout(soTimeout);
   }
   inputBuffer.parseRequestLine();
  -thrA.setParam( threadPool, request.requestURI().toString());
  +thrA.setParam( threadPool, request.requestURI() );
   keptAlive = true;
   if (!disableUploadTimeout) {
   socket.setSoTimeout(timeout);
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper Mapper.java

2003-01-29 Thread remm
remm2003/01/29 04:45:33

  Modified:util/java/org/apache/tomcat/util/http/mapper Mapper.java
  Log:
  - Allow URI to grow.
  
  Revision  ChangesPath
  1.2   +2 -0  
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java
  
  Index: Mapper.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Mapper.java   28 Jan 2003 18:14:51 -  1.1
  +++ Mapper.java   29 Jan 2003 12:45:33 -  1.2
  @@ -370,6 +370,8 @@
  MappingData mappingData)
   throws Exception {
   
  +uri.setLimit(-1);
  +
   Context[] contexts = null;
   Context context = null;
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina HttpRequest.java

2003-01-29 Thread remm
remm2003/01/29 04:49:32

  Modified:catalina/src/share/org/apache/catalina HttpRequest.java
  Log:
  - Add access to memory efficient buffers, as was mentioned over the
past months. This allows manipulating the various paths available in the request.
  - Similar accessors will be added for headers, etc.
  
  Revision  ChangesPath
  1.2   +38 -4 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/HttpRequest.java
  
  Index: HttpRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/HttpRequest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HttpRequest.java  18 Jul 2002 16:47:37 -  1.1
  +++ HttpRequest.java  29 Jan 2003 12:49:32 -  1.2
  @@ -67,8 +67,10 @@
   
   import java.security.Principal;
   import java.util.Locale;
  +
   import javax.servlet.http.Cookie;
   
  +import org.apache.tomcat.util.buf.MessageBytes;
   
   /**
* An bHttpRequest/b is the Catalina internal facade for an
  @@ -157,6 +159,14 @@
   
   
   /**
  + * Get the context path.
  + * 
  + * @return the context path
  + */
  +public MessageBytes getContextPathMB();
  +
  +
  +/**
* Set the context path for this Request.  This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
  @@ -184,6 +194,14 @@
   
   
   /**
  + * Get the path info.
  + * 
  + * @return the path info
  + */
  +public MessageBytes getPathInfoMB();
  +
  +
  +/**
* Set the path information for this Request.  This will normally be called
* when the associated Context is mapping the Request to a particular
* Wrapper.
  @@ -245,6 +263,22 @@
* @return the URL decoded request URI
*/
   public String getDecodedRequestURI();
  +
  +
  +/**
  + * Get the decoded request URI.
  + * 
  + * @return the URL decoded request URI
  + */
  +public MessageBytes getDecodedRequestURIMB();
  +
  +
  +/**
  + * Get the servlet path.
  + * 
  + * @return the servlet path
  + */
  +public MessageBytes getServletPathMB();
   
   
   /**
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core DummyRequest.java

2003-01-29 Thread remm
remm2003/01/29 04:49:41

  Modified:catalina/src/share/org/apache/catalina/core
DummyRequest.java
  Log:
  - Add access to memory efficient buffers, as was mentioned over the
past months. This allows manipulating the various paths available in the request.
  - Similar accessors will be added for headers, etc.
  
  Revision  ChangesPath
  1.4   +22 -4 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java
  
  Index: DummyRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DummyRequest.java 28 Jan 2003 19:07:30 -  1.3
  +++ DummyRequest.java 29 Jan 2003 12:49:41 -  1.4
  @@ -102,6 +102,8 @@
   import javax.servlet.http.Cookie;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpSession;
  +
  +import org.apache.tomcat.util.buf.MessageBytes;
   import org.apache.naming.resources.Resource;
   import org.apache.naming.resources.DirContextURLStreamHandler;
   import org.apache.naming.resources.DirContextURLConnection;
  @@ -158,6 +160,10 @@
   return (contextPath);
   }
   
  +public MessageBytes getContextPathMB() {
  +return null;
  +}
  +
   public ServletRequest getRequest() {
   return (this);
   }
  @@ -166,6 +172,10 @@
   return decodedURI;
   }
   
  +public MessageBytes getDecodedRequestURIMB() {
  +return null;
  +}
  +
   public FilterChain getFilterChain() {
   return (this.filterChain);
   }
  @@ -190,12 +200,20 @@
   pathInfo = path;
   }
   
  +public MessageBytes getPathInfoMB() {
  +return null;
  +}
  +
   public String getServletPath() {
   return servletPath;
   }
   
   public void setServletPath(String path) {
   servletPath = path;
  +}
  +
  +public MessageBytes getServletPathMB() {
  +return null;
   }
   
   public ValveContext getValveContext() {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core StandardContext.java

2003-01-29 Thread remm
remm2003/01/29 04:49:59

  Modified:catalina/src/share/org/apache/catalina/core
StandardContext.java
  Log:
  - Update wrapper mappings.
  
  Revision  ChangesPath
  1.16  +10 -5 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- StandardContext.java  28 Jan 2003 18:18:39 -  1.15
  +++ StandardContext.java  29 Jan 2003 12:49:58 -  1.16
  @@ -1814,6 +1814,8 @@
   synchronized (servletMappings) {
   servletMappings.put(pattern, name);
   }
  +Wrapper wrapper = (Wrapper) findChild(name);
  +wrapper.addMapping(pattern);
   fireContainerEvent(addServletMapping, pattern);
   
   }
  @@ -3233,9 +3235,12 @@
*/
   public void removeServletMapping(String pattern) {
   
  +String name = null;
   synchronized (servletMappings) {
  -servletMappings.remove(pattern);
  +name = (String) servletMappings.remove(pattern);
   }
  +Wrapper wrapper = (Wrapper) findChild(name);
  +wrapper.removeMapping(pattern);
   fireContainerEvent(removeServletMapping, pattern);
   
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core StandardContextValve.java

2003-01-29 Thread remm
remm2003/01/29 04:50:53

  Modified:catalina/src/share/org/apache/catalina/core
StandardContextValve.java
  Log:
  - Optimize checks for /WEB-INF and /META-INF.
  
  Revision  ChangesPath
  1.4   +36 -13
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContextValve.java
  
  Index: StandardContextValve.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContextValve.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StandardContextValve.java 12 Sep 2002 20:40:37 -  1.3
  +++ StandardContextValve.java 29 Jan 2003 12:50:52 -  1.4
  @@ -67,10 +67,15 @@
   
   import java.io.IOException;
   import java.io.PrintWriter;
  +
   import javax.servlet.ServletException;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
   import javax.naming.NamingException;
  +
  +import org.apache.tomcat.util.buf.CharChunk;
  +import org.apache.tomcat.util.buf.MessageBytes;
  +
   import org.apache.naming.ContextBindings;
   import org.apache.naming.resources.DirContextURLStreamHandler;
   import org.apache.catalina.Container;
  @@ -156,15 +161,31 @@
   }
   
   // Disallow any direct access to resources under WEB-INF or META-INF
  -HttpServletRequest hreq = (HttpServletRequest) request.getRequest();
  -String contextPath = hreq.getContextPath();
  -String requestURI = ((HttpRequest) request).getDecodedRequestURI();
  -String relativeURI =
  -requestURI.substring(contextPath.length()).toUpperCase();
  -if (relativeURI.equals(/META-INF) ||
  -relativeURI.equals(/WEB-INF) ||
  -relativeURI.startsWith(/META-INF/) ||
  -relativeURI.startsWith(/WEB-INF/)) {
  +HttpRequest hreq = (HttpRequest) request;
  +MessageBytes contextPathMB = hreq.getContextPathMB();
  +int length = contextPathMB.getLength();
  +MessageBytes decodedURIMB = hreq.getDecodedRequestURIMB();
  +decodedURIMB.toChars();
  +CharChunk decodedURIBC = decodedURIMB.getCharChunk();
  +int bcLength = decodedURIBC.getLength();
  +boolean notFound = false;
  +if (decodedURIBC.startsWithIgnoreCase(/META-INF, length)) {
  +if ((decodedURIBC.getLength() == (/META-INF.length() + length)) 
  +|| (decodedURIBC.getBuffer()[/META-INF.length() + length] 
  +== '/')) {
  +notFound = true;
  +}
  +}
  +if (decodedURIBC.startsWithIgnoreCase(/WEB-INF, length)) {
  +if ((decodedURIBC.getLength() == (/WEB-INF.length() + length)) 
  +|| (decodedURIBC.getBuffer()[/WEB-INF.length() + length] 
  +== '/')) {
  +System.out.println(Not found);
  +notFound = true;
  +}
  +}
  +if (notFound) {
  +String requestURI = hreq.getDecodedRequestURI();
   notFound(requestURI, (HttpServletResponse) response.getResponse());
   return;
   }
  @@ -176,11 +197,13 @@
   try {
   wrapper = (Wrapper) context.map(request, true);
   } catch (IllegalArgumentException e) {
  +String requestURI = hreq.getDecodedRequestURI();
   badRequest(requestURI, 
  (HttpServletResponse) response.getResponse());
   return;
   }
   if (wrapper == null) {
  +String requestURI = hreq.getDecodedRequestURI();
   notFound(requestURI, (HttpServletResponse) response.getResponse());
   return;
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5 MapperListener.java CoyoteConnector.java CoyoteRequest.java

2003-01-29 Thread remm
remm2003/01/29 04:54:59

  Modified:coyote/src/java/org/apache/coyote/tomcat5
CoyoteConnector.java CoyoteRequest.java
  Added:   coyote/src/java/org/apache/coyote/tomcat5
MapperListener.java
  Log:
  - Use the new mapper.
  - This will very likely cause problems (although for now the old mapper still tries 
to
map requests whcih have not been fully mapped). If it does, the mapper
can be uncommented easily in CoyoteAdapter.postParseRequest.
  - Currently, the new mapper intgroduces a quite nasty B2C conversion on the
URI, which will be addressed.
  
  Revision  ChangesPath
  1.11  +10 -2 
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java
  
  Index: CoyoteConnector.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- CoyoteConnector.java  28 Jan 2003 18:19:38 -  1.10
  +++ CoyoteConnector.java  29 Jan 2003 12:54:59 -  1.11
  @@ -70,8 +70,8 @@
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  -import org.apache.tomcat.util.http.mapper.Mapper;
   import org.apache.tomcat.util.IntrospectionUtils;
  +import org.apache.tomcat.util.http.mapper.Mapper;
   
   import org.apache.coyote.Adapter;
   import org.apache.coyote.ProtocolHandler;
  @@ -329,6 +329,12 @@
private Mapper mapper = new Mapper();
   
   
  + /**
  +  * Mapper listener.
  +  */
  + private MapperListener mapperListener = new MapperListener(mapper);
  +
  +
   // - Properties
   
   
  @@ -1113,6 +1119,8 @@
   (sm.getString
(coyoteConnector.protocolHandlerStartFailed, e));
   }
  +
  +mapperListener.init();
   
   }
   
  
  
  
  1.16  +57 -37
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java
  
  Index: CoyoteRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- CoyoteRequest.java28 Jan 2003 18:19:38 -  1.15
  +++ CoyoteRequest.java29 Jan 2003 12:54:59 -  1.16
  @@ -100,8 +100,11 @@
   import javax.servlet.http.HttpServletResponse;
   import javax.servlet.http.HttpSession;
   
  +import org.apache.tomcat.util.buf.MessageBytes;
   import org.apache.tomcat.util.http.FastHttpDateFormat;
   import org.apache.tomcat.util.http.Parameters;
  +import org.apache.tomcat.util.http.mapper.MappingData;
  +import org.apache.tomcat.util.net.SSLSupport;
   
   import org.apache.coyote.ActionCode;
   import org.apache.coyote.Request;
  @@ -124,9 +127,6 @@
   import org.apache.catalina.util.StringManager;
   import org.apache.catalina.util.StringParser;
   
  -import org.apache.tomcat.util.http.mapper.MappingData;
  -import org.apache.tomcat.util.net.SSLSupport;
  -
   /**
* Wrapper object for the Coyote request.
*
  @@ -272,24 +272,6 @@
   
   
   /**
  - * Context path.
  - */
  -protected String contextPath = ;
  -
  -
  -/**
  - * Path info.
  - */
  -protected String pathInfo = null;
  -
  -
  -/**
  - * Servlet path.
  - */
  -protected String servletPath = null;
  -
  -
  -/**
* User principal.
*/
   protected Principal userPrincipal = null;
  @@ -396,9 +378,6 @@
   inputBuffer.recycle();
   usingInputStream = false;
   usingReader = false;
  -contextPath = ;
  -pathInfo = null;
  -servletPath = null;
   userPrincipal = null;
   sessionParsed = false;
   requestParametersParsed = false;
  @@ -1475,9 +1454,9 @@
   public void setContextPath(String path) {
   
   if (path == null) {
  -this.contextPath = ;
  +mappingData.contextPath.setString();
   } else {
  -this.contextPath = path;
  +mappingData.contextPath.setString(path);
   }
   
   }
  @@ -1512,7 +1491,7 @@
* @param path The path information
*/
   public void setPathInfo(String path) {
  -this.pathInfo = path;
  +mappingData.pathInfo.setString(path);
   }
   
   
  @@ -1589,6 +1568,16 @@
   
   
   /**
  + * Get the decoded request URI.
  + * 
  + * @return the URL decoded request URI
  + */
  +public MessageBytes getDecodedRequestURIMB() {
  +return (coyoteRequest.decodedURI());
  +}
  +
  +
  +/**
* Set the servlet path for this Request.  

DO NOT REPLY [Bug 16540] New: - tomcat shut's down after an unknown time

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16540.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16540

tomcat shut's down after an unknown time

   Summary: tomcat shut's down after an unknown time
   Product: Tomcat 4
   Version: 4.0.6 Final
  Platform: PC
OS/Version: Linux
Status: NEW
  Severity: Critical
  Priority: Other
 Component: Unknown
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


The tomcatserver shut's down after a unknown period of little activity( this 
can be within an hour or after 2 days). In the log's I can't find anything 
wrong.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16541] New: - jndi realm role search cannot handle \ in user dn correctly

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16541.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16541

jndi realm role search cannot handle \ in user dn correctly

   Summary: jndi realm role search cannot handle \ in user dn
correctly
   Product: Tomcat 4
   Version: 4.1.18
  Platform: Other
OS/Version: All
Status: NEW
  Severity: Blocker
  Priority: Other
 Component: Catalina
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


User DN contains \

e.g  CN=Haaf\, Armin,CN=Users,DC=mercatis,DC=de


role search did not return any roles, because it interprets the \, as an 
escaped ,


Solution replace all \ in user dn with \\ in the getRoles method of the
JNDIRealm

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




RE: Ap..cache

2003-01-29 Thread Martin Algesten
Fabio,

We're achieving a good cache result by using mod_proxy and its built in
proxy cache.

We have:
Front servers that do caching and backservers that runs the tomcat.

The fron servers runs apache and mod_proxy. Any request coming in to
example www.foo.com/index.jsp is proxied through to the back hosts where
another apache is listening on port 80. The apache on the back host uses
mod_jk to connect to Tomcat which serves the page.

mod_proxy on the fron hosts has a proxy cache which can be used to cache
our jsp pages. There are some simple rules to follow when you want a jsp
to be cached in a generic web cache (see HTTP protocol for details on
web caches).

We got it sorted so that a request that comes into the front hosts, will
only result in a revalidation (If-Modified-Since) to the back hosts. The
jsp page can be coded to deal with this type of request and can then
tell the front hosts to serve the cached page or return a new one.

Martin



 -Original Message-
 From: Fabio Salvi [mailto:[EMAIL PROTECTED]] 
 Sent: 29 January 2003 10:43
 To: [EMAIL PROTECTED]
 Subject: Ap..cache
 
 
 Hi all,
 
 recently I've been thinking about a way to implement a cache 
 mechanism in Apache-Tomcat interaction (e.g. ajp13). I'd be 
 really grateful if you gave me some suggestions or advice on 
 the matter. Below I shortly describe what I've built as a 
 kind of prototype.
 
 To sum up, I've modified mod_jk (win2000) in some points in 
 order to make it cache-aware. I've introduced in httpd.conf 
 the following directives:
 
 #
 # normal jk directives
 #
 JkMount /*.jsp ajp13
 
 #Cache extensions
 JkCache on
 JkCacheDirectory C:\cache
 
 This is, basically, the collaboration diagram I've implemented:
 
 . mod_jk intercepts request for /pippo/cachetest.jsp;
 . mod_jk asks Tomcat, at the moment actually a WebApp 
 controller, for a list of dirty items in cache folder;
 . then, mod_jk deletes dirty-bit pages in the cache;
 . now mod_jk manages current request. If it finds the 
 page in the cache it returns static file to Apache.
 . Otherwise it requires the resource back to the WebApp 
 controller. The latter knows if the page is to be cached and  
 puts a special tag on the byte stream in response, after 
 having dynamically built it;
 . mod_jk receives the response and if it does contain the 
 above mentioned tag, mod_jk writes it in the cache folder 
 before sending it to Apache. If there's a query string, it'll 
 include it in the static resource name.
 
 The second and third steps are an overload respect to normal 
 interaction, but that permits to save a lot of elaborating 
 time and network roundtrips when you ask for a very heavy 
 resource (e.g a jsp which loads many non-volatile and quite 
 stable data from a db). All that seems to work 
 fine...According to your opinion is a worth-to-develop idea?
 
 Thanks in advance for your advise!
 Fabio
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16160] - Upload problem: Stream ended unexpectedly

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16160.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16160

Upload problem: Stream ended unexpectedly





--- Additional Comments From [EMAIL PROTECTED]  2003-01-29 14:56 ---
Also fails under RedHat 7.3 and Tomcat 4.1.17-LE-jdk14
using Apache/2.0.43 (Unix)  mod_jk2/2.0.0

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf MessageBytes.java

2003-01-29 Thread remm
remm2003/01/29 07:20:25

  Modified:util/java/org/apache/tomcat/util/buf MessageBytes.java
  Log:
  - Byte based setInt.
  
  Revision  ChangesPath
  1.8   +33 -6 
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf/MessageBytes.java
  
  Index: MessageBytes.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/buf/MessageBytes.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- MessageBytes.java 12 Jul 2002 18:00:14 -  1.7
  +++ MessageBytes.java 29 Jan 2003 15:20:25 -  1.8
  @@ -583,13 +583,40 @@
*  be done in headers
*/
   public void setInt(int i) {
  - // XXX replace it with a byte[] tool
recycle();
  - strValue=String.valueOf( i );
  - intValue=i;
  - hasIntValue=true;
  - hasStrValue=true;
  - type=T_STR;
  +byteC.allocate(16, 32);
  +int current = i;
  +byte[] buf = byteC.getBuffer();
  +int start = 0;
  +int end = 0;
  +if (i == 0) {
  +buf[end++] = (byte) '0';
  +}
  +if (i  0) {
  +current = -i;
  +buf[end++] = (byte) '-';
  +}
  +while (current  0) {
  +int digit = current % 10;
  +current = current / 10;
  +buf[end++] = HexUtils.HEX[digit];
  +}
  +byteC.setEnd(end);
  +// Inverting buffer
  +end--;
  +if (i  0) {
  +start++;
  +}
  +while (end  start) {
  +byte temp = buf[start];
  +buf[start] = buf[end];
  +buf[end] = temp;
  +start++;
  +end--;
  +}
  +intValue=i;
  +hasIntValue=true;
  +type=T_BYTES;
   }
   
   
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5 InputBuffer.java OutputBuffer.java

2003-01-29 Thread remm
remm2003/01/29 07:35:22

  Modified:coyote/src/java/org/apache/coyote/tomcat5 InputBuffer.java
OutputBuffer.java
  Log:
  - The request is a thread safe component - use non synced collections.
  
  Revision  ChangesPath
  1.4   +2 -2  
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/InputBuffer.java
  
  Index: InputBuffer.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/InputBuffer.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- InputBuffer.java  5 Jan 2003 17:20:41 -   1.3
  +++ InputBuffer.java  29 Jan 2003 15:35:22 -  1.4
  @@ -63,7 +63,7 @@
   import java.io.IOException;
   import java.io.Reader;
   import java.io.UnsupportedEncodingException;
  -import java.util.Hashtable;
  +import java.util.HashMap;
   
   import org.apache.tomcat.util.buf.B2CConverter;
   import org.apache.tomcat.util.buf.ByteChunk;
  @@ -161,7 +161,7 @@
   /**
* List of encoders.
*/
  -protected Hashtable encoders = new Hashtable();
  +protected HashMap encoders = new HashMap();
   
   
   /**
  
  
  
  1.6   +2 -2  
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/OutputBuffer.java
  
  Index: OutputBuffer.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/OutputBuffer.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- OutputBuffer.java 9 Jan 2003 18:15:05 -   1.5
  +++ OutputBuffer.java 29 Jan 2003 15:35:22 -  1.6
  @@ -63,7 +63,7 @@
   import java.io.OutputStream;
   import java.io.UnsupportedEncodingException;
   import java.io.Writer;
  -import java.util.Hashtable;
  +import java.util.HashMap;
   
   import org.apache.tomcat.util.buf.ByteChunk;
   import org.apache.tomcat.util.buf.C2BConverter;
  @@ -167,7 +167,7 @@
   /**
* List of encoders.
*/
  -protected Hashtable encoders = new Hashtable();
  +protected HashMap encoders = new HashMap();
   
   
   /**
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] Splitting authentication and authorization.

2003-01-29 Thread Jeanfrancois Arcand


Costin Manolache wrote:


What about this:

instead of 3 methods, have a single method:

interface Authorization {
 boolean hasPermission( HttpServletRequest, Permission perm )
} 

115, not 155 :-)

Where the permission object will be created? In Authenticator? I would 
prefer delegating the permission to Authorization interface (but I can 
live it :-) ). There is also another problem. If the permission is not 
granted, the method will return false. Then we will need to set the 
proper error message on the HttpServletResponse:

((HttpServletResponse) response.getResponse()).sendError(  )

If the method only return false, then we will not be able to properly 
set the error(SC_INTERNAL_SERVER_ERROR or FORBIDDEN etc.).

I would prefer having:

interface Authorization {
 boolean hasPermission( HttpServletResponse, Permission p )
} 

since p should contains all the information required to grant/denied the request. 

or 

interface Authorization {
 boolean hasPermission( HttpServletRequest, HttpServletResponse, String role )
} 

if we don't want a Permission object.


Based on the permission type, we will be able to discover if it's a 
Resource/UserData/Role call.


I'm still trying to figure out the hack in JSR155 ( with the 
permission per request ) - but if you understand

I hope I understand a little...I did participate in the 
definition/implementation of the specs :-)

it we can even
use 

 boolean implies( Permission currentRequestPermission, 
  Permission targetPermission ) 

Here I assume targetPermission is a permission that we have created when 
reading the web.xml (right?).  We will have a collection of 
targetPermission. To make it work, we will have to do:

for (int i; i  targetPermissionCollection; i++){
   ...implies(currentRequestPermission, targetPermissionCollection(i));
}

I would prefer having:

Provider
--

boolean implies( ProtectionDomain currentRequestPermission, 
Permission currentRequestPermission ) 


Here is how I see the process (simplified):

(1) when Tomcat starts, create the Policy (Provider is we standardize on 115)
(2) when deploying web.xml, created the appropriate Permission object (proprietary or 115) and store them inside a PolicyConfiguration object.
(3) each PolicyConfiguration will be stored in the Policy
(4) during a request, AuthenticatorBase will 
	4.1 create a Permission object
	4.2 invoke Authorization.hasPermission()
	4.3 invoke the Policy.implies()
	4.4 Based on the ProtectionDomain, the Policy will locate the proper PolicyConfiguration, get the permission collection and do a PermissionCollection.implies(currentRequestPermission).

This way the Autorization implementation doesn't have to know anything about web.xml permission. 

The bigest problem is when we create the permission (at deployment time). We have to use the url pattern matching rule to creates all the possible permissions. Performance staregy will be required here (I will buy Remy's book :-) )



Where currentRequestPermission will hold info about the request.

When we decide to support JSR155 - we can either make our Permission
implement the JSR155 classes, or change the code to support both 
kinds of Permissions.
Even if we support 155 - we'll still need our own implementation - 
for optimizations, recycle, etc. 

It seems Authorization interface is needed - at least from reading 
155. BTW, in the draft I'm reading there is also the option of using
Policy ( which would not require the security manager ).

My understanding was that the security manager and permissions are one. 
I like the idea of using the Policy without the Security Manager. I will 
read a little on the subject

-- Jeanfrancois


Costin


Costin Manolache wrote:

 

It seems I missread your post, I tought you would add another
authentication interface too ...

But I still don't like the interface :-)

I need to think about it.

I'm pretty sure we can use Policy, Permission, etc without a security
manager, and it would be better to go directly to use those.

One problem is in parameter passing ( since HttpServletRequest and
all other info must be available when making the policy decission ).

The authentication layer should be able to return a Principal
that is associated with the request. And the authorization layer shouldn't
care about the request - only about the Principal and the required
permission.

In other words - all security constraints can be converted to Permissions
( no need for 3 methods in the interface - just one method that checks
a particular Permission ).

The problem mentioned about JBoss is due to the fact that the
authorization layer calls the authentication ( this seems to be the case
in your proposal as well ). A request that doesn't have a security
constraint will not try to set the Principal.

Costin


   

since the last time I've  proposed to split
Authentication/Authorization, we have moved to JMX Listerner as hooks
and standardize on JMX, I would like to 

error compiling mod_jk

2003-01-29 Thread Ing. Gustavo Edelstein

Hi list!
My platform is HPUX 11.0, Tomcat 3.3.1, Apache 1.3.19
The command I'm using to compile is:

apxs -I$JAVA_HOME/include -I$JAVA_HOME/include/hpux -I../jk -o mod_jk.so -c *.c 
../common/*.c

The error msg I've got is:

gcc -DHPUX11 -DMOD_SSL=208103 -I/usr/local/php-4.0.6 -I/usr/local/php-4.0.6/main
 -I/usr/local/php-4.0.6/main -I/usr/local/php-4.0.6/Zend -I/usr/local/php-4.0.6/
Zend -I/usr/local/php-4.0.6/TSRM -I/usr/local/php-4.0.6/TSRM -I/usr/local/php-4.
0.6 -DEAPI -DUSE_EXPAT -I../lib/expat-lite -DNO_DL_NEEDED -DKRB5  -I/usr/local/a
pache/include -I/opt/java1.3/include -I/opt/java1.3/include/hpux -I../jk  -c ../
common/jk_worker.c
In file included from ../common/jk_global.h:69,
 from ../common/jk_logger.h:65,
 from ../common/jk_ajp12_worker.h:65,
 from ../common/jk_worker_list.h:80,
 from ../common/jk_worker.c:63:
/opt/gcc/lib/gcc-lib/hppa2.0n-hp-hpux11.00/2.95.3/include/stdlib.h:28: warning:
`__va__list' redefined
/opt/gcc/lib/gcc-lib/hppa2.0n-hp-hpux11.00/2.95.3/include/stdio.h:30: warning: t
his is the location of the previous definition
  -o mod_jk.so jk_worker.o jk_util.o jk_uri_worker_map.o jk_sockbuf.o jk_pool.o
jk_nwmain.o jk_msg_buff.o jk_map.o jk_lb_worker.o jk_jni_worker.o jk_connect.o j
k_ajp13_worker.o jk_ajp13.o jk_ajp12_worker.o mod_jk.o
apxs:Break: Command failed with rc=16777215

Thanks for your help !!

Gustavo A. Edelstein




cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5 CoyoteAdapter.java CoyoteConnector.java CoyoteRequest.java

2003-01-29 Thread remm
remm2003/01/29 08:39:11

  Modified:coyote/src/java/org/apache/coyote/tomcat5 CoyoteAdapter.java
CoyoteConnector.java CoyoteRequest.java
  Log:
  - Allow configuring the URI B2C decoding.
  - Fast conversion for ASCII.
  
  Revision  ChangesPath
  1.9   +59 -5 
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteAdapter.java
  
  Index: CoyoteAdapter.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteAdapter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- CoyoteAdapter.java28 Jan 2003 18:19:38 -  1.8
  +++ CoyoteAdapter.java29 Jan 2003 16:39:11 -  1.9
  @@ -67,7 +67,9 @@
   import javax.servlet.http.Cookie;
   import javax.servlet.http.HttpServletRequest;
   
  +import org.apache.tomcat.util.buf.B2CConverter;
   import org.apache.tomcat.util.buf.ByteChunk;
  +import org.apache.tomcat.util.buf.CharChunk;
   import org.apache.tomcat.util.buf.MessageBytes;
   import org.apache.tomcat.util.http.Cookies;
   import org.apache.tomcat.util.http.ServerCookie;
  @@ -237,7 +239,6 @@
   // URI decoding
   req.decodedURI().duplicate(req.requestURI());
   req.getURLDecoder().convert(req.decodedURI(), false);
  -req.decodedURI().setEncoding(UTF-8);
   
   // Normalize decoded URI
   if (!normalize(req.decodedURI())) {
  @@ -268,6 +269,9 @@
   request.setUserPrincipal(new CoyotePrincipal(principal));
   }
   
  +// URI character decoding
  +convertURI(req.decodedURI(), request);
  +
   // Request mapping
   connector.getMapper().map(req.serverName(), req.decodedURI(), 
 request.getMappingData());
  @@ -359,6 +363,56 @@
   }
   
   request.setCookies(cookies);
  +
  +}
  +
  +
  +/**
  + * Character conversion of the URI.
  + */
  +protected void convertURI(MessageBytes uri, CoyoteRequest request) 
  +throws Exception {
  +
  +ByteChunk bc = uri.getByteChunk();
  +CharChunk cc = uri.getCharChunk();
  +cc.allocate(bc.getLength(), -1);
  +
  +String enc = connector.getURIEncoding();
  +if (enc != null) {
  +B2CConverter conv = request.getURIConverter();
  +try {
  +if (conv == null) {
  +conv = new B2CConverter(enc);
  +request.setURIConverter(conv);
  +} else {
  +conv.recycle();
  +}
  +} catch (IOException e) {
  +// Ignore
  +log(Invalid URI encoding; using HTTP default);
  +connector.setURIEncoding(null);
  +}
  +if (conv != null) {
  +try {
  +conv.convert(bc, cc);
  +uri.setChars(cc.getBuffer(), cc.getStart(), 
  + cc.getLength());
  +return;
  +} catch (IOException e) {
  +log(Invalid URI character encoding; trying ascii);
  +cc.recycle();
  +}
  +}
  +}
  +
  +// Default encoding: fast conversion
  +byte[] bbuf = bc.getBuffer();
  +char[] cbuf = cc.getBuffer();
  +int start = bc.getStart();
  +for (int i = 0; i  bc.getLength(); i++) {
  +cbuf[i] = (char) (bbuf[i + start]  0xff);
  +}
  +uri.setChars(cbuf, 0, bc.getLength());
   
   }
   
  
  
  
  1.12  +29 -1 
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java
  
  Index: CoyoteConnector.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteConnector.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- CoyoteConnector.java  29 Jan 2003 12:54:59 -  1.11
  +++ CoyoteConnector.java  29 Jan 2003 16:39:11 -  1.12
  @@ -335,6 +335,12 @@
private MapperListener mapperListener = new MapperListener(mapper);
   
   
  + /**
  +  * URI encoding.
  +  */
  + private String URIEncoding = null;
  +
  +
   // - Properties
   
   
  @@ -878,6 +884,28 @@
   this.tcpNoDelay = tcpNoDelay;
   
   }
  +
  +
  + /**
  +  * Return the character encoding to be used for the URI.
  +  */
  + public String getURIEncoding() {
  +
  + return (this.URIEncoding);
  +
  + }
  +
  +
  + /**
  +  * Set the URI encoding to be used for the URI.
  +  * 
  +  * @param URIEncoding The new 

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet JspServlet.java

2003-01-29 Thread jfarcand
jfarcand2003/01/29 09:04:22

  Modified:jasper2/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  FIX a NPE exception when the enumeration is null.
  
  Revision  ChangesPath
  1.20  +11 -8 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java
  
  Index: JspServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- JspServlet.java   28 Jan 2003 18:15:49 -  1.19
  +++ JspServlet.java   29 Jan 2003 17:04:21 -  1.20
  @@ -230,11 +230,14 @@
log.debug(\t QueryString:  + request.getQueryString());
log.debug(\t  Request Params: );
Enumeration e = request.getParameterNames();
  - while (e.hasMoreElements()) {
  - String name = (String) e.nextElement();
  - log.debug(\t\t  + name +  =  +
  -  request.getParameter(name));
  - }
  +
  +if (e != null) {
  +while (e.hasMoreElements()) {
  +String name = (String) e.nextElement();
  +log.info(\t\t  + name +  =  +
  + request.getParameter(name));
  +}
  +}
}
   serviceJspFile(request, response, jspUri, null, precompile);
} catch (RuntimeException e) {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16550] New: - Parse error for Context/docBase

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16550.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16550

Parse error for Context/docBase

   Summary: Parse error for Context/docBase
   Product: Tomcat 4
   Version: 4.1.12
  Platform: Other
OS/Version: Linux
Status: NEW
  Severity: Normal
  Priority: Other
 Component: Catalina
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


If a docBase Context doc-base folder ends with '.xml' extension (attribute 
docBase of Context element in server.xml), Tomcat writes a number of 
exceptions to logs. Same thing (with different exception) happens if the doc-
base folder is a symbolic link with '.xml' at the end. Still it seems that 
Tomcat handles requests for this context with no problem.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet JspServlet.java

2003-01-29 Thread jfarcand
jfarcand2003/01/29 10:20:08

  Modified:jasper2/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  Add a small comment to remind that the case occurs only when DummyRequest is used. 
Thsi method should never return a null enumration.
  
  Revision  ChangesPath
  1.21  +5 -3  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java
  
  Index: JspServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- JspServlet.java   29 Jan 2003 17:04:21 -  1.20
  +++ JspServlet.java   29 Jan 2003 18:20:08 -  1.21
  @@ -231,6 +231,8 @@
log.debug(\t  Request Params: );
Enumeration e = request.getParameterNames();
   
  +// Occurs only when DummyRequest is used (this method never 
  +// when used in the normal case return null
   if (e != null) {
   while (e.hasMoreElements()) {
   String name = (String) e.nextElement();
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] Splitting authentication and authorization.

2003-01-29 Thread Costin Manolache
Jeanfrancois Arcand wrote:

 Where the permission object will be created? In Authenticator? I would
 prefer delegating the permission to Authorization interface (but I can
 live it :-) ). There is also another problem. If the permission is not
 granted, the method will return false. Then we will need to set the
 proper error message on the HttpServletResponse:

If we look at JSR115, it sugests creating several (3?) permission objects - 
each will be associated with the request.

The creation of those objects will be part of the container ( probably in
a valve or other module ). 

The point is that all _authorization_ decisions will be deletated to 
a plugin - tomcat will just make the calls. It will be tomcat's 
job to provide the arguments and deal with the response.


 ((HttpServletResponse) response.getResponse()).sendError(  )

I don't think mixing HTTP request processing in the authorizer is a good
idea, and it seems JSR115 ( at least the published draft ) is on the same
side.

Let the authorizer deal with authorization - if the permissions  
( to a URI, method, transport ) are valid.


 If the method only return false, then we will not be able to properly
 set the error(SC_INTERNAL_SERVER_ERROR or FORBIDDEN etc.).

Another reason to let the authorizer deal with authorization and nothing
else. A false will mean FORBIDDEN. ( we can still know what was forbidden
- we'll have to check 3 different permissions )


 I would prefer having:
 
 interface Authorization {
   boolean hasPermission( HttpServletResponse, Permission p )
 }

You can get the Response from the Request - passing one or both is the same.

Again - that would mean the authorizer will deal with HTTP processing, that
will keep code complex. 

The JSR115 aproach is IMO much better - all the information that must be 
checked ( URI, method, etc ) is passed as part of the requested permission.


 since p should contains all the information required to grant/denied the
 request.

Exactly - there is no need to pass the response/request. If you really want
- you can cast the permission to TomcatRequestPermission and get the source
request and response. 


 or
 
 interface Authorization {
   boolean hasPermission( HttpServletRequest, HttpServletResponse, String
   role )
 }
 
 if we don't want a Permission object.

I don't see why not. ( and it's not one, but few ). This is far more 
flexible.


 Based on the permission type, we will be able to discover if it's a
 Resource/UserData/Role call.

+1


I'm still trying to figure out the hack in JSR155 ( with the
permission per request ) - but if you understand

 I hope I understand a little...I did participate in the
 definition/implementation of the specs :-)

Good to know :-) 



 it we can even
use

  boolean implies( Permission currentRequestPermission,
   Permission targetPermission )

 Here I assume targetPermission is a permission that we have created when
 reading the web.xml (right?).  We will have a collection of
 targetPermission. To make it work, we will have to do:

Sorry - I meant PermissionCollection for the second argument, and yes - it
includes all the permissions from the web.xml ( and maybe the permissions
from the policy - if in sandbox mode ).



 for (int i; i  targetPermissionCollection; i++){
 ...implies(currentRequestPermission, targetPermissionCollection(i));
 }
 
 I would prefer having:
 
 Provider
 --
 
 boolean implies( ProtectionDomain currentRequestPermission,
  Permission currentRequestPermission )

Yes, that's what I had in mind too - except PermissionCollection instead
of ProtectionDomain.


Actually - I have a better idea ( IMHO :-):

Request {
   ...
   Permissions requestPermissions[]; - we add this to coyote request ( with
 getter/setter )
}
 
Context {
   
   PermissionCollection authorizer;
}
  
The Authorizer will just be an implementation of PermissionCollection.

It seems JSR115 is a bit confused about this - in 4.7 it lists 6
alternatives for checking. I don't see why anything more than providing a 
PermissionCollection and using impies() would be needed.

But I'm fine with ProtectionDomain - it adds the CodeSource of the
context ( which is good ). Not sure what the principals would be.




 Here is how I see the process (simplified):
 
 (1) when Tomcat starts, create the Policy (Provider is we standardize on
 115) 

There is no requirement on that - we can create a ProtectionDomain or 
Policy without 115. ( well, we already do - AFAIK - for the class loader ).

 (2) when deploying web.xml, created the appropriate Permission object
 (proprietary or 115) and store them inside a PolicyConfiguration object.

That's my biggest problem with 115 :-) 

All J2EE is moving toward JMX - and they define yet another config API. 
Sorry - I will vote for proprietary here ( actually - JMX ). The Policy
will just be an MBean ( of cource, that assummes JMX1.2 - so the mbean
server is 

Error when compiling JSP page with taglib using JspC

2003-01-29 Thread Kelly Chen
I ran into an Error when compile JSP page with taglib using JspC. This 
happens with the Jasper in Tomcat 4.1.12. The root of the exception is 
thrown by ServletContext.getResource, the exception is 
MalformedURLException. After some digging, the following code (in 
TagLibraryInfoImpl.java) looks dubious, because it intentionally strips 
out the / at the beginning of the path, however the Serlvet spec 
requires the path to be start with /. See

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getResource(java.lang.String)

   if(ctxt.getClassLoader() != null 
  
URLClassLoader.class.equals(ctxt.getClassLoader().getClass())
   path.startsWith(/))
  path = path.substring(1,path.length()) ;

So I suggest to change the above lines to the following to guarantee 
that path is started with /:
   if(ctxt.getClassLoader() != null 
  
URLClassLoader.class.equals(ctxt.getClassLoader().getClass())
   !path.startsWith(/))
  path = / +path ;

One thing that I haven't spent much time on is that why JSP pages with 
Taglib compiled OK in Tomcat, I just assume that it might be executing 
the different code path. If a regular Jasper developer could examine if 
the above change makes sense, I would like submit the change to the code 
base. Since I am not a regular developer, I am just posting to the list 
for now.


--
Kelly Chen   Tumbleweed Communication Corp.
T:650-216-2043   700 Saginaw Drive
F:650-216-2565   Redwood City, CA 94063





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servletJspServlet.java

2003-01-29 Thread Remy Maucherat
[EMAIL PROTECTED] wrote:

jfarcand2003/01/29 10:20:08

  Modified:jasper2/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  Add a small comment to remind that the case occurs only when DummyRequest is used. Thsi method should never return a null enumration.


The thing is that the DummyRequest had as few things as possible being 
implemented, and it is used for request dispatcher mapping as well as . 
You can add whatever is needed ;-)

Remy


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servletJspServlet.java

2003-01-29 Thread Jeanfrancois Arcand
OK Then I will remove that and create a dummy enumeration instead :-)

-- Jeanfrancois

Remy Maucherat wrote:


[EMAIL PROTECTED] wrote:


jfarcand2003/01/29 10:20:08

  Modified:jasper2/src/share/org/apache/jasper/servlet 
JspServlet.java
  Log:
  Add a small comment to remind that the case occurs only when 
DummyRequest is used. Thsi method should never return a null enumration.


The thing is that the DummyRequest had as few things as possible being 
implemented, and it is used for request dispatcher mapping as well as 
. You can add whatever is needed ;-)

Remy


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] New mapper

2003-01-29 Thread Costin Manolache
Remy Maucherat wrote:

 The mapper has a currently unused dependency on JNDI, and I plan to put
 it in the org.apache.tomcat.util.http.mapper package.

JNDI deps are fine - dependencies on org.apache.naming are not very good
( since tomcat can be used in an app that uses a different naming impl ).
 

 How can I listen to registrations with JMX 1.1 ? In 1.2, this is quite
 obvious, but I think I missed it in 1.1. The static queries are of
 course similar.

It's the same - register a listener on the MBeanServerDelegate.


Costin


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper Mapper.java MappingData.java

2003-01-29 Thread remm
remm2003/01/29 12:03:21

  Modified:util/java/org/apache/tomcat/util/http/mapper Mapper.java
MappingData.java
  Log:
  - Also compute a request path field.
  
  Revision  ChangesPath
  1.3   +9 -1  
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java
  
  Index: Mapper.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Mapper.java   29 Jan 2003 12:45:33 -  1.2
  +++ Mapper.java   29 Jan 2003 20:03:21 -  1.3
  @@ -494,6 +494,8 @@
(path.equals(extensionWrappers[pos].name))) {
   mappingData.wrapperPath.setChars
   (buf, servletPath, pathEnd - servletPath);
  +mappingData.requestPath.setChars
  +(buf, servletPath, pathEnd - servletPath);
   mappingData.wrapper = extensionWrappers[pos].object;
   }
   path.setOffset(servletPath);
  @@ -538,6 +540,8 @@
   if (mappingData.wrapper == null) {
   if (context.defaultWrapper != null) {
   mappingData.wrapper = context.defaultWrapper.object;
  +mappingData.requestPath.setChars
  +(path.getBuffer(), path.getStart(), path.getLength());
   mappingData.wrapperPath.setChars
   (path.getBuffer(), path.getStart(), path.getLength());
   }
  @@ -556,6 +560,7 @@
   (Wrapper[] wrappers, CharChunk path, MappingData mappingData) {
   int pos = find(wrappers, path);
   if ((pos != -1)  (path.equals(wrappers[pos].name))) {
  +mappingData.requestPath.setString(wrappers[pos].name);
   mappingData.wrapperPath.setString(wrappers[pos].name);
   mappingData.wrapper = wrappers[pos].object;
   }
  @@ -590,6 +595,8 @@
path.getOffset() + length, 
path.getLength() - length);
   }
  +mappingData.requestPath.setChars
  +(path.getBuffer(), path.getOffset(), path.getLength());
   mappingData.wrapper = wrappers[pos].object;
   }
   }
  @@ -865,7 +872,7 @@
   MessageBytes host = MessageBytes.newInstance();
   host.setString(iowejoiejfoiew);
   MessageBytes uri = MessageBytes.newInstance();
  -uri.setString(/foo/bar/blah/);
  +uri.setString(/foo/bar/blah/bobou/foo);
   uri.toChars();
   uri.getCharChunk().setLimit(-1);
   
  @@ -908,6 +915,7 @@
   
   System.out.println(contextPath: + mappingData.contextPath);
   System.out.println(wrapperPath: + mappingData.wrapperPath);
  +System.out.println(requestPath: + mappingData.requestPath);
   System.out.println(pathInfo: + mappingData.pathInfo);
   System.out.println(redirectPath: + mappingData.redirectPath);
   
  
  
  
  1.2   +2 -0  
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/MappingData.java
  
  Index: MappingData.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/MappingData.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MappingData.java  28 Jan 2003 18:14:51 -  1.1
  +++ MappingData.java  29 Jan 2003 20:03:21 -  1.2
  @@ -73,6 +73,7 @@
   public Object wrapper = null;
   
   public MessageBytes contextPath = MessageBytes.newInstance();
  +public MessageBytes requestPath = MessageBytes.newInstance();
   public MessageBytes wrapperPath = MessageBytes.newInstance();
   public MessageBytes pathInfo = MessageBytes.newInstance();
   
  @@ -83,6 +84,7 @@
   context = null;
   wrapper = null;
   pathInfo.recycle();
  +requestPath.recycle();
   wrapperPath.recycle();
   contextPath.recycle();
   redirectPath.recycle();
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] New mapper

2003-01-29 Thread Costin Manolache
Remy Maucherat wrote:

  Speaking of which, I'm missing a registration for the hosts (I don't
 know if it's defined in JSR 77).
 Could we add some custom attributes on the object name for wrapper
 (giving the mapping), as well as the host registration, and still comply
 with the spec (I'd say yes, but ...) ?

Sure. JSR77 is very thin - way too thin. 

It doesn't forbid container-specific objects - but leves the naming open.
The only issue - we need to get rid of the Listeners and move the JMX
registration in the core objects.

Costin



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] New mapper

2003-01-29 Thread Remy Maucherat
Costin Manolache wrote:

Remy Maucherat wrote:



The mapper has a currently unused dependency on JNDI, and I plan to put
it in the org.apache.tomcat.util.http.mapper package.



JNDI deps are fine - dependencies on org.apache.naming are not very good
( since tomcat can be used in an app that uses a different naming impl ).


Well, I'm still unsure about physical welcome files. On the plus side, 
it would be considerably faster to do that in the mapper.

How can I listen to registrations with JMX 1.1 ? In 1.2, this is quite
obvious, but I think I missed it in 1.1. The static queries are of
course similar.



It's the same - register a listener on the MBeanServerDelegate.


I tried that, and get a lot of nice notifications about registration, 
but how do I get the ObjectName of the MBean which caused the 
notification (the source of the Notification is the server delegate, 
which doesn't help). ?

Help :-P

Remy


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina HttpRequest.java

2003-01-29 Thread remm
remm2003/01/29 12:20:46

  Modified:catalina/src/share/org/apache/catalina HttpRequest.java
  Log:
  - Add request path field (basically, it's servletPath + pathInfo, which is very
convinient to have rather than compute it over and over).
  
  Revision  ChangesPath
  1.3   +12 -4 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/HttpRequest.java
  
  Index: HttpRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/HttpRequest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- HttpRequest.java  29 Jan 2003 12:49:32 -  1.2
  +++ HttpRequest.java  29 Jan 2003 20:20:46 -  1.3
  @@ -212,6 +212,14 @@
   
   
   /**
  + * Get the request path.
  + * 
  + * @return the request path
  + */
  +public MessageBytes getRequestPathMB();
  +
  +
  +/**
* Set a flag indicating whether or not the requested session ID for this
* request came in through a cookie.  This is normally called by the
* HTTP Connector, when it parses the request headers.
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper Mapper.java

2003-01-29 Thread remm
remm2003/01/29 12:54:55

  Modified:util/java/org/apache/tomcat/util/http/mapper Mapper.java
  Log:
  - Fix find method bug (in case the elements are equal).
  
  Revision  ChangesPath
  1.4   +2 -2  
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java
  
  Index: Mapper.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Mapper.java   29 Jan 2003 20:03:21 -  1.3
  +++ Mapper.java   29 Jan 2003 20:54:55 -  1.4
  @@ -648,7 +648,7 @@
   }
   if ((b - a) == 1) {
   int result2 = compare(name, start, end, map[b].name);
  -if (result2  1) {
  +if (result2  0) {
   return a;
   } else {
   return b;
  @@ -693,7 +693,7 @@
   }
   if ((b - a) == 1) {
   int result2 = name.compareTo(map[b].name);
  -if (result2  1) {
  +if (result2  0) {
   return a;
   } else {
   return b;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core DummyRequest.java

2003-01-29 Thread remm
remm2003/01/29 12:57:16

  Modified:catalina/src/share/org/apache/catalina/core
DummyRequest.java
  Log:
  - Add request path field (basically, it's servletPath + pathInfo, which is very
convinient to have rather than compute it over and over).
  
  Revision  ChangesPath
  1.5   +8 -4  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java
  
  Index: DummyRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DummyRequest.java 29 Jan 2003 12:49:41 -  1.4
  +++ DummyRequest.java 29 Jan 2003 20:57:16 -  1.5
  @@ -204,6 +204,10 @@
   return null;
   }
   
  +public MessageBytes getRequestPathMB() {
  +return null;
  +}
  +
   public String getServletPath() {
   return servletPath;
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5 CoyoteRequest.java

2003-01-29 Thread remm
remm2003/01/29 12:57:28

  Modified:coyote/src/java/org/apache/coyote/tomcat5 CoyoteRequest.java
  Log:
  - Add request path field (basically, it's servletPath + pathInfo, which is very
convinient to have rather than compute it over and over).
  
  Revision  ChangesPath
  1.18  +14 -4 
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java
  
  Index: CoyoteRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- CoyoteRequest.java29 Jan 2003 16:39:11 -  1.17
  +++ CoyoteRequest.java29 Jan 2003 20:57:28 -  1.18
  @@ -1824,6 +1824,16 @@
   
   
   /**
  + * Get the request path.
  + * 
  + * @return the request path
  + */
  +public MessageBytes getRequestPathMB() {
  +return (mappingData.requestPath);
  +}
  +
  +
  +/**
* Return the session identifier included in this request, if any.
*/
   public String getRequestedSessionId() {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




[PATCH] jakarta-servletapi-5: javadoc enhancements

2003-01-29 Thread Mark Roth
Javadoc enhancements for JSP 2.0 API.

New Files (attached separately):
- jsr152/src/share/javax/servlet/jsp/package.html
- jsr152/src/share/javax/servlet/jsp/el/package.html
- jsr152/src/share/javax/servlet/jsp/tagext/package.html

jsr152/src/share/javax/servlet/jsp/JspContext.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/JspFactory.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/PageContext.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
- Added description for doInitBody() @throws JspException

jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java
- Added description for doAfterBody() @throws JspException

jsr152/src/share/javax/servlet/jsp/tagext/PageData.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/tagext/SimpleTagSupport.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/tagext/TagExtraInfo.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java
- Added javadoc comment for public no-args constructor

jsr152/src/share/javax/servlet/jsp/tagext/TryCatchFinally.java
- Added @throws Throwable tag for doCatch()

---
Mark Roth, Java Software
JSP 2.0 Co-Specification Lead
Sun Microsystems, Inc.

Index: jsr152/src/share/javax/servlet/jsp/JspContext.java
===
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java,v
retrieving revision 1.6
diff -u -r1.6 JspContext.java
--- jsr152/src/share/javax/servlet/jsp/JspContext.java  18 Dec 2002 18:35:37 - 
 1.6
+++ jsr152/src/share/javax/servlet/jsp/JspContext.java  29 Jan 2003 21:01:27 -
@@ -109,6 +109,13 @@
 
 public abstract class JspContext {
 
+/**
+ * Sole constructor. (For invocation by subclass constructors, 
+ * typically implicit.)
+ */
+public JspContext() {
+}
+
 /** 
  * Register the name and value specified with page scope semantics.
  * If the value passed in is codenull/code, this has the same 
Index: jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java
===
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 JspEngineInfo.java
--- jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java   13 Aug 2002 16:20:54 
-  1.1.1.1
+++ jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java   29 Jan 2003 21:01:27 
+-
@@ -61,6 +61,13 @@
  */
 
 public abstract class JspEngineInfo {
+
+/**
+ * Sole constructor. (For invocation by subclass constructors, 
+ * typically implicit.)
+ */
+public JspEngineInfo() {
+}
 
 /**
  * Return the version number of the JSP specification that is supported by
Index: jsr152/src/share/javax/servlet/jsp/JspFactory.java
===
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspFactory.java,v
retrieving revision 1.2
diff -u -r1.2 JspFactory.java
--- jsr152/src/share/javax/servlet/jsp/JspFactory.java  19 Aug 2002 16:29:49 - 
 1.2
+++ jsr152/src/share/javax/servlet/jsp/JspFactory.java  29 Jan 2003 21:01:27 -
@@ -82,6 +82,13 @@
 public abstract class JspFactory {
 
 private static JspFactory deflt = null;
+
+/**
+ * Sole constructor. (For invocation by subclass constructors, 
+ * typically implicit.)
+ */
+public JspFactory() {
+}
 
 /**
  * p
Index: jsr152/src/share/javax/servlet/jsp/PageContext.java
===
RCS file: 
/home/cvspublic/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java,v
retrieving revision 1.6
diff -u -r1.6 PageContext.java
--- jsr152/src/share/javax/servlet/jsp/PageContext.java 18 Dec 2002 18:35:37 - 
 1.6
+++ jsr152/src/share/javax/servlet/jsp/PageContext.java 29 Jan 2003 21:01:28 -
@@ -132,7 +132,14 @@
 abstract public class PageContext 
 extends JspContext
 {
-
+
+/**
+ * Sole constructor. (For invocation by subclass constructors, 
+ * typically implicit.)
+ */
+public PageContext() {
+}
+
 /**
  * Page scope: (this is the default) the named reference remains available
  * in this PageContext until the return from the current Servlet.service()
Index: jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
===

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core ApplicationFilterFactory.java StandardContextValve.java StandardWrapperValve.java

2003-01-29 Thread remm
remm2003/01/29 13:23:29

  Modified:catalina/src/share/org/apache/catalina/core
ApplicationFilterFactory.java
StandardContextValve.java StandardWrapperValve.java
  Log:
  - Code simplifications using the request path.
  
  Revision  ChangesPath
  1.6   +10 -6 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationFilterFactory.java
  
  Index: ApplicationFilterFactory.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationFilterFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ApplicationFilterFactory.java 27 Nov 2002 20:34:20 -  1.5
  +++ ApplicationFilterFactory.java 29 Jan 2003 21:23:29 -  1.6
  @@ -91,10 +91,14 @@
   public final class ApplicationFilterFactory {
   
   public static final int ERROR = 1;
  -public static final int FORWARD =2;
  -public static final int INCLUDE  =4;
  +public static final Integer ERROR_INTEGER = new Integer(ERROR);
  +public static final int FORWARD = 2;
  +public static final Integer FORWARD_INTEGER = new Integer(FORWARD);
  +public static final int INCLUDE = 4;
  +public static final Integer INCLUDE_INTEGER = new Integer(INCLUDE);
   public static final int REQUEST = 8;
  -
  +public static final Integer REQUEST_INTEGER = new Integer(REQUEST);
  +
   public static final String 
DISPATCHER_TYPE_ATTR=org.apache.catalina.core.DISPATCHER_TYPE;
   public static final String 
DISPATCHER_REQUEST_PATH_ATTR=org.apache.catalina.core.DISPATCHER_REQUEST_PATH;
   
  
  
  
  1.5   +9 -27 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContextValve.java
  
  Index: StandardContextValve.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContextValve.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StandardContextValve.java 29 Jan 2003 12:50:52 -  1.4
  +++ StandardContextValve.java 29 Jan 2003 21:23:29 -  1.5
  @@ -162,29 +162,11 @@
   
   // Disallow any direct access to resources under WEB-INF or META-INF
   HttpRequest hreq = (HttpRequest) request;
  -MessageBytes contextPathMB = hreq.getContextPathMB();
  -int length = contextPathMB.getLength();
  -MessageBytes decodedURIMB = hreq.getDecodedRequestURIMB();
  -decodedURIMB.toChars();
  -CharChunk decodedURIBC = decodedURIMB.getCharChunk();
  -int bcLength = decodedURIBC.getLength();
  -boolean notFound = false;
  -if (decodedURIBC.startsWithIgnoreCase(/META-INF, length)) {
  -if ((decodedURIBC.getLength() == (/META-INF.length() + length)) 
  -|| (decodedURIBC.getBuffer()[/META-INF.length() + length] 
  -== '/')) {
  -notFound = true;
  -}
  -}
  -if (decodedURIBC.startsWithIgnoreCase(/WEB-INF, length)) {
  -if ((decodedURIBC.getLength() == (/WEB-INF.length() + length)) 
  -|| (decodedURIBC.getBuffer()[/WEB-INF.length() + length] 
  -== '/')) {
  -System.out.println(Not found);
  -notFound = true;
  -}
  -}
  -if (notFound) {
  +MessageBytes requestPathMB = hreq.getRequestPathMB();
  +if ((requestPathMB.startsWithIgnoreCase(/META-INF/, 0))
  +|| (requestPathMB.equalsIgnoreCase(/META-INF))
  +|| (requestPathMB.startsWithIgnoreCase(/WEB-INF/, 0))
  +|| (requestPathMB.equalsIgnoreCase(/WEB-INF))) {
   String requestURI = hreq.getDecodedRequestURI();
   notFound(requestURI, (HttpServletResponse) response.getResponse());
   return;
  
  
  
  1.10  +14 -13
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapperValve.java
  
  Index: StandardWrapperValve.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapperValve.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- StandardWrapperValve.java 24 Jan 2003 23:47:46 -  1.9
  +++ StandardWrapperValve.java 29 Jan 2003 21:23:29 -  1.10
  @@ -79,6 +79,9 @@
   import javax.servlet.http.HttpServlet;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  +
  +import org.apache.tomcat.util.buf.MessageBytes;
  +
   import org.apache.catalina.Container;
   import org.apache.catalina.Context;
   import org.apache.catalina.Globals;
  @@ -185,6 

Re: [5.0] New mapper

2003-01-29 Thread Costin Manolache
Remy Maucherat wrote:

 Costin Manolache wrote:
 Remy Maucherat wrote:
 
 
The mapper has a currently unused dependency on JNDI, and I plan to put
it in the org.apache.tomcat.util.http.mapper package.
 
 
 JNDI deps are fine - dependencies on org.apache.naming are not very good
 ( since tomcat can be used in an app that uses a different naming impl ).
 
 Well, I'm still unsure about physical welcome files. On the plus side,
 it would be considerably faster to do that in the mapper.
 
How can I listen to registrations with JMX 1.1 ? In 1.2, this is quite
obvious, but I think I missed it in 1.1. The static queries are of
course similar.
 
 
 It's the same - register a listener on the MBeanServerDelegate.
 
 I tried that, and get a lot of nice notifications about registration,
 but how do I get the ObjectName of the MBean which caused the
 notification (the source of the Notification is the server delegate,
 which doesn't help). ?

Cast the notification to MBeanServerNotification :-)


Costin


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: [5.0] Splitting authentication and authorization.

2003-01-29 Thread Jeanfrancois Arcand


Costin Manolache wrote:


Jeanfrancois Arcand wrote:

 

Where the permission object will be created? In Authenticator? I would
prefer delegating the permission to Authorization interface (but I can
live it :-) ). There is also another problem. If the permission is not
granted, the method will return false. Then we will need to set the
proper error message on the HttpServletResponse:
   


If we look at JSR115, it sugests creating several (3?) permission objects - 
each will be associated with the request.

The creation of those objects will be part of the container ( probably in
a valve or other module ). 

The point is that all _authorization_ decisions will be deletated to 
a plugin - tomcat will just make the calls. It will be tomcat's 
job to provide the arguments and deal with the response.

OK. But I would prefer nmot having that code in the current 
AuthenticatorBase. We will need something inbetween AuthenticatorBase 
and AuthorizationBase (WebPermissionUtil)



 

((HttpServletResponse) response.getResponse()).sendError(  )
   


I don't think mixing HTTP request processing in the authorizer is a good
idea, and it seems JSR115 ( at least the published draft ) is on the same
side.


Well, I agree...if we have something in between Authentication and 
Authorization :-)


Let the authorizer deal with authorization - if the permissions  
( to a URI, method, transport ) are valid.


 

If the method only return false, then we will not be able to properly
set the error(SC_INTERNAL_SERVER_ERROR or FORBIDDEN etc.).
   


Another reason to let the authorizer deal with authorization and nothing
else. A false will mean FORBIDDEN. ( we can still know what was forbidden
- we'll have to check 3 different permissions )\


True. Using the permission type we can find the which error type to return.




 

I would prefer having:

interface Authorization {
 boolean hasPermission( HttpServletResponse, Permission p )
}
   


You can get the Response from the Request - passing one or both is the same.


True. My mistake.



Again - that would mean the authorizer will deal with HTTP processing, that
will keep code complex. 

The JSR115 aproach is IMO much better - all the information that must be 
checked ( URI, method, etc ) is passed as part of the requested permission.


 

since p should contains all the information required to grant/denied the
request.
   


Exactly - there is no need to pass the response/request. If you really want
- you can cast the permission to TomcatRequestPermission and get the source
request and response. 

+1


 



 

or

interface Authorization {
 boolean hasPermission( HttpServletRequest, HttpServletResponse, String
 role )
}

if we don't want a Permission object.
   


I don't see why not. ( and it's not one, but few ). This is far more 
flexible.


 

Based on the permission type, we will be able to discover if it's a
Resource/UserData/Role call.
   


+1


 

I'm still trying to figure out the hack in JSR155 ( with the
permission per request ) - but if you understand

 

I hope I understand a little...I did participate in the
definition/implementation of the specs :-)
   


Good to know :-) 



 

it we can even
use

boolean implies( Permission currentRequestPermission,
 Permission targetPermission )

 

Here I assume targetPermission is a permission that we have created when
reading the web.xml (right?).  We will have a collection of
targetPermission. To make it work, we will have to do:
   


Sorry - I meant PermissionCollection for the second argument, and yes - it
includes all the permissions from the web.xml ( and maybe the permissions
from the policy - if in sandbox mode ).



 

for (int i; i  targetPermissionCollection; i++){
   ...implies(currentRequestPermission, targetPermissionCollection(i));
}

I would prefer having:

Provider
--

boolean implies( ProtectionDomain currentRequestPermission,
Permission currentRequestPermission )
   


Yes, that's what I had in mind too - except PermissionCollection instead
of ProtectionDomain.


Actually - I have a better idea ( IMHO :-):

Request {
  ...
  Permissions requestPermissions[]; - we add this to coyote request ( with
getter/setter )
}

Context {
  
  PermissionCollection authorizer;
}
 
The Authorizer will just be an implementation of PermissionCollection.

It seems JSR115 is a bit confused about this - in 4.7 it lists 6
alternatives for checking. I don't see why anything more than providing a 
PermissionCollection and using impies() would be needed.

But I'm fine with ProtectionDomain - it adds the CodeSource of the
context ( which is good ). Not sure what the principals would be.

The small problem I see is if we go with a PermissionCollection, people 
interested in extending the model will be limited by the 
PermissionCollection design. I would prefer having an implementation of 
a Policy object instead.





 

Here is how I see 

cvs commit: jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext BodyTag.java IterationTag.java PageData.java SimpleTagSupport.java TagExtraInfo.java TagLibraryValidator.java TryCatchFinally.java

2003-01-29 Thread kinman
kinman  2003/01/29 13:42:13

  Modified:jsr152/src/share/javax/servlet/jsp JspContext.java
JspEngineInfo.java JspFactory.java PageContext.java
   jsr152/src/share/javax/servlet/jsp/tagext BodyTag.java
IterationTag.java PageData.java
SimpleTagSupport.java TagExtraInfo.java
TagLibraryValidator.java TryCatchFinally.java
  Log:
  - Patch by Mark Roth:
  
  Javadoc enhancements for JSP 2.0 API.
  
  New Files (attached separately):
   - jsr152/src/share/javax/servlet/jsp/package.html
   - jsr152/src/share/javax/servlet/jsp/el/package.html
   - jsr152/src/share/javax/servlet/jsp/tagext/package.html
  
  jsr152/src/share/javax/servlet/jsp/JspContext.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/JspFactory.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/PageContext.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/tagext/BodyTag.java
   - Added description for doInitBody() @throws JspException
  
  jsr152/src/share/javax/servlet/jsp/tagext/IterationTag.java
   - Added description for doAfterBody() @throws JspException
  
  jsr152/src/share/javax/servlet/jsp/tagext/PageData.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/tagext/SimpleTagSupport.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/tagext/TagExtraInfo.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/tagext/TagLibraryValidator.java
   - Added javadoc comment for public no-args constructor
  
  jsr152/src/share/javax/servlet/jsp/tagext/TryCatchFinally.java
   - Added @throws Throwable tag for doCatch()
  
  Revision  ChangesPath
  1.7   +7 -0  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java
  
  Index: JspContext.java
  ===
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspContext.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JspContext.java   18 Dec 2002 18:35:37 -  1.6
  +++ JspContext.java   29 Jan 2003 21:42:13 -  1.7
  @@ -109,6 +109,13 @@
   
   public abstract class JspContext {
   
  +/**
  + * Sole constructor. (For invocation by subclass constructors, 
  + * typically implicit.)
  + */
  +public JspContext() {
  +}
  +
   /** 
* Register the name and value specified with page scope semantics.
* If the value passed in is codenull/code, this has the same 
  
  
  
  1.2   +7 -0  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java
  
  Index: JspEngineInfo.java
  ===
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspEngineInfo.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JspEngineInfo.java13 Aug 2002 16:20:54 -  1.1
  +++ JspEngineInfo.java29 Jan 2003 21:42:13 -  1.2
  @@ -61,6 +61,13 @@
*/
   
   public abstract class JspEngineInfo {
  +
  +/**
  + * Sole constructor. (For invocation by subclass constructors, 
  + * typically implicit.)
  + */
  +public JspEngineInfo() {
  +}
   
   /**
* Return the version number of the JSP specification that is supported by
  
  
  
  1.3   +7 -0  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspFactory.java
  
  Index: JspFactory.java
  ===
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/JspFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JspFactory.java   19 Aug 2002 16:29:49 -  1.2
  +++ JspFactory.java   29 Jan 2003 21:42:13 -  1.3
  @@ -82,6 +82,13 @@
   public abstract class JspFactory {
   
   private static JspFactory deflt = null;
  +
  +/**
  + * Sole constructor. (For invocation by subclass constructors, 
  + * typically implicit.)
  + */
  +public JspFactory() {
  +}
   
   /**
* p
  
  
  
  1.7   +8 -1  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java
  
  Index: PageContext.java
  ===
  RCS file: 
/home/cvs/jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/PageContext.java,v
  retrieving revision 1.6
 

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet JspServlet.java

2003-01-29 Thread jfarcand
jfarcand2003/01/29 14:09:32

  Modified:jasper2/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  Remove the condition. DummyRequest will be modified.
  
  Revision  ChangesPath
  1.22  +7 -11 
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java
  
  Index: JspServlet.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServlet.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- JspServlet.java   29 Jan 2003 18:20:08 -  1.21
  +++ JspServlet.java   29 Jan 2003 22:09:32 -  1.22
  @@ -231,14 +231,10 @@
log.debug(\t  Request Params: );
Enumeration e = request.getParameterNames();
   
  -// Occurs only when DummyRequest is used (this method never 
  -// when used in the normal case return null
  -if (e != null) {
  -while (e.hasMoreElements()) {
  -String name = (String) e.nextElement();
  -log.info(\t\t  + name +  =  +
  - request.getParameter(name));
  -}
  +   while (e.hasMoreElements()) {
  +String name = (String) e.nextElement();
  +log.info(\t\t  + name +  =  +
  + request.getParameter(name));
   }
}
   serviceJspFile(request, response, jspUri, null, precompile);
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/tagext package.html

2003-01-29 Thread kinman
kinman  2003/01/29 14:26:18

  Added:   jsr152/src/share/javax/servlet/jsp package.html
   jsr152/src/share/javax/servlet/jsp/el package.html
   jsr152/src/share/javax/servlet/jsp/tagext package.html
  Log:
  - Add new files
  
  Revision  ChangesPath
  1.1  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/package.html
  
  Index: package.html
  ===
  !DOCTYPE HTML PUBLIC -//IETF//DTD HTML//EN
  html
  head
  !--
- The Apache Software License, Version 1.1
-
- Copyright (c) 1999 The Apache Software Foundation.  All rights 
- reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer. 
-
- 2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in
-the documentation and/or other materials provided with the
-distribution.
-
- 3. The end-user documentation included with the redistribution, if
-any, must include the following acknowlegement:  
-   This product includes software developed by the 
-Apache Software Foundation (http://www.apache.org/).
-Alternately, this acknowlegement may appear in the software itself,
-if and wherever such third-party acknowlegements normally appear.
-
- 4. The names The Jakarta Project, Tomcat, and Apache Software
-Foundation must not be used to endorse or promote products derived
-from this software without prior written permission. For written 
-permission, please contact [EMAIL PROTECTED]
-
- 5. Products derived from this software may not be called Apache
-nor may Apache appear in their names without prior written
-permission of the Apache Group.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
- 
-
- This software consists of voluntary contributions made by many
- individuals on behalf of the Apache Software Foundation.  For more
- information on the Apache Software Foundation, please see
- http://www.apache.org/.
-
--
  /head
  body bgcolor=white
  Classes and interfaces for the Core JSP 2.0 API.
  p
  The javax.servlet.jsp package contains a number of classes and
  interfaces that describe and define the contracts between a JSP page
  implementation class and the runtime environment provided for an
  instance of such a class by a conforming JSP container.
  /body
  /html
  
  
  
  1.1  
jakarta-servletapi-5/jsr152/src/share/javax/servlet/jsp/el/package.html
  
  Index: package.html
  ===
  !DOCTYPE HTML PUBLIC -//IETF//DTD HTML//EN
  html
  head
  !--
- The Apache Software License, Version 1.1
-
- Copyright (c) 1999 The Apache Software Foundation.  All rights 
- reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer. 
-
- 2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in
-the documentation and/or other materials provided with the
-distribution.
-
- 3. The end-user documentation included with the redistribution, if
-any, must include the following acknowlegement:  
-   This product includes software developed by the 
-Apache Software Foundation (http://www.apache.org/).
-Alternately, this acknowlegement may appear in the software itself,
-if and wherever such third-party acknowlegements 

Re: [5.0] Splitting authentication and authorization.

2003-01-29 Thread Costin Manolache
Jeanfrancois Arcand wrote:

If we look at JSR115, it sugests creating several (3?) permission objects
- each will be associated with the request.

The creation of those objects will be part of the container ( probably in
a valve or other module ).

The point is that all _authorization_ decisions will be deletated to
a plugin - tomcat will just make the calls. It will be tomcat's
job to provide the arguments and deal with the response.

 OK. But I would prefer nmot having that code in the current
 AuthenticatorBase. We will need something inbetween AuthenticatorBase
 and AuthorizationBase (WebPermissionUtil)


As long as authorization (and authentication) does not deal directly with
http requests ( i.e. plain JSR115/Java security  + JAAS ) - I'm fine. 

Separating the authorization and authentication abstractions is one thing -
implementing the request processing is another. WebPermissionUtil needs
to know how to do the calls to authorization/authentication and how to 
provide the right permissions.

I don't see too much value in having AuthenticatorBase and AuthorizatiorBase
- if the authorizer is a ProtectionDomain or Policy, all we need is an
implementation of that, called from the a valve.


I don't think mixing HTTP request processing in the authorizer is a good
idea, and it seems JSR115 ( at least the published draft ) is on the same
side.

 Well, I agree...if we have something in between Authentication and
 Authorization :-)

That's the current valve - with the authorization code moved in a 
TomcatProtectionDomain class ( that extends ProtectionDomain, is pluggable,
etc )

I would make the JAAS valve the default - and hope that Nacho and the
other people will be able to refactor the LDAP/JDBC valves to JAAS plugin
modules ( bonus: they'll become reusable in other servers that use JAAS ).


Another reason to let the authorizer deal with authorization and nothing
else. A false will mean FORBIDDEN. ( we can still know what was
forbidden - we'll have to check 3 different permissions )\

 True. Using the permission type we can find the which error type to
 return.

Or what action to perform - redirect to the login page, etc.


It seems JSR115 is a bit confused about this - in 4.7 it lists 6
alternatives for checking. I don't see why anything more than providing a
PermissionCollection and using impies() would be needed.

But I'm fine with ProtectionDomain - it adds the CodeSource of the
context ( which is good ). Not sure what the principals would be.

 The small problem I see is if we go with a PermissionCollection, people
 interested in extending the model will be limited by the
 PermissionCollection design. I would prefer having an implementation of
 a Policy object instead.

The problem with Policy:
 There is only one Policy object in effect at any given time  ( in
javadoc).

That limits a lot our flexibility.

Having a PermissionCollection per server or per Context still permits
people to have them in the global Policy. 

Each Context will be associated with a CodeSource ( it is already AFAIK ),
and the Policy is just a container for CodeSource-PermissionCollection.

If we use PermissionCollection in our code, it is very easy
to extract it from a Policy ( if one is present ), but we can have more 
flexibility. It would be possible to plug in a PermissionCollection 
in a context - without having it in the Policy, and we can use tomcat
with a foreign policy, installed by a different application ( which may
not support 115 )


Here is how I see the process (simplified):

(1) when Tomcat starts, create the Policy (Provider is we standardize on
115)



There is no requirement on that - we can create a ProtectionDomain or
Policy without 115. ( well, we already do - AFAIK - for the class loader
).

 Here I mean the Policy implementation.

See my previous comment. 

I'm ok with having a Policy created - but as an optional step, our
code should use PermCollection. If a Policy already exists - and
it can be used ( i.e. 115 compatible ) - we should use it, but it
shouldn't be required. 

( by JSR115 compatible I mean it support the interfaces that allow us
to modify it )


(2) when deploying web.xml, created the appropriate Permission object
(proprietary or 115) and store them inside a PolicyConfiguration object.



That's my biggest problem with 115 :-)

All J2EE is moving toward JMX - and they define yet another config API.
Sorry - I will vote for proprietary here ( actually - JMX ). The Policy
will just be an MBean ( of cource, that assummes JMX1.2 - so the mbean
server is protected ).

 There is nothing that prevent us implementing a PolicyConfiguration
 using JMX and still be 115 compliant. Doing that will allow changing the
 permission without stopping the container. That's a very nice feature.

I know - my point was that JSR115 should specify the JMX attributes and 
mechanism - instead of defining the interfaces. 
Look at JSR77 for example ( which is far from perfect, but IMO goes in
a very good 

cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup Catalina.java

2003-01-29 Thread luehe
luehe   2003/01/29 14:32:09

  Modified:catalina/src/share/org/apache/catalina/startup Catalina.java
  Log:
  Provide valid default for connector class
  
  Revision  ChangesPath
  1.13  +5 -5  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/Catalina.java
  
  Index: Catalina.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/Catalina.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Catalina.java 10 Jan 2003 18:48:49 -  1.12
  +++ Catalina.java 29 Jan 2003 22:32:09 -  1.13
  @@ -330,7 +330,7 @@
   org.apache.catalina.LifecycleListener);
   
   digester.addObjectCreate(Server/Service/Connector,
  - org.apache.catalina.connector.http.HttpConnector,
  + org.apache.coyote.tomcat5.CoyoteConnector,
className);
   digester.addSetProperties(Server/Service/Connector);
   digester.addSetNext(Server/Service/Connector,
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core DummyRequest.java

2003-01-29 Thread jfarcand
jfarcand2003/01/29 14:40:19

  Modified:catalina/src/share/org/apache/catalina/core
DummyRequest.java
  Log:
  Return an empty enumeration instead of a null to be spec compliant (and to avoid 
JspServlet to throw NPE)
  
  Revision  ChangesPath
  1.6   +14 -5 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java
  
  Index: DummyRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DummyRequest.java 29 Jan 2003 20:57:16 -  1.5
  +++ DummyRequest.java 29 Jan 2003 22:40:19 -  1.6
  @@ -155,6 +155,15 @@
   
   protected FilterChain filterChain = null;
   protected ValveContext valveContext = null;
  +
  +protected Enumeration dummyEnum = new Enumeration(){
  +public boolean hasMoreElements(){
  +return false;
  +}
  +public Object nextElement(){
  +return null;
  +}
  +};
   
   public String getContextPath() {
   return (contextPath);
  @@ -310,7 +319,7 @@
   public void setUserPrincipal(Principal principal) {}
   public String getParameter(String name) { return null; }
   public Map getParameterMap() { return null; }
  -public Enumeration getParameterNames() { return null; }
  +public Enumeration getParameterNames() { return dummyEnum; }
   public String[] getParameterValues(String name) { return null; }
   public RequestDispatcher getRequestDispatcher(String path) {
   return null;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup ContextConfig.java

2003-01-29 Thread amyroh
amyroh  2003/01/29 15:02:38

  Modified:catalina/src/share/org/apache/catalina/startup
ContextConfig.java
  Log:
  Fix bugzilla  7564 - Avoid hardcoding the default deployment descriptor location.
  
  Revision  ChangesPath
  1.18  +35 -6 
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/ContextConfig.java
  
  Index: ContextConfig.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ContextConfig.java16 Jan 2003 21:44:17 -  1.17
  +++ ContextConfig.java29 Jan 2003 23:02:38 -  1.18
  @@ -165,7 +165,13 @@
*/
   private int debug = 0;
   
  -
  +
  +/**
  + * The default web application's deployment descriptor location.
  + */
  +private String defaultWebXml = Constants.DefaultWebXml;
  +
  +
   /**
* Track any fatal errors during startup configuration processing.
*/
  @@ -202,7 +208,7 @@
*/
   private static boolean xmlNamespaceAware = false;
   
  -
  +
   // - Properties
   
   
  @@ -226,6 +232,28 @@
   this.debug = debug;
   
   }
  +
  +
  +/**
  + * Return the location of the default deployment descriptor
  + */
  +public String getDefaultWebXml() {
  +
  +return (this.defaultWebXml);
  +
  +}
  +
  +
  +/**
  + * Set the location of the default deployment descriptor
  + *
  + * @param path Absolute/relative path to the default web.xml
  + */
  +public void setDefaultWebXml(String path) {
  +
  +this.defaultWebXml = path;
  +
  +}
   
   
   // - Public Methods
  @@ -603,10 +631,11 @@
   long t1=System.currentTimeMillis();
   
   // Open the default web.xml file, if it exists
  -File file = new File(Constants.DefaultWebXml);
  -if (!file.isAbsolute())
  +File file = new File(this.defaultWebXml);
  +if (!file.isAbsolute()) {
   file = new File(System.getProperty(catalina.base),
  -Constants.DefaultWebXml);
  +this.defaultWebXml);
  +}
   FileInputStream stream = null;
   try {
   stream = new FileInputStream(file.getCanonicalPath());
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 7564] - Avoid hardcoding the default deployment descriptor location

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7564.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7564

Avoid hardcoding the default deployment descriptor location

[EMAIL PROTECTED] changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED



--- Additional Comments From [EMAIL PROTECTED]  2003-01-29 23:08 ---
Fixed.  Should be available in the next release.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16572] New: - Compile error when invoking tag file that uses JSTL

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16572.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16572

Compile error when invoking tag file that uses JSTL

   Summary: Compile error when invoking tag file that uses JSTL
   Product: Tomcat 5
   Version: Nightly Build
  Platform: All
OS/Version: All
Status: NEW
  Severity: Blocker
  Priority: Other
 Component: Jasper2
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


A simple JSP page:

  %@ taglib prefix=my tagdir=/WEB-INF/tags/mytags %
  my:test/

invoking a simple tag file:
  %@ taglib prefix=c uri=http://java.sun.com/jstl/core_rt; %
  jsp:useBean id=now class=java.util.Date /
  c:out value=${now} /

Results in:
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:



at
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:120)
at 
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:307)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:405)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:429)
at 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:572)
at
org.apache.jasper.servlet.JspServletWrapper.loadTagFile(JspServletWrapper.java:215)
at
org.apache.jasper.compiler.TagFileProcessor.loadTagFile(TagFileProcessor.java:446)
at 
org.apache.jasper.compiler.TagFileProcessor.access$000(TagFileProcessor.java:84)
at
org.apache.jasper.compiler.TagFileProcessor$TagFileLoaderVisitor.visit(TagFileProcessor.java:488)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1033)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1700)
[...]

If I change the tag file to not use c:out, everything works fine:

  jsp:useBean id=now class=java.util.Date /
  ${now}

Since I've seen the same error with other JSTL (1.0.1) actions, I assume there's
a problem with JSTL (or custom actions in general) in tag files.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core DummyRequest.java

2003-01-29 Thread jfarcand
jfarcand2003/01/29 16:04:29

  Modified:catalina/src/share/org/apache/catalina/core
DummyRequest.java
  Log:
  Make the dummy enumeration static and private. This way we will create only 1 object.
  
  Thanks to Jan.
  
  Revision  ChangesPath
  1.7   +5 -5  
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java
  
  Index: DummyRequest.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DummyRequest.java 29 Jan 2003 22:40:19 -  1.6
  +++ DummyRequest.java 30 Jan 2003 00:04:28 -  1.7
  @@ -156,7 +156,7 @@
   protected FilterChain filterChain = null;
   protected ValveContext valveContext = null;
   
  -protected Enumeration dummyEnum = new Enumeration(){
  +private static Enumeration dummyEnum = new Enumeration(){
   public boolean hasMoreElements(){
   return false;
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




JSP javadocs not available

2003-01-29 Thread Mark Roth
Hi,

I noticed the link on the following page states Servlet/JSP Javadocs 
but only the Servlet javadocs are available.

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/index.html

- Mark


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[PATCH] Remove redundant constructor from StandardSessionFacade

2003-01-29 Thread Daniel Rall
* catalina/src/share/org/apache/catalina/session/StandardSessionFacade.java
  StandardSessionFacade(StandardSession): Removed redundant constructor.  As 
  StandardSession implements HttpSession, the 
  StandardSessionFacade(HttpSession) constructor already does the job 
  admirably.


--- 
/tmp/jakarta-tomcat-4.1.18-src/catalina/src/share/org/apache/catalina/session/StandardSessionFacade.java
Wed Jan 29 15:56:00 2003
+++ /tmp/StandardSessionFacade.java Wed Jan 29 15:56:00 2003
@@ -104,15 +104,6 @@
 /**
  * Construct a new session facade.
  */
-public StandardSessionFacade(StandardSession session) {
-super();
-this.session = (HttpSession) session;
-}
-
-
-/**
- * Construct a new session facade.
- */
 public StandardSessionFacade(HttpSession session) {
 super();
 this.session = session;



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16574] New: - java.lang.NullPointerException in classes that implement HttpSessionBindingListener

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16574.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16574

java.lang.NullPointerException in classes that implement HttpSessionBindingListener

   Summary: java.lang.NullPointerException in classes that implement
HttpSessionBindingListener
   Product: Tomcat 4
   Version: 4.1.18
  Platform: Other
OS/Version: Windows NT/2K
Status: UNCONFIRMED
  Severity: Normal
  Priority: Other
 Component: Servlet  JSP API
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


The problem is, that when replace a session attribute that implements 
HttpSessionBindingListener, in the valueUnbound method I get 
java.lang.NullPointerException.

example:
public void valueUnbound(HttpSessionBindingEvent be) {
  User u = (User)be.getValue();
  System.out.println(The user  + u.getName() +  was unbounded);
}

I believe that the error is that in line 1250 of StandardSession 
(new HttpSessionBindingEvent((HttpSession) this, name));
you have put (new HttpSessionBindingEvent((HttpSession) this, name, unbound));

In the specification of Servlet 2.3, the method getValue() of 
HttpSessionBindingEvent class say:

   If the attribute was replaced, this is the old value of the attribute.

Thank for your attention and sorry for my english. I you don't understand me, 
please let me know.

Jorge L. Middleton
Bs. As. Argentina

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16572] - Compile error when invoking tag file that uses JSTL

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16572.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16572

Compile error when invoking tag file that uses JSTL





--- Additional Comments From [EMAIL PROTECTED]  2003-01-30 00:32 ---
The bug was due to a recent change in tag pooling, and the changes introduced a
bug when tag pooling is enabled in a tag file.  The method
org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool has been modified to
take a jspServlet, which a tag file is not.  Hence the bug.

A workaround is to turn off tag pooling.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16576] New: - JSP 1.2 spec section 10.2.2 - BodyTag

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16576.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16576

JSP 1.2 spec section 10.2.2 - BodyTag

   Summary: JSP 1.2 spec section 10.2.2 - BodyTag
   Product: Tomcat 4
   Version: 4.1.18
  Platform: All
OS/Version: All
Status: NEW
  Severity: Normal
  Priority: Other
 Component: Servlet  JSP API
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


The Catalina servlet container does not call the doAfterBody() method of a 
BodyTag handler if the BodyTag's corresponding XML tag in the JSP is empty.  
While this may seem sensible, it is required by the JSP spec that 
setBodyContent(), initBody() and doAfterBody() are called if the return value 
from doStartTag() is EVAL_BODY_BUFFERED.  In such a case the container should 
push an empty BodyContent object onto the pageContext BodyContent stack.  This 
may break (has broken) web apps implementing custom tag handlers that conform 
to the standard.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16576] - JSP 1.2 spec section 10.2.2 - BodyTag

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16576.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16576

JSP 1.2 spec section 10.2.2 - BodyTag





--- Additional Comments From [EMAIL PROTECTED]  2003-01-30 02:07 ---
Correction to the above: setBodyContent() should not be called for empty tags -
 however the description of doAfterBody() implies that this method should be 
called - the spec doc also seems to contradict itself here when comparing the 
text to the state transition diagram of the same section which would seem to 
suggest that setBodyContent() is a prerequisite of doInitBody() and doAfterBody
() - some clarification of the spec perhaps?

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler Compiler.java

2003-01-29 Thread luehe
luehe   2003/01/29 19:22:01

  Modified:jasper2/src/share/org/apache/jasper/compiler Compiler.java
  Log:
  Capture javac error messages
  
  Revision  ChangesPath
  1.48  +1 -4  
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
  
  Index: Compiler.java
  ===
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- Compiler.java 26 Jan 2003 19:00:58 -  1.47
  +++ Compiler.java 30 Jan 2003 03:22:01 -  1.48
  @@ -153,10 +153,7 @@
   logger = new JasperAntLogger();
   logger.setOutputPrintStream(System.out);
   logger.setErrorPrintStream(System.err);
  -
  -if( log.isTraceEnabled() ) {
  -logger.setMessageOutputLevel( Project.MSG_VERBOSE );
  -}
  + logger.setMessageOutputLevel(Project.MSG_INFO);
   project.addBuildListener( logger);
   
   if( options.getCompiler() != null ) {
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16579] New: - documentation page layout/style breaks wrapping to fit browser window

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16579.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16579

documentation page layout/style breaks wrapping to fit browser window

   Summary: documentation page layout/style breaks wrapping to fit
browser window
   Product: Tomcat 4
   Version: 4.0 Final
  Platform: All
   URL: http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-
resources-howto.html
OS/Version: All
Status: NEW
  Severity: Normal
  Priority: Other
 Component: Unknown
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]


Could the page layout for Tomcat documentation please be reconsidered?
It stops _all_ regular text from wrapping to fit the window when _any_ 
line of fixed-width text is wider than the window. 

Specifically, using an HTML table to put navigation links to the left of
the main page text forces the browser to ignore the width of the browser 
window and wrap wrappable text to match the width of the longest fixed-width
line.  Then, when the user uses a window that is not as wide as the longest
line, the user must scroll horizontally to read _every_ line.  

(If the browser weren't constrained by the table, it could wrap all the
wrappable text to fit the window, and only the long, fixed-width lines 
would require horizontal scrolling to see.)


I realize that avoiding putting the body text inside a table may prevent
having a list of navigation links on the left.

However, PLEASE re-consider the layout.  

One option is to put navigation elements at the top of the page.  (You don't
need a table to do that, so the body text doesn't need to be in a table, so
wrappable text can still wrap to fit the browser window.)

Another thing to consider is whether every detail page really needs a list of 
links to every sibling page.  (Books don't have a copy of the table of contents
at the start of each chapter.)  Each detail page needs only an up link to one
common index page that lists the various detail pages. (Of course, you'd
probably have more links that just that absolute minimum.))

Consider some precedents:

Sun's JavaDoc layout for a class:
- Class description text and member description text wraps to fit even very
  narrow windows, even if summary tables don't fit within the window.
  (Also, notice that each summary table is independent.  If one is too wide
  and requires horizontal scrolling, the others can still fit.)
- The page for one class is not cluttered with links to a bunch of sibling
  classes.
- The page has an up link to the page for the containing package, which does
  list the sibling classes of the given class.
- The navigation is on the top, not the left.  (That allows most of the text
  to wrap to fit within the window width.)

Linux HOW-TO documents in HTML generated from DocBook:
- Wrappable text wraps to fit the browser window, even if some fixed-width text
  or images are wider.
- There are some basic Next/Previous/section number links at the top.
- The pages are not cluttered with multiple links to sibling documents, just
  a simple up link or two.



Relatedly, when thinking about page widths, please don't assume that all
readers use full-screen browser windows.  Especially for technical 
documentation, readers are likely to be reading documentation in one window
and using it (e.g., editing code, running some tool) in another window.

Also note how wide pages such as
http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html are.
On my system, that page requires a 1086-pixel-wide browser window to display
the entire width!  Display just the body does fit in 800 pixels, but you'd
need 1600 pixels across to see the text without scrolling on one side of your
screen and edit something in a same-sized window on the other side.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




DO NOT REPLY [Bug 16577] - WebappClassLoader delegates to parent loader

2003-01-29 Thread bugzilla
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16577.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16577

WebappClassLoader delegates to parent loader

[EMAIL PROTECTED] changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||WONTFIX



--- Additional Comments From [EMAIL PROTECTED]  2003-01-30 07:04 ---
The behavior mentioned in the specification is only a recommendation.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]