RE: Problem with URLPatternMatcher

2001-06-26 Thread Marc Saegesser

Tomcat 3.2 uses org.apache.tomcat.util.PrefixMapper for mapping URLs into
mapping URL patterns into servlets.  The
org.apache.tomcat.request.AccessInterceptor class handles the security
constraint mappings internally.


 -Original Message-
 From: Creighton Kirkendall [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 4:55 PM
 To: '[EMAIL PROTECTED]'
 Subject: RE: Problem with URLPatternMatcher


 Well, I was but noticed it had this problem.  I did fix the code,
 however I
 am not sure whether or not I am going to use it.  I do need a URLMatcher.
 If you have any suggestions as to a fast one that would be great.  What is
 tomcat using to do its security path constraint matching now.

 Creighton


 -Original Message-
 From: Marc Saegesser [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 5:47 PM
 To: [EMAIL PROTECTED]
 Subject: RE: Problem with URLPatternMatcher


 Yep, it looks like this code is broken, but it isn't actually
 used anywhere
 within Tomcat.  In fact it has been removed in 3.3.  Are you trying ot use
 this class directly in your code?

  -Original Message-
  From: Creighton Kirkendall [mailto:[EMAIL PROTECTED]]
  Sent: Monday, June 25, 2001 8:57 AM
  To: '[EMAIL PROTECTED]'
  Subject: Problem with URLPatternMatcher
 
 
  I have noticed that there is a problem in URLPatternMatcher.  It
  seems that
  in the match function we do not update the length. This is a
  problem because
  it causes the pattern matcher not to return the longest pattern.
  I noticed
  this some time ago but thought it was fixed in latter releases
  but it turns
  out it is still a problem in 3.2.2.  I have included the source
  with the fix
  in this email.
 
 
   * http://www.apache.org/.
   *
   * [Additional notices, if required by prior licensing conditions]
   *
   */
 
  package org.apache.tomcat.util.pattern;
 
  import java.util.Enumeration;
 
  /**
   * A form of pattern matching for URLs in which the object corresponding
   * to the longest matching pattern is returned.
   *
   * @author Harish Prabandham
   */
  public class URLPatternMatcher implements PatternMatcher {
  private ImplicationTable itable = new ImplicationTable();
 
  public URLPatternMatcher() {
  }
 
  public void set(String pattern, Object value) {
  itable.put(new WildcardPattern(pattern), value);
  }
 
  public void remove(String pattern) {
  itable.remove(pattern);
  }
 
  public Object match(String key) {
  // Since we want the longest pattern match, we cannot use the
  // itable.get(key)...
  int len =0;
  Object val = null;
 
  for(Enumeration e = itable.keys(key); e.hasMoreElements(); ){
  Object thiskey = e.nextElement();
  String pattern = thiskey.toString();
  if(pattern.length()  len){
  val = itable.getValue(thiskey);
 
  /*
   *Update 6-25-001
   */
  len=pattern.length();
  }
  }
 
  return val;
  }
 
  public static void main(String[] args) {
  PatternMatcher p = new URLPatternMatcher();
  try {
  p.set(*, default);
  p.set(args[0], works);
  System.out.println(Match:  + p.match(args[1]));
  }catch(Exception e) {
  e.printStackTrace();
  }
  }
  }
 
 
 
  Creighton Kirkendall
  Senior Software Engineer
  Hobsons
  [EMAIL PROTECTED]
 
 
 
  -Original Message-
  From: kevin seguin [mailto:[EMAIL PROTECTED]]
  Sent: Monday, June 25, 2001 9:36 AM
  To: [EMAIL PROTECTED]
  Subject: Re: cvs commit:
  jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat33Ajp14Intercepto
  r.java
 
 
  [EMAIL PROTECTED] wrote:
  
   On Sun, 24 Jun 2001, kevin seguin wrote:
  
i've been thinking about this, and, well, isn't this
  BaseRequest you're
talking about kind of what org.apache.coyote.Request is?
 does it make
sense to have two of these kinds of objects hanging around?  is
o.a.c.Request roughly equivalent to core.Request in tomcat 3??
  
   Certainly not for the second part - the core.Request in tomcat3
  has a lot
   of tomcat3-specific code ( Container, ContextManager, calls
 to hooks to
   get special info like encoding, etc ).
  
   The BaseRequest ( or o.a.c.Request ) is focused on the
   basic information associated with a request, as received by
  the protocol
   adapter.
  
   For the first part - that's true, AjpRequest is very similar in
  goal with
   o.a.c.Request ( thanks to the refactoring you did :-).
  
   As I said, I like o.a.coyote, but right now my goal is to see Ajp14
   working, and using the existing (working) AjpRequest is easier. Also,
   coyote has more than the base request - I would let this settle down.
  
 
  i hear that :)  my immediate goal is ajp13 for tomcat 4 :)  i've checked

