You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/08/03 04:54:53 UTC
cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/xml XmlMapper.java
costin 01/08/02 19:54:53
Modified: src/share/org/apache/tomcat/util/xml XmlMapper.java
Log:
Added method to find what entities were found by the mapper.
Resize the rule[] ( for complex mappings )
Use the configured class loader to find resources ( can be a thread class loader,
or something set by the caller )
Added simple debug method in case the resource is not found.
Revision Changes Path
1.36 +39 -7 jakarta-tomcat/src/share/org/apache/tomcat/util/xml/XmlMapper.java
Index: XmlMapper.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/xml/XmlMapper.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- XmlMapper.java 2001/07/19 21:43:02 1.35
+++ XmlMapper.java 2001/08/03 02:54:53 1.36
@@ -47,7 +47,8 @@
int debug=0;
boolean validating=false;
-
+ private Hashtable entities = new Hashtable();
+
public XmlMapper() {
attributeStack = new Object[200]; // depth of the xml doc
tagStack = new String[200];
@@ -369,6 +370,9 @@
resDTDs.put(publicId, dtdRes);
}
+ public Hashtable getEntities() {
+ return entities;
+ }
class Rule {
XmlMatch match;
@@ -441,6 +445,11 @@
}
public void addRule( String path, XmlAction action ) {
+ if( ruleCount >= rules.length ) {
+ Rule tmp[]=new Rule[ 2* rules.length ];
+ System.arraycopy( rules, 0, tmp, 0, rules.length);
+ rules=tmp;
+ }
rules[ruleCount]=new Rule( new PathMatch( path ) , action);
ruleCount++;
}
@@ -492,8 +501,10 @@
if(systemId == null) {
log("systemId is 'null'");
- return null;
+ systemId="";
}
+
+ entities.put( publicId, systemId );
String dtd = (String) fileDTDs.get(publicId);
if( dtd != null ) {
File dtdF=new File( dtd );
@@ -507,17 +518,38 @@
dtd = (String) resDTDs.get( publicId );
if( dtd != null ) {
- InputStream is = this.getClass().getResourceAsStream( dtd );
+ InputStream is = getClassLoader().getResourceAsStream( dtd );
if( is!= null )
return new InputSource(is);
- System.out.println("XXX resource not found !!! " + dtd);
- System.out.println(this.getClass().getClassLoader().getClass().getName());
+ dumpCP( getClassLoader() );
}
- log("Can't find resource for entity: " + publicId + " --> " + systemId + " \"" + dtd +"\"");
-
+ log("Can't find resource for entity: " + publicId + " --> " +
+ systemId + " \"" + dtd +"\"");
return null;
}
+
+ public static void dumpCP( ClassLoader cl ) {
+ org.apache.tomcat.util.compat.Jdk11Compat jdk=
+ org.apache.tomcat.util.compat.Jdk11Compat.getJdkCompat();
+ URL urls[]=jdk.getURLs( cl, 0 );
+ System.out.println("CLASSPATH " );
+ for( int i=0; i< urls.length; i++ ) {
+ System.out.println(" " + urls[i] );
+ }
+ urls=jdk.getURLs( cl, 1 );
+ System.out.println();
+ for( int i=0; i< urls.length; i++ ) {
+ System.out.println(" " + urls[i] );
+ }
+ urls=jdk.getURLs( cl, 2 );
+ System.out.println();
+ for( int i=0; i< urls.length; i++ ) {
+ System.out.println(" " + urls[i] );
+ }
+ }
+
+
public void notationDecl (String name,
String publicId,