pierred     00/10/31 14:54:16

  Modified:    catalina/src/conf web.xml
               jasper/src/share/org/apache/jasper CommandLineContext.java
                        JspCompilationContext.java JspEngineContext.java
               jasper/src/share/org/apache/jasper/compiler
                        JspParseEventListener.java TagLibraryInfoImpl.java
               jasper/src/share/org/apache/jasper/resources
                        messages.properties
               jasper/src/share/org/apache/jasper/servlet JspServlet.java
  Log:
  
  
  Revision  Changes    Path
  1.10      +0 -2      jakarta-tomcat-4.0/catalina/src/conf/web.xml
  
  Index: web.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/conf/web.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- web.xml   2000/10/12 23:34:10     1.9
  +++ web.xml   2000/10/31 22:54:07     1.10
  @@ -50,9 +50,7 @@
         <param-name>logVerbosityLevel</param-name>
         <param-value>WARNING</param-value>
       </init-param>
  -<!--
       <load-on-startup>4</load-on-startup>
  --->
     </servlet>
   
   
  
  
  
  1.3       +11 -3     
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/CommandLineContext.java
  
  Index: CommandLineContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/CommandLineContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CommandLineContext.java   2000/08/31 15:49:39     1.2
  +++ CommandLineContext.java   2000/10/31 22:54:09     1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/CommandLineContext.java,v
 1.2 2000/08/31 15:49:39 shemnon Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/08/31 15:49:39 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/CommandLineContext.java,v
 1.3 2000/10/31 22:54:09 pierred Exp $
  + * $Revision: 1.3 $
  + * $Date: 2000/10/31 22:54:09 $
    *
    * ====================================================================
    * 
  @@ -76,6 +76,8 @@
   //import org.apache.jasper.runtime.JspLoader;
   // Use the jasper loader - the only function used is to add a jar
   import org.apache.jasper.servlet.JasperLoader;
  +import java.net.URL;
  +import java.net.MalformedURLException;
   
   /**
    * Holds data used on a per-page compilation context that would otherwise spill
  @@ -369,6 +371,12 @@
           return in;
       }
   
  +    public java.net.URL getResource(String res) 
  +     throws MalformedURLException
  +    {
  +     // FIXME @@@
  +     return null;
  +    }
   
       /** 
        * Gets the actual path of a URI relative to the context of
  
  
  
  1.2       +7 -3      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspCompilationContext.java
  
  Index: JspCompilationContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspCompilationContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JspCompilationContext.java        2000/08/12 00:52:05     1.1
  +++ JspCompilationContext.java        2000/10/31 22:54:09     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspCompilationContext.java,v
 1.1 2000/08/12 00:52:05 pierred Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/12 00:52:05 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspCompilationContext.java,v
 1.2 2000/10/31 22:54:09 pierred Exp $
  + * $Revision: 1.2 $
  + * $Date: 2000/10/31 22:54:09 $
    *
    * ====================================================================
    * 
  @@ -70,6 +70,8 @@
   //import org.apache.jasper.runtime.JspLoader;
   import org.apache.jasper.compiler.TagLibraries;
   import java.io.IOException;
  +import java.net.URL;
  +import java.net.MalformedURLException;
   import org.apache.jasper.compiler.Compiler;
   
   /**
  @@ -202,6 +204,8 @@
        *         as an InputStream.
        */
       public java.io.InputStream getResourceAsStream(String res);
  +
  +    public java.net.URL getResource(String res) throws MalformedURLException;
   
       /** 
        * Gets the actual path of a URI relative to the context of
  
  
  
  1.2       +11 -3     
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java
  
  Index: JspEngineContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- JspEngineContext.java     2000/08/12 00:52:05     1.1
  +++ JspEngineContext.java     2000/10/31 22:54:10     1.2
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v
 1.1 2000/08/12 00:52:05 pierred Exp $
  - * $Revision: 1.1 $
  - * $Date: 2000/08/12 00:52:05 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/JspEngineContext.java,v
 1.2 2000/10/31 22:54:10 pierred Exp $
  + * $Revision: 1.2 $
  + * $Date: 2000/10/31 22:54:10 $
    *
    * ====================================================================
    * 
  @@ -65,6 +65,8 @@
   
   package org.apache.jasper;
   
  +import java.net.URL;
  +import java.net.MalformedURLException;
   import javax.servlet.ServletContext;
   import javax.servlet.http.HttpServletRequest;
   import javax.servlet.http.HttpServletResponse;
  @@ -346,6 +348,12 @@
       public java.io.InputStream getResourceAsStream(String res)
       {
           return context.getResourceAsStream(res);
  +    }
  +
  +    public java.net.URL getResource(String res)
  +     throws MalformedURLException
  +    {
  +        return context.getResource(res);
       }
   
       /** 
  
  
  
  1.10      +12 -5     
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java
  
  Index: JspParseEventListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JspParseEventListener.java        2000/10/28 03:20:19     1.9
  +++ JspParseEventListener.java        2000/10/31 22:54:11     1.10
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
 1.9 2000/10/28 03:20:19 pierred Exp $
  - * $Revision: 1.9 $
  - * $Date: 2000/10/28 03:20:19 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
 1.10 2000/10/31 22:54:11 pierred Exp $
  + * $Revision: 1.10 $
  + * $Date: 2000/10/31 22:54:11 $
    *
    * ====================================================================
    *
  @@ -735,8 +735,15 @@
        if (directive.equals("taglib")) {
               String uri = attrs.getValue("uri");
               String prefix = attrs.getValue("prefix");
  -         TagLibraryInfo tl = 
  -             new TagLibraryInfoImpl(ctxt, prefix, uri);
  +         TagLibraryInfo tl = null;
  +
  +         String[] location = 
  +             TagLibrariesGlobal.getLocation(uri);
  +         if (location == null) {
  +             tl = new TagLibraryInfoImpl(ctxt, prefix, uri);
  +         } else {
  +             tl = new TagLibraryInfoImpl(ctxt, prefix, uri, location);
  +         }
            libraries.addTagLibrary(prefix, tl);
        }
   
  
  
  
  1.9       +81 -169   
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java
  
  Index: TagLibraryInfoImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TagLibraryInfoImpl.java   2000/10/29 06:10:08     1.8
  +++ TagLibraryInfoImpl.java   2000/10/31 22:54:12     1.9
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v
 1.8 2000/10/29 06:10:08 pierred Exp $
  - * $Revision: 1.8 $
  - * $Date: 2000/10/29 06:10:08 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v
 1.9 2000/10/31 22:54:12 pierred Exp $
  + * $Revision: 1.9 $
  + * $Date: 2000/10/31 22:54:12 $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -60,8 +60,12 @@
   package org.apache.jasper.compiler;
   
   import java.net.URL;
  +import java.net.MalformedURLException;
  +import java.net.JarURLConnection;
   import java.util.zip.ZipInputStream;
   import java.util.zip.ZipEntry;
  +import java.util.jar.*;
  +import java.util.Enumeration;
   import java.io.ByteArrayOutputStream;
   import java.io.ByteArrayInputStream;
   import java.io.FileInputStream;
  @@ -157,9 +161,17 @@
           }
       }
   
  -    public TagLibraryInfoImpl(JspCompilationContext ctxt, String prefix, String 
uriIn) 
  +    public TagLibraryInfoImpl(JspCompilationContext ctxt, String prefix, 
  +                           String uriIn) 
           throws JasperException
       {
  +     this(ctxt, prefix, uriIn, null);
  +    }
  +
  +    public TagLibraryInfoImpl(JspCompilationContext ctxt, String prefix, 
  +                           String uriIn, String[] location) 
  +        throws JasperException
  +    {
           super(prefix, uriIn);
   
        this.ctxt = ctxt;
  @@ -167,181 +179,77 @@
           InputStream in = null;
           URL url = null;
           boolean relativeURL = false;
  -     this.uri = uriIn;
   
  -        // Parse web.xml.
  -     InputStream is;
  -     try {
  -         is = getResourceAsStream(WEB_XML);
  -     } catch (FileNotFoundException ex) {
  -         throw new JasperException(
  -             Constants.getString("jsp.error.internal.file.not.found", 
  -                                 new Object[]{WEB_XML}));
  +     if (location == null) {
  +         // The URI points to the TLD itself or to a jar
  +         // file where the TLD is located
  +         int uriType = TagLibrariesGlobal.uriType(uri);
  +         if (uriType == TagLibrariesGlobal.ABS_URI) {
  +             throw new JasperException(
  +                    Constants.getString("jsp.error.absUriCannotBeResolved",
  +                                     new Object[] {uri}));
  +         } else if (uriType == 
  +                    TagLibrariesGlobal.NOROOT_REL_URI) {
  +             uri = ctxt.resolveRelativeUri(uri);
  +         }
  +         location = new String[2];
  +         location[0] = uri;
  +         if (uri.endsWith("jar")) {
  +             location[1] = "META-INF/taglib.tld";
  +         }
        }
  -        if (is != null) {
  -            Document webtld =
  -                JspUtil.parseXMLDoc(WEB_XML, is);
  -            NodeList nList =  webtld.getElementsByTagName("taglib");
  -
  -            if (nList.getLength() != 0) {
  -                for(int i = 0; i < nList.getLength(); i++) {
  -                    String tagLoc = null;
  -                    boolean match = false;
  -                    Element e =  (Element) nList.item(i);
  -
  -                    // Assume only one entry for location and uri.
  -                    NodeList uriList = e.getElementsByTagName("taglib-uri");
  -                    Element uriElem = (Element) uriList.item(0);
  -                    Text t = (Text) uriElem.getFirstChild();
  -
  -                    if (t != null) {
  -                        String tmpUri = t.getData();
  -                        if (tmpUri != null) {
  -                            tmpUri = tmpUri.trim();
  -                            if (tmpUri.equals(uriIn)) {
  -                                match = true;
  -                                NodeList locList = e.getElementsByTagName
  -                                    ("taglib-location");
  -                                Element locElem = (Element) locList.item(0);
  -                                Text tl = (Text) locElem.getFirstChild();
  -                                if (tl != null) {
  -                                    tagLoc = tl.getData();
  -                                    if (tagLoc != null)
  -                                        tagLoc = tagLoc.trim();
  -                                }
  -                            }
  -                        }
  -                    }
  -                    if (match == true && tagLoc != null) {
  -                        this.uri = tagLoc;
  -
  -                        // If this is a relative path, then it has to be
  -                        // relative to where web.xml is.
  -
  -                        // I'm taking the simple way out. Since web.xml 
  -                        // has to be directly under WEB-INF, I'm making 
  -                        // an absolute URI out of it by prepending WEB-INF
  -
  -                        if (!uri.startsWith("/") && isRelativeURI(uri))
  -                            uri = "/WEB-INF/"+uri;
  -                    }
  -                }
  -            }
  -        }
  -
  -        // Try to resolve URI relative to the current JSP page
  -        if (!uri.startsWith("/") && isRelativeURI(uri))
  -            uri = ctxt.resolveRelativeUri(uri);
  -
   
  -        if (!uri.endsWith("jar")) {
  +        if (!location[0].endsWith("jar")) {
  +         // Location points to TLD file
            try {
  -             in = getResourceAsStream(uri);
  -             if (in == null) throw new FileNotFoundException(uri);
  +             in = getResourceAsStream(location[0]);
  +             if (in == null) throw new FileNotFoundException(location[0]);
            } catch (FileNotFoundException ex) {
                throw new JasperException(
                       Constants.getString("jsp.error.file.not.found",
  -                                     new Object[] {uri}));
  +                                     new Object[] {location[0]}));
            }
            // Now parse the tld.
  -         parseTLD(uri, in);
  -     }
  -         
  -     // FIXME Take this stuff out when taglib changes are thoroughly tested.
  -     /* @@@ taking it out... hopefully the sky won't fall -pierred
  -     if (uri.endsWith("jar")) {
  -         
  -         if (!isRelativeURI(uri)) {
  -             url = new URL(uri);
  -             in = url.openStream();
  -         } else {
  -             relativeURL = true;
  -             in = getResourceAsStream(uri);
  -         }
  -         
  -         zin = new ZipInputStream(in);
  -         this.jarEntries = new Hashtable();
  -         this.ctxt = ctxt;
  -         
  -         // First copy this file into our work directory! 
  -         {
  -             File jspFile = new File(ctxt.getJspFile());
  -                String parent = jspFile.getParent();
  -                String jarFileName = ctxt.getOutputDir();
  -                if (parent != null) {
  -                   jarFileName = jarFileName + File.separatorChar +
  -                       parent;
  -                }
  -                File jspDir = new File(jarFileName);
  -             jspDir.mkdirs();
  -         
  -             if (relativeURL)
  -                 jarFileName = jarFileName+File.separatorChar+new 
File(uri).getName();
  -             else                    
  -                 jarFileName = jarFileName+File.separatorChar+
  -                     new File(url.getFile()).getName();
  -         
  -             Constants.message("jsp.message.copyinguri", 
  -                               new Object[] { uri, jarFileName },
  -                               Logger.DEBUG);
  -         
  -             if (relativeURL)
  -                 copy(getResourceAsStream(uri),
  -                      jarFileName);
  -             else
  -                 copy(url.openStream(), jarFileName);
  -         
  -             ctxt.addJar(jarFileName);
  -         }
  -         
  -         
  -         boolean tldFound = false;
  -         ZipEntry entry;
  -         while ((entry = zin.getNextEntry()) != null) {
  -             if (entry.getName().equals(TAGLIB_TLD)) {
  -                 // This hack is necessary because XML reads until the end 
  -                 // of an inputstream -- does not use available()
  -                 // -- and closes the inputstream when it can't
  -                 // read no more.
  -                 
  -                 // BEGIN HACK
  -                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
  -                 int b;
  -                 while (zin.available() != 0) {
  -                     b = zin.read();
  -                     if (b == -1)
  -                         break;
  -                     baos.write(b);
  -                 }
  -
  -                 baos.close();
  -                 ByteArrayInputStream bais 
  -                     = new ByteArrayInputStream(baos.toByteArray());
  -                 // END HACK
  -                 tldFound = true;
  -                 parseTLD(TAGLIB_TLD, bais);
  -             } else {
  -                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
  -                 int b;
  -                 while (zin.available() != 0) {
  -                     b = zin.read();
  -                     if (b == -1)
  -                         break;
  -                     baos.write(b);
  -                 }
  -                 baos.close();
  -                 jarEntries.put(entry.getName(), baos.toByteArray());
  +         parseTLD(location[0], in);
  +     } else {
  +         // Location points to a jar file
  +         p("JAR FILE: " + location[0]);
  +         // tag library in jar file
  +         JarFile jarFile = null;
  +         ZipEntry jarEntry = null;
  +         InputStream stream = null;
  +         try {
  +             url = ctxt.getResource(location[0]);
  +             p("url = " + url);
  +             if (url == null) return;
  +             url = new URL("jar:" + url.toString() + "!/");
  +             JarURLConnection conn =
  +                 (JarURLConnection) url.openConnection();
  +             conn.connect(); //@@@ necessary???
  +             jarFile = conn.getJarFile();
  +             p("jarFile: " + jarFile);
  +             jarEntry = jarFile.getEntry(location[1]);
  +             p("jarEntry name: " + jarEntry.getName());
  +             stream = jarFile.getInputStream(jarEntry);
  +             parseTLD(location[0], stream);
  +             // FIXME @@@
  +             // -- it seems that the JarURLConnection class caches JarFile 
  +             // objects for particular URLs, and there is no way to get 
  +             // it to release the cached entry, so
  +             // there's no way to redeploy from the same JAR file.  Wierd.
  +         } catch (Exception ex) {
  +             if (stream != null) {
  +                 try {
  +                     stream.close();
  +                 } catch (Throwable t) {}
                }
  -             zin.closeEntry();
  -         }
  -         
  -         if (!tldFound) {
  -             throw new JasperException(
  -                    Constants.getString("jsp.error.tld_not_found",
  -                                     new Object[] {TAGLIB_TLD}));
  +             if (jarFile != null) {
  +                 try {
  +                     jarFile.close();
  +                 } catch (Throwable t) {}
  +             }
            }
  -     } // Take this out (END of if(endsWith("jar")))
  -        */
  +     }
       }
       
       /** Returns true if the given URI is relative in this web application, false if 
it is an internet URI.
  @@ -647,7 +555,7 @@
                   Class tlvClass = 
                    ctxt.getClassLoader().loadClass(validatorClass);
                   tlv = (TagLibraryValidator)tlvClass.newInstance();
  -                //@@@ removed in 1.2PFD tlv.setTagLibraryInfo(this);
  +             //p("got validator class: " + tlv);
               } catch (Exception ex) {
                   Constants.message("jsp.warning.tlvclass.is.null",
                                  new Object[] {
  @@ -729,4 +637,8 @@
       }
   
       protected TagLibraryValidator tagLibraryValidator; 
  +
  +    private void p(String s) {
  +     System.out.println("[TagLibraryInfoImpl] " + s);
  +    }
   }
  
  
  
  1.8       +3 -1      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- messages.properties       2000/10/29 03:23:51     1.7
  +++ messages.properties       2000/10/31 22:54:13     1.8
  @@ -1,4 +1,4 @@
  -# $Id: messages.properties,v 1.7 2000/10/29 03:23:51 pierred Exp $
  +# $Id: messages.properties,v 1.8 2000/10/31 22:54:13 pierred Exp $
   #
   # Default localized string information
   # Localized this the Default Locale as is en_US
  @@ -228,3 +228,5 @@
   jsp.error.unsupported.encoding=Unsupported encoding: {0}
   jsp.warning.unknown.element.in.variable=Warning: Unknown element {0} in variable
   tld.error.variableNotAllowed=It is an error for a tag that has one or more variable 
subelements to have a TagExtraInfo class that returns a non-null object.
  +jsp.error.tldInWebDotXmlNotFound=Could not locate TLD {1} for URI {0} specified in 
web.xml
  +jsp.error.taglibDirective.absUriCannotBeResolved=This absolute uri ({0}) cannot be 
resolved in either web.xml or the jar files deployed with this application
  
  
  
  1.6       +4 -0      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java
  
  Index: JspServlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/servlet/JspServlet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- JspServlet.java   2000/10/31 22:12:20     1.5
  +++ JspServlet.java   2000/10/31 22:54:16     1.6
  @@ -83,6 +83,7 @@
   import org.apache.jasper.runtime.*;
   
   import org.apache.jasper.compiler.Compiler;
  +import org.apache.jasper.compiler.TagLibrariesGlobal;
   
   import org.apache.jasper.logging.Logger;
   import org.apache.jasper.logging.JasperLogger;
  @@ -285,6 +286,9 @@
            Object pd=context.getAttribute("org.apache.tomcat.protection_domain");
            loader.setProtectionDomain( pd );
        }
  +
  +     // Setup the Tag Libraries mappings
  +     TagLibrariesGlobal.init(context);
   
        if (firstTime) {
            firstTime = false;
  
  
  

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

Reply via email to