Problem with URLPatternMatcher

2001-06-25 Thread Creighton Kirkendall

I have noticed that there is a problem in URLPatternMatcher.  It seems that
in the match function we do not update the length. This is a problem because
it causes the pattern matcher not to return the longest pattern.  I noticed
this some time ago but thought it was fixed in latter releases but it turns
out it is still a problem in 3.2.2.  I have included the source with the fix
in this email.


 * http://www.apache.org/.
 *
 * [Additional notices, if required by prior licensing conditions]
 *
 */ 

package org.apache.tomcat.util.pattern;

import java.util.Enumeration;

/**
 * A form of pattern matching for URLs in which the object corresponding
 * to the longest matching pattern is returned.
 *
 * @author Harish Prabandham
 */
public class URLPatternMatcher implements PatternMatcher {
private ImplicationTable itable = new ImplicationTable();

public URLPatternMatcher() {
}

public void set(String pattern, Object value) {
itable.put(new WildcardPattern(pattern), value);
}

public void remove(String pattern) {
itable.remove(pattern);
}

public Object match(String key) {
// Since we want the longest pattern match, we cannot use the
// itable.get(key)...
int len =0;
Object val = null;

for(Enumeration e = itable.keys(key); e.hasMoreElements(); ){
Object thiskey = e.nextElement();
String pattern = thiskey.toString();
if(pattern.length()  len){
val = itable.getValue(thiskey);

/*
 *Update 6-25-001
 */
len=pattern.length();
}
}

return val;
}

public static void main(String[] args) {
PatternMatcher p = new URLPatternMatcher();
try {
p.set(*, default);
p.set(args[0], works);
System.out.println(Match:  + p.match(args[1]));
}catch(Exception e) {
e.printStackTrace();
}
}
}



Creighton Kirkendall
Senior Software Engineer
Hobsons
[EMAIL PROTECTED]



-Original Message-
From: kevin seguin [mailto:[EMAIL PROTECTED]]
Sent: Monday, June 25, 2001 9:36 AM
To: [EMAIL PROTECTED]
Subject: Re: cvs commit:
jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat33Ajp14Intercepto
r.java


[EMAIL PROTECTED] wrote:
 
 On Sun, 24 Jun 2001, kevin seguin wrote:
 
  i've been thinking about this, and, well, isn't this BaseRequest you're
  talking about kind of what org.apache.coyote.Request is?  does it make
  sense to have two of these kinds of objects hanging around?  is
  o.a.c.Request roughly equivalent to core.Request in tomcat 3??
 
 Certainly not for the second part - the core.Request in tomcat3 has a lot
 of tomcat3-specific code ( Container, ContextManager, calls to hooks to
 get special info like encoding, etc ).
 
 The BaseRequest ( or o.a.c.Request ) is focused on the
 basic information associated with a request, as received by the protocol
 adapter.
 
 For the first part - that's true, AjpRequest is very similar in goal with
 o.a.c.Request ( thanks to the refactoring you did :-).
 
 As I said, I like o.a.coyote, but right now my goal is to see Ajp14
 working, and using the existing (working) AjpRequest is easier. Also,
 coyote has more than the base request - I would let this settle down.
 

i hear that :)  my immediate goal is ajp13 for tomcat 4 :)  i've checked
in an intial version of BaseRequest.  it may need some further work...

-kevin.



RE: Problem with URLPatternMatcher

2001-06-25 Thread Marc Saegesser

Yep, it looks like this code is broken, but it isn't actually used anywhere
within Tomcat.  In fact it has been removed in 3.3.  Are you trying ot use
this class directly in your code?

 -Original Message-
 From: Creighton Kirkendall [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 8:57 AM
 To: '[EMAIL PROTECTED]'
 Subject: Problem with URLPatternMatcher


 I have noticed that there is a problem in URLPatternMatcher.  It
 seems that
 in the match function we do not update the length. This is a
 problem because
 it causes the pattern matcher not to return the longest pattern.
 I noticed
 this some time ago but thought it was fixed in latter releases
 but it turns
 out it is still a problem in 3.2.2.  I have included the source
 with the fix
 in this email.


  * http://www.apache.org/.
  *
  * [Additional notices, if required by prior licensing conditions]
  *
  */

 package org.apache.tomcat.util.pattern;

 import java.util.Enumeration;

 /**
  * A form of pattern matching for URLs in which the object corresponding
  * to the longest matching pattern is returned.
  *
  * @author Harish Prabandham
  */
 public class URLPatternMatcher implements PatternMatcher {
 private ImplicationTable itable = new ImplicationTable();

 public URLPatternMatcher() {
 }

 public void set(String pattern, Object value) {
 itable.put(new WildcardPattern(pattern), value);
 }

 public void remove(String pattern) {
 itable.remove(pattern);
 }

 public Object match(String key) {
 // Since we want the longest pattern match, we cannot use the
 // itable.get(key)...
 int len =0;
 Object val = null;

 for(Enumeration e = itable.keys(key); e.hasMoreElements(); ){
 Object thiskey = e.nextElement();
 String pattern = thiskey.toString();
 if(pattern.length()  len){
 val = itable.getValue(thiskey);

   /*
*Update 6-25-001
*/
   len=pattern.length();
   }
 }

 return val;
 }

 public static void main(String[] args) {
 PatternMatcher p = new URLPatternMatcher();
 try {
 p.set(*, default);
 p.set(args[0], works);
 System.out.println(Match:  + p.match(args[1]));
 }catch(Exception e) {
 e.printStackTrace();
 }
 }
 }



 Creighton Kirkendall
 Senior Software Engineer
 Hobsons
 [EMAIL PROTECTED]



 -Original Message-
 From: kevin seguin [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 9:36 AM
 To: [EMAIL PROTECTED]
 Subject: Re: cvs commit:
 jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat33Ajp14Intercepto
 r.java


 [EMAIL PROTECTED] wrote:
 
  On Sun, 24 Jun 2001, kevin seguin wrote:
 
   i've been thinking about this, and, well, isn't this
 BaseRequest you're
   talking about kind of what org.apache.coyote.Request is?  does it make
   sense to have two of these kinds of objects hanging around?  is
   o.a.c.Request roughly equivalent to core.Request in tomcat 3??
 
  Certainly not for the second part - the core.Request in tomcat3
 has a lot
  of tomcat3-specific code ( Container, ContextManager, calls to hooks to
  get special info like encoding, etc ).
 
  The BaseRequest ( or o.a.c.Request ) is focused on the
  basic information associated with a request, as received by
 the protocol
  adapter.
 
  For the first part - that's true, AjpRequest is very similar in
 goal with
  o.a.c.Request ( thanks to the refactoring you did :-).
 
  As I said, I like o.a.coyote, but right now my goal is to see Ajp14
  working, and using the existing (working) AjpRequest is easier. Also,
  coyote has more than the base request - I would let this settle down.
 

 i hear that :)  my immediate goal is ajp13 for tomcat 4 :)  i've checked
 in an intial version of BaseRequest.  it may need some further work...

 -kevin.




RE: Problem with URLPatternMatcher

2001-06-25 Thread Creighton Kirkendall

Well, I was but noticed it had this problem.  I did fix the code, however I
am not sure whether or not I am going to use it.  I do need a URLMatcher.
If you have any suggestions as to a fast one that would be great.  What is
tomcat using to do its security path constraint matching now.

Creighton


-Original Message-
From: Marc Saegesser [mailto:[EMAIL PROTECTED]]
Sent: Monday, June 25, 2001 5:47 PM
To: [EMAIL PROTECTED]
Subject: RE: Problem with URLPatternMatcher


Yep, it looks like this code is broken, but it isn't actually used anywhere
within Tomcat.  In fact it has been removed in 3.3.  Are you trying ot use
this class directly in your code?

 -Original Message-
 From: Creighton Kirkendall [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 8:57 AM
 To: '[EMAIL PROTECTED]'
 Subject: Problem with URLPatternMatcher


 I have noticed that there is a problem in URLPatternMatcher.  It
 seems that
 in the match function we do not update the length. This is a
 problem because
 it causes the pattern matcher not to return the longest pattern.
 I noticed
 this some time ago but thought it was fixed in latter releases
 but it turns
 out it is still a problem in 3.2.2.  I have included the source
 with the fix
 in this email.


  * http://www.apache.org/.
  *
  * [Additional notices, if required by prior licensing conditions]
  *
  */

 package org.apache.tomcat.util.pattern;

 import java.util.Enumeration;

 /**
  * A form of pattern matching for URLs in which the object corresponding
  * to the longest matching pattern is returned.
  *
  * @author Harish Prabandham
  */
 public class URLPatternMatcher implements PatternMatcher {
 private ImplicationTable itable = new ImplicationTable();

 public URLPatternMatcher() {
 }

 public void set(String pattern, Object value) {
 itable.put(new WildcardPattern(pattern), value);
 }

 public void remove(String pattern) {
 itable.remove(pattern);
 }

 public Object match(String key) {
 // Since we want the longest pattern match, we cannot use the
 // itable.get(key)...
 int len =0;
 Object val = null;

 for(Enumeration e = itable.keys(key); e.hasMoreElements(); ){
 Object thiskey = e.nextElement();
 String pattern = thiskey.toString();
 if(pattern.length()  len){
 val = itable.getValue(thiskey);

   /*
*Update 6-25-001
*/
   len=pattern.length();
   }
 }

 return val;
 }

 public static void main(String[] args) {
 PatternMatcher p = new URLPatternMatcher();
 try {
 p.set(*, default);
 p.set(args[0], works);
 System.out.println(Match:  + p.match(args[1]));
 }catch(Exception e) {
 e.printStackTrace();
 }
 }
 }



 Creighton Kirkendall
 Senior Software Engineer
 Hobsons
 [EMAIL PROTECTED]



 -Original Message-
 From: kevin seguin [mailto:[EMAIL PROTECTED]]
 Sent: Monday, June 25, 2001 9:36 AM
 To: [EMAIL PROTECTED]
 Subject: Re: cvs commit:
 jakarta-tomcat-connectors/jk/java/org/apache/ajp/tomcat33Ajp14Intercepto
 r.java


 [EMAIL PROTECTED] wrote:
 
  On Sun, 24 Jun 2001, kevin seguin wrote:
 
   i've been thinking about this, and, well, isn't this
 BaseRequest you're
   talking about kind of what org.apache.coyote.Request is?  does it make
   sense to have two of these kinds of objects hanging around?  is
   o.a.c.Request roughly equivalent to core.Request in tomcat 3??
 
  Certainly not for the second part - the core.Request in tomcat3
 has a lot
  of tomcat3-specific code ( Container, ContextManager, calls to hooks to
  get special info like encoding, etc ).
 
  The BaseRequest ( or o.a.c.Request ) is focused on the
  basic information associated with a request, as received by
 the protocol
  adapter.
 
  For the first part - that's true, AjpRequest is very similar in
 goal with
  o.a.c.Request ( thanks to the refactoring you did :-).
 
  As I said, I like o.a.coyote, but right now my goal is to see Ajp14
  working, and using the existing (working) AjpRequest is easier. Also,
  coyote has more than the base request - I would let this settle down.
 

 i hear that :)  my immediate goal is ajp13 for tomcat 4 :)  i've checked
 in an intial version of BaseRequest.  it may need some further work...

 -kevin.