cziegeler    01/05/22 07:48:37

  Modified:    .        build.xml
               src/org/apache/cocoon Cocoon.java
               src/org/apache/cocoon/acting AbstractDatabaseAction.java
                        Action.java DatabaseAddAction.java
                        DatabaseAuthenticatorAction.java
                        DatabaseDeleteAction.java DatabaseUpdateAction.java
                        FormValidatorAction.java HelloAction.java
                        LangSelect.java OraAddAction.java
                        ResourceExistsAction.java SendmailAction.java
                        SessionInvalidatorAction.java
                        SessionPropagatorAction.java
                        SessionValidatorAction.java
               src/org/apache/cocoon/components/language/generator
                        ProgramGenerator.java ProgramGeneratorImpl.java
               src/org/apache/cocoon/components/language/markup
                        AbstractMarkupLanguage.java Logicsheet.java
                        MarkupLanguage.java
               src/org/apache/cocoon/components/language/markup/sitemap
                        SitemapMarkupLanguage.java
               src/org/apache/cocoon/components/language/markup/xsp
                        XSPMarkupLanguage.java
               src/org/apache/cocoon/components/pipeline
                        AbstractEventPipeline.java
                        AbstractStreamPipeline.java
                        CachingEventPipeline.java
                        CachingStreamPipeline.java
                        NonCachingEventPipeline.java
               src/org/apache/cocoon/components/sax
                        XMLByteStreamInterpreter.java
               src/org/apache/cocoon/components/saxconnector
                        CIncludeSAXConnector.java NullSAXConnector.java
                        XIncludeSAXConnector.java
               src/org/apache/cocoon/environment AbstractEnvironment.java
                        Environment.java
               src/org/apache/cocoon/generation AbstractGenerator.java
                        DirectoryGenerator.java FileGenerator.java
                        FragmentExtractorGenerator.java HTMLGenerator.java
                        JspGenerator.java PhpGenerator.java
                        ScriptGenerator.java ServerPagesGenerator.java
                        ServletGenerator.java
               src/org/apache/cocoon/reading AbstractReader.java
                        DatabaseReader.java ResourceReader.java
               src/org/apache/cocoon/serialization AbstractSerializer.java
               src/org/apache/cocoon/sitemap ContentAggregator.java
                        Handler.java LinkTranslator.java
                        SitemapComponentSelector.java
                        SitemapModelComponent.java
               src/org/apache/cocoon/transformation
                        AbstractDOMTransformer.java
                        FragmentExtractorTransformer.java
                        I18nTransformer.java I18nTransformer2.java
                        LogTransformer.java SQLTransformer.java
                        TraxTransformer.java XIncludeTransformer.java
                        XTTransformer.java
  Added:       src/org/apache/cocoon/environment FactoryURLResolver.java
                        Source.java SourceResolver.java URLResolver.java
  Log:
  Replaced EntityResolver with SourceResolver which uses the URLFactory for 
resolving urls. We could later make the sitemap a friend of the URLFactory to 
make the cocoon: url work. Updated to a7 as the interfaces changed
  
  Revision  Changes    Path
  1.4       +1 -1      xml-cocoon2/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/build.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- build.xml 2001/05/18 08:47:39     1.3
  +++ build.xml 2001/05/22 14:30:20     1.4
  @@ -125,7 +125,7 @@
       <property name="fullname" value="Apache Cocoon"/>
       <property name="Name"     value="Cocoon"/>
       <property name="name"     value="cocoon"/>
  -    <property name="version"  value="2.0a6"/>
  +    <property name="version"  value="2.0a7"/>
       <property name="year"     value="1999-2001"/>
   
       <echo message="------------------- ${fullname} ${version} [${year}] 
----------------"/>
  
  
  
  1.2       +8 -5      xml-cocoon2/src/org/apache/cocoon/Cocoon.java
  
  Index: Cocoon.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/Cocoon.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Cocoon.java       2001/05/09 20:49:28     1.1
  +++ Cocoon.java       2001/05/22 14:30:31     1.2
  @@ -38,7 +38,6 @@
   import org.apache.cocoon.components.pipeline.StreamPipeline;
   import org.apache.cocoon.components.store.FilesystemStore;
   import org.apache.cocoon.components.url.URLFactory;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Environment;
   import org.apache.cocoon.serialization.Serializer;
   import org.apache.cocoon.sitemap.Manager;
  @@ -54,7 +53,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> 
(Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:28 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:31 $
    */
   public class Cocoon extends AbstractLoggable implements ThreadSafe, 
Component, Initializable, Disposable, Modifiable, Processor, Contextualizable {
       /** The application context */
  @@ -85,7 +84,7 @@
       private boolean reloadSitemapAsynchron = true;
   
       /** The component manager. */
  -    private DefaultComponentManager componentManager;
  +    public DefaultComponentManager componentManager;
   
       /** flag for disposed or not */
       private boolean disposed = false;
  @@ -311,7 +310,8 @@
           try {
               programGenerator = (ProgramGenerator) 
this.componentManager.lookup(Roles.PROGRAM_GENERATOR);
               urlFactory = (URLFactory) 
this.componentManager.lookup(Roles.URL_FACTORY);
  -            File sourceFile = new 
File(urlFactory.getURL(environment.resolveEntity(null, 
sitemapFileName).getSystemId()).getFile());
  +            environment.setURLResolver(new 
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
  +            File sourceFile = environment.resolve(sitemapFileName).getFile();
               String markupLanguage = "sitemap";
               String programmingLanguage = "java";
   
  @@ -328,6 +328,7 @@
               getLogger().error("Main: Error compiling sitemap", e);
               throw e;
           } finally {
  +            environment.setURLResolver(null);
               if (programGenerator != null) 
this.componentManager.release((Component) programGenerator);
               if (urlFactory != null) 
this.componentManager.release((Component) urlFactory);
           }
  @@ -345,7 +346,8 @@
   
               programGenerator = (ProgramGenerator) 
this.componentManager.lookup(Roles.PROGRAM_GENERATOR);
               urlFactory = (URLFactory) 
this.componentManager.lookup(Roles.URL_FACTORY);
  -            File sourceFile = new 
File(urlFactory.getURL(environment.resolveEntity(null, 
fileName).getSystemId()).getFile());
  +            environment.setURLResolver(new 
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
  +            File sourceFile = environment.resolve(fileName).getFile();
               String markupLanguage = "xsp";
               String programmingLanguage = "java";
   
  @@ -357,6 +359,7 @@
               getLogger().error("Main: Error compiling XSP", e);
               throw e;
           } finally {
  +            environment.setURLResolver(null);
               if (programGenerator != null) 
this.componentManager.release((Component) programGenerator);
               if (urlFactory != null) 
this.componentManager.release((Component) urlFactory);
           }
  
  
  
  1.5       +1 -3      
xml-cocoon2/src/org/apache/cocoon/acting/AbstractDatabaseAction.java
  
  Index: AbstractDatabaseAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/AbstractDatabaseAction.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractDatabaseAction.java       2001/05/21 19:43:16     1.4
  +++ AbstractDatabaseAction.java       2001/05/22 14:30:39     1.5
  @@ -46,11 +46,9 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.parser.Parser;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.generation.ImageDirectoryGenerator;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   
   /**
  @@ -173,7 +171,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
  - * @version CVS $Revision: 1.4 $ $Date: 2001/05/21 19:43:16 $
  + * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:30:39 $
    */
   public abstract class AbstractDatabaseAction extends 
AbstractComplementaryConfigurableAction implements Configurable, Disposable {
       protected Map files = new HashMap();
  
  
  
  1.2       +4 -4      xml-cocoon2/src/org/apache/cocoon/acting/Action.java
  
  Index: Action.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/Action.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Action.java       2001/05/09 20:50:05     1.1
  +++ Action.java       2001/05/22 14:30:42     1.2
  @@ -11,13 +11,13 @@
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.avalon.framework.thread.ThreadSafe;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:05 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:42 $
    */
   public interface Action extends Component, ThreadSafe {
       /**
  @@ -29,7 +29,7 @@
        * NOTE: It is important that <code>Action<code> classes are
        * written in a thread safe manner.
        *
  -     * @param resolver    The <code>EntityResolver</code> in charge
  +     * @param resolver    The <code>SourceResolver</code> in charge
        * @param objectModel The <code>Map</code> with object of the
        *                    calling environment which can be used
        *                    to select values this controller may need
  @@ -45,7 +45,7 @@
        *                    be skipped.
        * @exception Exception Indicates something is totally wrong
        */
  -    Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters par)
  +    Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters par)
       throws Exception;
   }
   
  
  
  
  1.4       +3 -3      
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAddAction.java
  
  Index: DatabaseAddAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAddAction.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- DatabaseAddAction.java    2001/05/18 20:03:17     1.3
  +++ DatabaseAddAction.java    2001/05/22 14:30:45     1.4
  @@ -28,9 +28,9 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.ImageDirectoryGenerator;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  -import org.xml.sax.EntityResolver;
   
   /**
    * Adds record in a database. The action can update one or more tables,
  @@ -41,7 +41,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2001/05/18 20:03:17 $
  + * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:30:45 $
    */
   public class DatabaseAddAction extends AbstractDatabaseAction {
       protected static final Map addStatements = new HashMap();
  @@ -52,7 +52,7 @@
        * the file referenced by the "form-descriptor" parameter conforms
        * to the AbstractDatabaseAction specifications.
        */
  -    public Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
  +    public Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
           Map results = new HashMap();
  
  
  
  1.2       +5 -5      
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java
  
  Index: DatabaseAuthenticatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseAuthenticatorAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DatabaseAuthenticatorAction.java  2001/05/09 20:50:05     1.1
  +++ DatabaseAuthenticatorAction.java  2001/05/22 14:30:47     1.2
  @@ -1,4 +1,4 @@
  -// $Id: DatabaseAuthenticatorAction.java,v 1.1 2001/05/09 20:50:05 giacomo 
Exp $
  +// $Id: DatabaseAuthenticatorAction.java,v 1.2 2001/05/22 14:30:47 cziegeler 
Exp $
   package org.apache.cocoon.acting;
   
   import java.sql.Connection;
  @@ -13,9 +13,9 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   /**
    * This action is used to authenticate user by comparing several request
  @@ -50,14 +50,14 @@
    * not verified.
    *
    * @author Martin Man &lt;[EMAIL PROTECTED]&gt;
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:05 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:47 $
    */
   public class DatabaseAuthenticatorAction extends AbstractDatabaseAction
   {
       /**
        * Main invocation routine.
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src,
  +    public Map act (SourceResolver resolver, Map objectModel, String src,
               Parameters parameters) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
  @@ -223,5 +223,5 @@
       }
   }
   
  -// $Id: DatabaseAuthenticatorAction.java,v 1.1 2001/05/09 20:50:05 giacomo 
Exp $
  +// $Id: DatabaseAuthenticatorAction.java,v 1.2 2001/05/22 14:30:47 cziegeler 
Exp $
   // vim: set et ts=4 sw=4:
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseDeleteAction.java
  
  Index: DatabaseDeleteAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseDeleteAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DatabaseDeleteAction.java 2001/05/09 20:50:06     1.1
  +++ DatabaseDeleteAction.java 2001/05/22 14:30:50     1.2
  @@ -26,9 +26,9 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.ImageDirectoryGenerator;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  -import org.xml.sax.EntityResolver;
   
   /**
    * Delete a record from a database.  This Action assumes that all
  @@ -38,7 +38,7 @@
    * the keys.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:50 $
    */
   public final class DatabaseDeleteAction extends AbstractDatabaseAction {
       private static final Map deleteStatements = new HashMap();
  @@ -48,7 +48,7 @@
        * the file referenced by the "form-descriptor" parameter conforms
        * to the AbstractDatabaseAction specifications.
        */
  -    public final Map act(EntityResolver resolver, Map objectModel, String 
source, Parameters param) throws Exception {
  +    public final Map act(SourceResolver resolver, Map objectModel, String 
source, Parameters param) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
           int currentIndex = 0;
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/acting/DatabaseUpdateAction.java
  
  Index: DatabaseUpdateAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/DatabaseUpdateAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DatabaseUpdateAction.java 2001/05/09 20:50:06     1.1
  +++ DatabaseUpdateAction.java 2001/05/22 14:30:53     1.2
  @@ -26,16 +26,16 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.ImageDirectoryGenerator;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  -import org.xml.sax.EntityResolver;
   
   /**
    * Update a record in a database.  This Action assumes that there is
    * only one table at a time to update.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:30:53 $
    */
   public class DatabaseUpdateAction extends AbstractDatabaseAction {
       private static final Map updateStatements = new HashMap();
  @@ -45,7 +45,7 @@
        * the file referenced by the "form-descriptor" parameter conforms
        * to the AbstractDatabaseAction specifications.
        */
  -    public Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
  +    public Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
           int currentIndex = 0;
  
  
  
  1.3       +5 -5      
xml-cocoon2/src/org/apache/cocoon/acting/FormValidatorAction.java
  
  Index: FormValidatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/FormValidatorAction.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FormValidatorAction.java  2001/05/11 08:49:49     1.2
  +++ FormValidatorAction.java  2001/05/22 14:30:57     1.3
  @@ -1,4 +1,4 @@
  -// $Id: FormValidatorAction.java,v 1.2 2001/05/11 08:49:49 mman Exp $
  +// $Id: FormValidatorAction.java,v 1.3 2001/05/22 14:30:57 cziegeler Exp $
   package org.apache.cocoon.acting;
   
   import java.util.Collections;
  @@ -9,9 +9,9 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.Tokenizer;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   /**
    * This is the action used to validate Request parameters.
  @@ -49,14 +49,14 @@
    * all validated parameters to the sitemap via {name} expression.
    *
    * @author Martin Man &lt;[EMAIL PROTECTED]&gt;
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 08:49:49 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:30:57 $
    */
   public class FormValidatorAction extends AbstractValidatorAction
   {
       /**
        * Main invocation routine.
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src,
  +    public Map act (SourceResolver resolver, Map objectModel, String src,
               Parameters parameters) throws Exception {
           Request req = (Request)
               objectModel.get (Constants.REQUEST_OBJECT);
  @@ -178,5 +178,5 @@
       }
   }
   
  -// $Id: FormValidatorAction.java,v 1.2 2001/05/11 08:49:49 mman Exp $
  +// $Id: FormValidatorAction.java,v 1.3 2001/05/22 14:30:57 cziegeler Exp $
   // vim: set et ts=4 sw=4:
  
  
  
  1.2       +3 -4      xml-cocoon2/src/org/apache/cocoon/acting/HelloAction.java
  
  Index: HelloAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/HelloAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- HelloAction.java  2001/05/09 20:50:06     1.1
  +++ HelloAction.java  2001/05/22 14:31:01     1.2
  @@ -15,15 +15,14 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  -import org.xml.sax.EntityResolver;
  -import org.xml.sax.SAXException;
  +import org.apache.cocoon.environment.SourceResolver;
   
   /**
    * A simple Action that tracks if a <code>Session</code> object
    * has been created or not.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:06 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:01 $
    */
   public class HelloAction extends ComposerAction {
   
  @@ -31,7 +30,7 @@
        * A simple Action that logs if the <code>Session</code> object
        * has been created
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src, 
Parameters par) throws Exception {
  +    public Map act (SourceResolver resolver, Map objectModel, String src, 
Parameters par) throws Exception {
           Request request = (Request) 
objectModel.get(Constants.REQUEST_OBJECT);
           if (request != null) {
               Session session = request.getSession (false);
  
  
  
  1.2       +2 -2      xml-cocoon2/src/org/apache/cocoon/acting/LangSelect.java
  
  Index: LangSelect.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/LangSelect.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LangSelect.java   2001/05/09 20:50:06     1.1
  +++ LangSelect.java   2001/05/22 14:31:05     1.2
  @@ -20,7 +20,7 @@
   import org.apache.cocoon.environment.Cookie;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   
   /**
    * LangSelect Action returns two character language code to sitemap.
  @@ -58,7 +58,7 @@
        * Puts lang parameter to session and to objectModel
        * if it is not already there.
        */
  -    public Map act(EntityResolver resolver, Map objectModel, String source,
  +    public Map act(SourceResolver resolver, Map objectModel, String source,
               Parameters par) throws Exception {
   
           String lang;
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/acting/OraAddAction.java
  
  Index: OraAddAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/OraAddAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- OraAddAction.java 2001/05/09 20:50:07     1.1
  +++ OraAddAction.java 2001/05/22 14:31:08     1.2
  @@ -30,16 +30,16 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.ImageDirectoryGenerator;
   import org.apache.avalon.excalibur.datasource.DataSourceComponent;
  -import org.xml.sax.EntityResolver;
   
   /**
    * Add a record in a database.  This Action assumes that there is
    * only one table at a time to update.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:07 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:08 $
    */
   public class OraAddAction extends DatabaseAddAction {
       private static final Map selectLOBStatements = new HashMap();
  @@ -49,7 +49,7 @@
        * the file referenced by the "form-descriptor" parameter conforms
        * to the AbstractDatabaseAction specifications.
        */
  -    public Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
  +    public Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters param) throws Exception {
           DataSourceComponent datasource = null;
           Connection conn = null;
           int currentIndex = 0;
  
  
  
  1.2       +4 -14     
xml-cocoon2/src/org/apache/cocoon/acting/ResourceExistsAction.java
  
  Index: ResourceExistsAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/ResourceExistsAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResourceExistsAction.java 2001/05/09 20:50:08     1.1
  +++ ResourceExistsAction.java 2001/05/22 14:31:10     1.2
  @@ -25,7 +25,7 @@
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Request;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.InputSource;
   
   /**
  @@ -34,25 +34,15 @@
    * null otherwise. It has only been tested with context urls.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:10 $
    */
   public class ResourceExistsAction extends ComposerAction {
   
  -    protected URLFactory urlFactory;
  -
  -    public void configure(Configuration conf) throws ConfigurationException {
  -        try {
  -            urlFactory = (URLFactory)this.manager.lookup(Roles.URL_FACTORY);
  -        } catch (ComponentException e) {
  -            throw new ConfigurationException("Could not lookup url 
factory",e);
  -        }
  -    }
  -
  -    public Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters parameters) throws Exception {
  +    public Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters parameters) throws Exception {
           HashMap results = new HashMap();
           String urlstring = parameters.getParameter("url",null);
           try {
  -            URL url = urlFactory.getURL(urlstring);
  +            URL url = resolver.resolve(urlstring).getURL();
               url.getContent();
           } catch (Exception e) {
               getLogger().debug("ResourceExistsAction: exception: ",e);
  
  
  
  1.2       +2 -2      
xml-cocoon2/src/org/apache/cocoon/acting/SendmailAction.java
  
  Index: SendmailAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SendmailAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SendmailAction.java       2001/05/09 20:50:08     1.1
  +++ SendmailAction.java       2001/05/22 14:31:13     1.2
  @@ -25,8 +25,8 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   /**
    * The SendmailAction class sends email. The action needs four parameters:
  @@ -69,7 +69,7 @@
       getLogger().debug("SendmailAction: using 
"+default_properties.get("mail.smtp.host")+" as the smtp server");
     }
   
  -  public Map act(EntityResolver resolver, Map objectModel, String source, 
Parameters parameters) throws Exception {
  +  public Map act(SourceResolver resolver, Map objectModel, String source, 
Parameters parameters) throws Exception {
       HashMap results = new HashMap();
       try {
         getLogger().debug("SendmailAction: act start");
  
  
  
  1.2       +5 -5      
xml-cocoon2/src/org/apache/cocoon/acting/SessionInvalidatorAction.java
  
  Index: SessionInvalidatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionInvalidatorAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SessionInvalidatorAction.java     2001/05/09 20:50:08     1.1
  +++ SessionInvalidatorAction.java     2001/05/22 14:31:16     1.2
  @@ -1,4 +1,4 @@
  -// $Id: SessionInvalidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionInvalidatorAction.java,v 1.2 2001/05/22 14:31:16 cziegeler 
Exp $
   package org.apache.cocoon.acting;
   
   import java.util.Collections;
  @@ -9,22 +9,22 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   /**
    * This is the action used to invalidate an HTTP session. The action returns
    * empty map if everything is ok, null otherwise.
    *
    * @author Martin Man &lt;[EMAIL PROTECTED]&gt;
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:16 $
    */
   public class SessionInvalidatorAction extends AbstractAction
   {
       /**
        * Main invocation routine.
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src,
  +    public Map act (SourceResolver resolver, Map objectModel, String src,
               Parameters parameters) throws Exception {
           Request req = (Request)
               objectModel.get (Constants.REQUEST_OBJECT);
  @@ -49,5 +49,5 @@
       }
   }
   
  -// $Id: SessionInvalidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionInvalidatorAction.java,v 1.2 2001/05/22 14:31:16 cziegeler 
Exp $
   // vim: set et ts=4 sw=4:
  
  
  
  1.2       +5 -5      
xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java
  
  Index: SessionPropagatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionPropagatorAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SessionPropagatorAction.java      2001/05/09 20:50:08     1.1
  +++ SessionPropagatorAction.java      2001/05/22 14:31:19     1.2
  @@ -1,4 +1,4 @@
  -// $Id: SessionPropagatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionPropagatorAction.java,v 1.2 2001/05/22 14:31:19 cziegeler Exp 
$
   package org.apache.cocoon.acting;
   
   import java.util.Collections;
  @@ -10,8 +10,8 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   /**
    * This is the action used to propagate parameters into session. It
  @@ -27,14 +27,14 @@
    * </pre>
    *
    * @author Martin Man &lt;[EMAIL PROTECTED]&gt;
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:19 $
    */
   public class SessionPropagatorAction extends ComposerAction
   {
       /**
        * Main invocation routine.
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src,
  +    public Map act (SourceResolver resolver, Map objectModel, String src,
               Parameters parameters) throws Exception {
           Request req = (Request)
               objectModel.get (Constants.REQUEST_OBJECT);
  @@ -77,6 +77,6 @@
       }
   }
   
  -// $Id: SessionPropagatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionPropagatorAction.java,v 1.2 2001/05/22 14:31:19 cziegeler Exp 
$
   // vim: set et ts=4 sw=4:
   
  
  
  
  1.2       +5 -5      
xml-cocoon2/src/org/apache/cocoon/acting/SessionValidatorAction.java
  
  Index: SessionValidatorAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/acting/SessionValidatorAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SessionValidatorAction.java       2001/05/09 20:50:08     1.1
  +++ SessionValidatorAction.java       2001/05/22 14:31:24     1.2
  @@ -1,4 +1,4 @@
  -// $Id: SessionValidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionValidatorAction.java,v 1.2 2001/05/22 14:31:24 cziegeler Exp $
   package org.apache.cocoon.acting;
   
   import java.util.Collections;
  @@ -10,9 +10,9 @@
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Session;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.Tokenizer;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   
   
   /**
  @@ -51,14 +51,14 @@
    * all validated parameters to the sitemap via {name} expression.
    *
    * @author Martin Man &lt;[EMAIL PROTECTED]&gt;
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:08 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:31:24 $
    */
   public class SessionValidatorAction extends AbstractValidatorAction
   {
       /**
        * Main invocation routine.
        */
  -    public Map act (EntityResolver resolver, Map objectModel, String src,
  +    public Map act (SourceResolver resolver, Map objectModel, String src,
               Parameters parameters) throws Exception {
           Request req = (Request)
               objectModel.get (Constants.REQUEST_OBJECT);
  @@ -188,5 +188,5 @@
       }
   }
   
  -// $Id: SessionValidatorAction.java,v 1.1 2001/05/09 20:50:08 giacomo Exp $
  +// $Id: SessionValidatorAction.java,v 1.2 2001/05/22 14:31:24 cziegeler Exp $
   // vim: set et ts=4 sw=4:
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGenerator.java
  
  Index: ProgramGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProgramGenerator.java     2001/05/09 20:49:49     1.1
  +++ ProgramGenerator.java     2001/05/22 14:32:08     1.2
  @@ -9,14 +9,14 @@
   
   import java.io.File;
   import org.apache.avalon.framework.component.Component;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   
   /**
    * This interface defines a loader for programs automatically built from XML
    * documents writeen in a <code>MarkupLanguage</code>
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:49 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:08 $
    */
   public interface ProgramGenerator extends Component {
     /**
  @@ -33,7 +33,7 @@
      */
     CompiledComponent load(
       File file, String markupLanguage, String programmingLanguage,
  -    EntityResolver resolver
  +    SourceResolver resolver
     ) throws Exception;
   
     /**
  
  
  
  1.2       +4 -4      
xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java
  
  Index: ProgramGeneratorImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/generator/ProgramGeneratorImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ProgramGeneratorImpl.java 2001/05/09 20:49:50     1.1
  +++ ProgramGeneratorImpl.java 2001/05/22 14:32:10     1.2
  @@ -36,18 +36,18 @@
   import org.apache.cocoon.components.language.programming.CodeFormatter;
   import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
   import org.apache.cocoon.components.store.Store;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.IOUtils;
   import org.apache.log.Logger;
   import org.w3c.dom.Document;
   import org.w3c.dom.Document;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
   /**
    * The default implementation of <code>ProgramGenerator</code>
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:10 $
    */
   public class ProgramGeneratorImpl extends AbstractLoggable
       implements ProgramGenerator, Contextualizable, Composable, Configurable, 
ThreadSafe, Disposable {
  @@ -128,7 +128,7 @@
       public CompiledComponent load(File file,
                                     String markupLanguageName,
                                     String programmingLanguageName,
  -                                  EntityResolver resolver)
  +                                  SourceResolver resolver)
           throws Exception {
   
           // Create filesystem store
  @@ -225,7 +225,7 @@
                                      String normalizedName,
                                      MarkupLanguage markupLanguage,
                                      ProgrammingLanguage programmingLanguage,
  -                                   EntityResolver resolver)
  +                                   SourceResolver resolver)
           throws Exception {
           // Generate code
           String code = markupLanguage.generateCode(
  
  
  
  1.2       +8 -8      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java
  
  Index: AbstractMarkupLanguage.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/AbstractMarkupLanguage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractMarkupLanguage.java       2001/05/09 20:49:50     1.1
  +++ AbstractMarkupLanguage.java       2001/05/22 14:32:22     1.2
  @@ -35,9 +35,9 @@
   import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
   import org.apache.cocoon.components.store.Store;
   import org.apache.cocoon.components.url.URLFactory;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.IOUtils;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.XMLFilter;
  @@ -50,7 +50,7 @@
    * logicsheets as the only means of code generation. Code generation should 
be decoupled from this context!!!
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:22 $
    */
   public abstract class AbstractMarkupLanguage extends AbstractLoggable 
implements MarkupLanguage, Composable, Configurable {
       /** The supported language table */
  @@ -209,7 +209,7 @@
        * @return XMLFilter the filter that build on the fly the transformer 
chain
        */
       protected TransformerChainBuilderFilter getTranformerChainBuilder
  -        (LogicsheetCodeGenerator logicsheetMarkupGenerator, EntityResolver 
resolver) {
  +        (LogicsheetCodeGenerator logicsheetMarkupGenerator, SourceResolver 
resolver) {
               return new 
TransformerChainBuilderFilter(logicsheetMarkupGenerator, resolver);
       }
   
  @@ -247,7 +247,7 @@
        * @exception Exception If an error occurs during code generation
        */
       public String generateCode(InputSource input, String filename, 
ProgrammingLanguage programmingLanguage,
  -        EntityResolver resolver) throws Exception {
  +        SourceResolver resolver) throws Exception {
               String languageName = programmingLanguage.getLanguageName();
               LanguageDescriptor language = 
(LanguageDescriptor)this.languages.get(languageName);
               if (language == null) {
  @@ -308,7 +308,7 @@
        * @exception IOException IO Error
        * @exception SAXException Logicsheet parse error
        */
  -    protected void addLogicsheetToList(LanguageDescriptor language, String 
logicsheetLocation, EntityResolver entityResolver)
  +    protected void addLogicsheetToList(LanguageDescriptor language, String 
logicsheetLocation, SourceResolver resolver)
           throws MalformedURLException, IOException, SAXException {
               String systemId = null;
               InputSource inputSource = null;
  @@ -359,7 +359,7 @@
                           if(namedLogicsheetName!= null && 
!logicsheetLocation.equals(namedLogicsheetName)) {
                               getLogger().debug("Adding embedded logic sheet 
for " + namespace + ":" + namedLogicsheetName);
                               // Add embedded logic sheets too.
  -                            addLogicsheetToList(language, 
namedLogicsheetName, entityResolver);
  +                            addLogicsheetToList(language, 
namedLogicsheetName, resolver);
                           }
                       }
                   }
  @@ -525,7 +525,7 @@
           protected LanguageDescriptor language;
   
           /** the entity resolver */
  -        protected EntityResolver resolver;
  +        protected SourceResolver resolver;
           private boolean isRootElem;
           private List startPrefixes;
   
  @@ -534,7 +534,7 @@
            * @param logicsheetMarkupGenerator The code generator
            * @param resolver
            */
  -        protected TransformerChainBuilderFilter(LogicsheetCodeGenerator 
logicsheetMarkupGenerator, EntityResolver resolver) {
  +        protected TransformerChainBuilderFilter(LogicsheetCodeGenerator 
logicsheetMarkupGenerator, SourceResolver resolver) {
               this.logicsheetMarkupGenerator = logicsheetMarkupGenerator;
               this.resolver = resolver;
           }
  
  
  
  1.2       +1 -2      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/Logicsheet.java
  
  Index: Logicsheet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/Logicsheet.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Logicsheet.java   2001/05/09 20:49:50     1.1
  +++ Logicsheet.java   2001/05/22 14:32:35     1.2
  @@ -27,7 +27,6 @@
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
   import org.xml.sax.DTDHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.ErrorHandler;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
  @@ -47,7 +46,7 @@
    * transformed into an equivalent XSLT stylesheet anyway... This class 
should probably be based on an interface...
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:35 $
    */
   public class Logicsheet extends AbstractLoggable {
       /** The trax TransformerFactory */
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/MarkupLanguage.java
  
  Index: MarkupLanguage.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/MarkupLanguage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MarkupLanguage.java       2001/05/09 20:49:50     1.1
  +++ MarkupLanguage.java       2001/05/22 14:32:45     1.2
  @@ -9,7 +9,7 @@
   
   import org.apache.avalon.framework.component.Component;
   import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.XMLReader;
   
  @@ -19,7 +19,7 @@
    * document augmenting it with dynamic content
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:50 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:32:45 $
    */
   public interface MarkupLanguage extends Component {
       /**
  @@ -44,6 +44,6 @@
       String generateCode(
           InputSource input, String filename,
           ProgrammingLanguage programmingLanguage,
  -        EntityResolver resolver
  +        SourceResolver resolver
       ) throws Exception;
   }
  
  
  
  1.2       +4 -4      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java
  
  Index: SitemapMarkupLanguage.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/SitemapMarkupLanguage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SitemapMarkupLanguage.java        2001/05/09 20:49:51     1.1
  +++ SitemapMarkupLanguage.java        2001/05/22 14:33:37     1.2
  @@ -21,9 +21,9 @@
   import org.apache.cocoon.components.language.markup.AbstractMarkupLanguage;
   import org.apache.cocoon.components.language.markup.LogicsheetCodeGenerator;
   import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.log.Logger;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.XMLFilter;
   import org.xml.sax.XMLReader;
  @@ -35,7 +35,7 @@
    * <a href="http://xml.apache.org/cocoon/sitemap.html";>Sitemap</a>.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:51 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:33:37 $
    */
   public class SitemapMarkupLanguage extends AbstractMarkupLanguage {
   
  @@ -124,7 +124,7 @@
       */
       protected TransformerChainBuilderFilter getTranformerChainBuilder (
           LogicsheetCodeGenerator logicsheetMarkupGenerator,
  -        EntityResolver resolver
  +        SourceResolver resolver
       ) {
           SitemapTransformerChainBuilderFilter filter =
               new SitemapTransformerChainBuilderFilter(
  @@ -260,7 +260,7 @@
            */
           protected SitemapTransformerChainBuilderFilter (
               LogicsheetCodeGenerator logicsheetMarkupGenerator,
  -            EntityResolver resolver
  +            SourceResolver resolver
           ) {
               super(logicsheetMarkupGenerator, resolver);
           }
  
  
  
  1.2       +4 -4      
xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPMarkupLanguage.java
  
  Index: XSPMarkupLanguage.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/xsp/XSPMarkupLanguage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XSPMarkupLanguage.java    2001/05/09 20:49:52     1.1
  +++ XSPMarkupLanguage.java    2001/05/22 14:34:19     1.2
  @@ -21,9 +21,9 @@
   import org.apache.cocoon.components.language.markup.AbstractMarkupLanguage;
   import org.apache.cocoon.components.language.markup.LogicsheetCodeGenerator;
   import org.apache.cocoon.components.language.programming.ProgrammingLanguage;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.log.Logger;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.XMLFilter;
   import org.xml.sax.XMLReader;
  @@ -36,7 +36,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Sebastien Sahuc</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:52 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:34:19 $
    */
   public class XSPMarkupLanguage extends AbstractMarkupLanguage {
   
  @@ -128,7 +128,7 @@
       */
       protected TransformerChainBuilderFilter getTranformerChainBuilder (
           LogicsheetCodeGenerator logicsheetMarkupGenerator,
  -        EntityResolver resolver
  +        SourceResolver resolver
       ) {
           return new XSPTransformerChainBuilderFilter(
               logicsheetMarkupGenerator,
  @@ -327,7 +327,7 @@
            */
           protected XSPTransformerChainBuilderFilter (
               LogicsheetCodeGenerator logicsheetMarkupGenerator,
  -            EntityResolver resolver
  +            SourceResolver resolver
           ) {
               super(logicsheetMarkupGenerator, resolver);
           }
  
  
  
  1.2       +5 -6      
xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java
  
  Index: AbstractEventPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractEventPipeline.java        2001/05/09 20:49:46     1.1
  +++ AbstractEventPipeline.java        2001/05/22 14:35:04     1.2
  @@ -29,13 +29,12 @@
   import org.apache.cocoon.xml.AbstractXMLProducer;
   import org.apache.cocoon.xml.XMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
    * @author <a href="mailto:[EMAIL PROTECTED] Ziegeler">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:46 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:35:04 $
    */
   public abstract class AbstractEventPipeline
   extends AbstractXMLProducer
  @@ -150,7 +149,7 @@
           try {
               // setup the generator
               this.generator.setup(
  -                (EntityResolver)environment,
  +                environment,
                   environment.getObjectModel(),
                   generatorSource,
                   generatorParam
  @@ -163,7 +162,7 @@
               while ( transformerItt.hasNext() ) {
                   Transformer trans = (Transformer)transformerItt.next();
                   trans.setup(
  -                    (EntityResolver)environment,
  +                    environment,
                       environment.getObjectModel(),
                       (String)transformerSourceItt.next(),
                       (Parameters)transformerParamItt.next()
  @@ -195,7 +194,7 @@
               while ( itt.hasNext() ) {
                   // connect SAXConnector
                   SAXConnector connect = (SAXConnector) 
this.manager.lookup(Roles.SAX_CONNECTOR);
  -                
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
  +                
connect.setup(environment,environment.getObjectModel(),null,null);
                   connect.setSitemap(this.sitemap);
                   this.connectors.add(connect);
                   next = (XMLConsumer) connect;
  @@ -211,7 +210,7 @@
   
               // insert SAXConnector
               SAXConnector connect = (SAXConnector) 
this.manager.lookup(Roles.SAX_CONNECTOR);
  -            
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
  +            
connect.setup(environment,environment.getObjectModel(),null,null);
               connect.setSitemap(this.sitemap);
               this.connectors.add(connect);
               next = (XMLConsumer) connect;
  
  
  
  1.2       +2 -3      
xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java
  
  Index: AbstractStreamPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractStreamPipeline.java       2001/05/09 20:49:46     1.1
  +++ AbstractStreamPipeline.java       2001/05/22 14:35:14     1.2
  @@ -25,7 +25,6 @@
   import org.apache.cocoon.sitemap.SitemapComponentSelector;
   import org.apache.cocoon.xml.XMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
  -import org.xml.sax.EntityResolver;
   
   /** A <CODE>ResourcePipeline</CODE> either
    * <UL>
  @@ -35,7 +34,7 @@
    * resource
    * </UL>
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:46 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:35:14 $
    */
   public abstract class AbstractStreamPipeline extends AbstractLoggable 
implements StreamPipeline, Disposable {
       protected EventPipeline eventPipeline;
  @@ -148,7 +147,7 @@
       throws ProcessingException {
           String mimeType;
           try {
  -            this.reader.setup((EntityResolver) 
environment,environment.getObjectModel(),readerSource,readerParam);
  +            
this.reader.setup(environment,environment.getObjectModel(),readerSource,readerParam);
               mimeType = this.reader.getMimeType();
               if ( mimeType != null ) {
                   environment.setContentType(mimeType);
  
  
  
  1.5       +3 -4      
xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java
  
  Index: CachingEventPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CachingEventPipeline.java 2001/05/15 07:51:26     1.4
  +++ CachingEventPipeline.java 2001/05/22 14:35:26     1.5
  @@ -41,7 +41,6 @@
   import org.apache.cocoon.xml.XMLMulticaster;
   import org.apache.cocoon.xml.XMLPipe;
   import org.apache.cocoon.xml.XMLProducer;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
  @@ -53,7 +52,7 @@
    * does not cache! (If it would cache, the response would be cached twice!)
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.4 $ $Date: 2001/05/15 07:51:26 $
  + * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:35:26 $
    */
   public final class CachingEventPipeline
   extends AbstractEventPipeline
  @@ -328,7 +327,7 @@
               while ( itt.hasNext() ) {
                   // connect SAXConnector
                   SAXConnector connect = (SAXConnector) 
this.manager.lookup(Roles.SAX_CONNECTOR);
  -                
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
  +                
connect.setup(environment,environment.getObjectModel(),null,null);
                   connect.setSitemap(this.sitemap);
                   this.connectors.add(connect);
                   next = (XMLConsumer) connect;
  @@ -352,7 +351,7 @@
   
               // insert SAXConnector
               SAXConnector connect = (SAXConnector) 
this.manager.lookup(Roles.SAX_CONNECTOR);
  -            
connect.setup((EntityResolver)environment,environment.getObjectModel(),null,null);
  +            
connect.setup(environment,environment.getObjectModel(),null,null);
               connect.setSitemap(this.sitemap);
               this.connectors.add(connect);
               next = (XMLConsumer) connect;
  
  
  
  1.3       +2 -3      
xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java
  
  Index: CachingStreamPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CachingStreamPipeline.java        2001/05/15 07:51:28     1.2
  +++ CachingStreamPipeline.java        2001/05/22 14:35:33     1.3
  @@ -28,7 +28,6 @@
   import org.apache.cocoon.caching.PipelineCacheKey;
   import org.apache.cocoon.caching.StreamCache;
   import org.apache.cocoon.environment.Environment;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /** A <CODE>StreamPipeline</CODE> either
  @@ -46,7 +45,7 @@
    *  </ul>
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/15 07:51:28 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:35:33 $
    */
   public class CachingStreamPipeline extends AbstractStreamPipeline {
   
  @@ -95,7 +94,7 @@
   
           try
           {
  -            this.reader.setup((EntityResolver) 
environment,environment.getObjectModel(),readerSource,readerParam);
  +            
this.reader.setup(environment,environment.getObjectModel(),readerSource,readerParam);
               String mimeType = this.reader.getMimeType();
   
               mimeType = this.reader.getMimeType();
  
  
  
  1.3       +1 -2      
xml-cocoon2/src/org/apache/cocoon/components/pipeline/NonCachingEventPipeline.java
  
  Index: NonCachingEventPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/NonCachingEventPipeline.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NonCachingEventPipeline.java      2001/05/10 21:16:46     1.2
  +++ NonCachingEventPipeline.java      2001/05/22 14:35:41     1.3
  @@ -27,12 +27,11 @@
   import org.apache.cocoon.xml.AbstractXMLProducer;
   import org.apache.cocoon.xml.XMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:46 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:35:41 $
    */
   public class NonCachingEventPipeline extends AbstractEventPipeline 
implements Recyclable {
   
  
  
  
  1.3       +1 -2      
xml-cocoon2/src/org/apache/cocoon/components/sax/XMLByteStreamInterpreter.java
  
  Index: XMLByteStreamInterpreter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/sax/XMLByteStreamInterpreter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLByteStreamInterpreter.java     2001/05/11 10:16:20     1.2
  +++ XMLByteStreamInterpreter.java     2001/05/22 14:36:46     1.3
  @@ -12,7 +12,6 @@
   import org.apache.cocoon.xml.AbstractXMLProducer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
   
  @@ -21,7 +20,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 10:16:20 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:36:46 $
    */
   
   public final class XMLByteStreamInterpreter
  
  
  
  1.3       +3 -3      
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/CIncludeSAXConnector.java
  
  Index: CIncludeSAXConnector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/CIncludeSAXConnector.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CIncludeSAXConnector.java 2001/05/11 13:35:07     1.2
  +++ CIncludeSAXConnector.java 2001/05/22 14:37:21     1.3
  @@ -25,13 +25,13 @@
   import org.apache.cocoon.components.pipeline.StreamPipeline;
   import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Environment;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.sitemap.Sitemap;
   import org.apache.cocoon.xml.AbstractXMLPipe;
   import org.apache.cocoon.xml.IncludeXMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
   import org.xml.sax.SAXException;
  @@ -40,7 +40,7 @@
   /**
    * Copy of code from CIncludeTransformer as a starting point for 
CIncludeSAXConnector.
    * @author <a href="[EMAIL PROTECTED]">Davanum Srinivas</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 13:35:07 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:37:21 $
    */
   public class CIncludeSAXConnector extends AbstractXMLPipe implements 
Composable, Recyclable, SAXConnector {
   
  @@ -60,7 +60,7 @@
       /** The current <code>Environment</code>. */
       protected Environment environment;
   
  -    public void setup(EntityResolver resolver, Map objectModel,
  +    public void setup(SourceResolver resolver, Map objectModel,
                         String source, Parameters parameters)
               throws ProcessingException, SAXException, IOException {
           environment = (Environment) resolver;
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/NullSAXConnector.java
  
  Index: NullSAXConnector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/NullSAXConnector.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NullSAXConnector.java     2001/05/09 20:50:00     1.1
  +++ NullSAXConnector.java     2001/05/22 14:37:34     1.2
  @@ -11,16 +11,16 @@
   import java.util.Map;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.sitemap.Sitemap;
   import org.apache.cocoon.xml.AbstractXMLPipe;
   import org.apache.avalon.excalibur.pool.Poolable;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * Null implementation of the SAXConnector. Simply sends events on to the 
next component in the pipeline.
    * @author <a href="[EMAIL PROTECTED]">Paul Russell</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:50:00 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:37:34 $
    */
   public class NullSAXConnector extends AbstractXMLPipe implements Poolable, 
SAXConnector {
       /** Set the sitemap
  @@ -31,7 +31,7 @@
   
       /** Setup this SAXConnector.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters params)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters params)
       throws ProcessingException, SAXException, IOException {
           // do nothing.
       }
  
  
  
  1.3       +3 -4      
xml-cocoon2/src/org/apache/cocoon/components/saxconnector/XIncludeSAXConnector.java
  
  Index: XIncludeSAXConnector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/components/saxconnector/XIncludeSAXConnector.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XIncludeSAXConnector.java 2001/05/11 13:35:08     1.2
  +++ XIncludeSAXConnector.java 2001/05/22 14:37:40     1.3
  @@ -25,22 +25,21 @@
   import org.apache.cocoon.components.pipeline.StreamPipeline;
   import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Environment;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.sitemap.Sitemap;
   import org.apache.cocoon.xml.AbstractXMLPipe;
   import org.apache.cocoon.xml.IncludeXMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
  -import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
   
   /**
    * Copy of code from XIncludeTransformer as a starting point for 
XIncludeSAXConnector.
    * @author <a href="[EMAIL PROTECTED]">Davanum Srinivas</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/11 13:35:08 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:37:40 $
    */
   public class XIncludeSAXConnector extends AbstractXMLPipe implements 
Composable, Recyclable, SAXConnector {
   
  @@ -60,7 +59,7 @@
       /** The current <code>Environment</code>. */
       protected Environment environment;
   
  -    public void setup(EntityResolver resolver, Map objectModel,
  +    public void setup(SourceResolver resolver, Map objectModel,
                         String source, Parameters parameters)
               throws ProcessingException, SAXException, IOException {
           environment = (Environment) resolver;
  
  
  
  1.2       +41 -7     
xml-cocoon2/src/org/apache/cocoon/environment/AbstractEnvironment.java
  
  Index: AbstractEnvironment.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/AbstractEnvironment.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractEnvironment.java  2001/05/09 20:49:44     1.1
  +++ AbstractEnvironment.java  2001/05/22 14:38:35     1.2
  @@ -40,6 +40,9 @@
       /** The servlet object model */
       protected HashMap objectModel = null;
   
  +    /** The URL Resolver for the current environment */
  +    protected URLResolver urlResolver;
  +
       /**
        * Constructs the abstract enviornment
        */
  @@ -76,6 +79,13 @@
           this.objectModel = new HashMap();
       }
   
  +    /**
  +     * Set the URLFactory for the current request
  +     */
  +    public void setURLResolver(URLResolver resolver) {
  +        this.urlResolver = resolver;
  +    }
  +
       // Sitemap methods
   
       /**
  @@ -164,23 +174,47 @@
           return this.objectModel;
       }
   
  -    // EntityResolver method
  -
       /**
        * Resolve an entity.
        */
  -    public InputSource resolveEntity(String publicId, String systemId)
  +    public Source resolve(String systemId)
       throws SAXException, IOException {
           if (systemId == null) throw new SAXException("Invalid System ID");
   
           if (systemId.length() == 0)
  -            return new InputSource(this.context.toExternalForm());
  +            return new Source(this.context);
           if (systemId.indexOf(":") > 1)
  -            return new InputSource(systemId);
  +            return new Source(this.urlResolver.getURL(systemId));
           if (systemId.charAt(0) == '/')
  -            return new InputSource(this.context.getProtocol() + ":" + 
systemId);
  -        return new InputSource(new 
URL(this.context,systemId).toExternalForm());
  +            return new 
Source(this.urlResolver.getURL(this.context.getProtocol() + ":" + systemId));
  +        return new Source(this.urlResolver.getURL(this.context, systemId));
       }
  +
  +    /**
  +     * Called by the processor when it encounters
  +     * an xsl:include, xsl:import, or document() function.
  +     *
  +     * @param href An href attribute, which may be relative or absolute.
  +     * @param base The base URI in effect when the href attribute
  +     * was encountered.
  +     *
  +     * @return A Source object, or null if the href cannot be resolved,
  +     * and the processor should try to resolve the URI itself.
  +     *
  +     * @throws TransformerException if an error occurs when trying to
  +     * resolve the URI.
  +     */
  +    public javax.xml.transform.Source resolve(String href, String base)
  +    throws javax.xml.transform.TransformerException {
  +        try {
  +            return new 
javax.xml.transform.stream.StreamSource(this.resolve(href).getReader());
  +        } catch (IOException e) {
  +            throw new javax.xml.transform.TransformerException(e);
  +        } catch (SAXException e) {
  +            throw new javax.xml.transform.TransformerException(e);
  +        }
  +    }
  +
   
       /**
        * Push a new URI for processing
  
  
  
  1.2       +7 -3      
xml-cocoon2/src/org/apache/cocoon/environment/Environment.java
  
  Index: Environment.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/environment/Environment.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Environment.java  2001/05/09 20:49:43     1.1
  +++ Environment.java  2001/05/22 14:38:43     1.2
  @@ -12,17 +12,21 @@
   import java.io.OutputStream;
   import java.net.MalformedURLException;
   import java.util.Map;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * Base interface for an environment abstraction
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:43 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:38:43 $
    */
   
  -public interface Environment extends EntityResolver {
  +public interface Environment extends SourceResolver {
  +
  +    /**
  +     * Set the URLFactory for the current request
  +     */
  +    void setURLResolver(URLResolver resolver);
   
       /**
        * Get the URI to process
  
  
  
  1.1                  
xml-cocoon2/src/org/apache/cocoon/environment/FactoryURLResolver.java
  
  Index: FactoryURLResolver.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   
*****************************************************************************/
  
  package org.apache.cocoon.environment;
  
  import java.net.URL;
  import java.net.MalformedURLException;
  
  import org.apache.cocoon.components.url.URLFactory;
  
  /**
   * This interface describes the URLResolver which is used by the
   * <code>SourceResolver</code>.
   * The <code>URLResolver</code> separates the <code>SourceResolver</code>
   * from the <code>URLFactory</code>.
   *
   * This class used only the <code>URLFactory</code>.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:51 $
   */
  
  public final class FactoryURLResolver
  implements URLResolver {
  
      private URLFactory factory;
  
      public FactoryURLResolver(URLFactory factory) {
          this.factory = factory;
      }
  
      /**
       * Resolve the source
       */
      public URL getURL(String location) throws MalformedURLException {
          return this.factory.getURL(location);
      }
  
      /**
       * Resolve the source
       */
      public URL getURL(URL base, String location) throws MalformedURLException 
{
          return this.factory.getURL(base, location);
      }
  
  
  }
  
  
  1.1                  xml-cocoon2/src/org/apache/cocoon/environment/Source.java
  
  Index: Source.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   
*****************************************************************************/
  
  package org.apache.cocoon.environment;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileReader;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.IOException;
  import java.io.Reader;
  import java.net.URL;
  import java.net.URLConnection;
  import org.xml.sax.InputSource;
  
  /**
   * Description of a source. This interface provides a simple interface
   * for accessing any resource (URL, local file etc).
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:52 $
   */
  
  public final class Source {
  
      /** Identifier for file urls */
      private final String FILE = "file:";
  
      /** The last modification date or 0 */
      private long lastModificationDate;
  
      /** The content length */
      private long contentLength;
  
      /** The system id */
      private String systemId;
  
      /** The URL of the source */
      private URL url;
  
      /** The connection for a real URL */
      private URLConnection connection;
  
      /** Is this a file or a "real" URL */
      private boolean isFile;
  
      /** Are we initialized? */
      private boolean gotInfos;
  
      /**
       * Construct a new object
       */
      public Source(URL url)
      throws IOException {
          this.systemId = url.toExternalForm();
          this.isFile = systemId.startsWith(FILE);
          this.url = url;
          this.gotInfos = false;
      }
  
      /**
       * Get the last modification date and content length of the source.
       * Any exceptions are ignored.
       */
      private void getInfos() {
          if (this.gotInfos == false) {
              if (this.isFile == true) {
                  File file = new File(systemId.substring(FILE.length()));
                  this.lastModificationDate = file.lastModified();
                  this.contentLength = file.length();
              } else {
                  try {
                      if (this.connection == null)
                          this.connection = this.url.openConnection();
                      this.lastModificationDate = 
this.connection.getLastModified();
                      this.contentLength = this.connection.getContentLength();
                  } catch (IOException ignore) {
                      this.lastModificationDate = 0;
                      this.contentLength = -1;
                  }
              }
              this.gotInfos = true;
          }
      }
  
      /**
       * Get the last modification date of the source or 0 if it
       * is not possible to determine the date.
       */
      public long getLastModified() {
          this.getInfos();
          return this.lastModificationDate;
      }
  
      /**
       * Get the content length of the source or -1 if it
       * is not possible to determine the length.
       */
      public long getContentLength() {
          this.getInfos();
          return this.contentLength;
      }
  
      /**
       * Return an <code>InputStream</code> object to read from the source.
       */
      public InputStream getInputStream()
      throws IOException {
          if (this.isFile == true) {
              return new 
FileInputStream(this.systemId.substring(FILE.length()));
          } else {
              if (this.connection == null)
                  this.connection = this.url.openConnection();
              return this.connection.getInputStream();
          }
      }
  
      /**
       * Return the URL for this source.
       */
      public URL getURL() {
          return this.url;
      }
  
      /**
       * Return an <code>Reader</code> object to read from the source.
       */
      public Reader getReader()
      throws IOException {
          if (this.isFile == true) {
              return new FileReader(this.systemId.substring(FILE.length()));
          } else {
              if (this.connection == null)
                  this.connection = this.url.openConnection();
              return new InputStreamReader(this.connection.getInputStream());
          }
      }
  
      /**
       * Return the unique identifer for this source
       */
      public String getSystemId() {
          return this.systemId;
      }
  
      /**
       * Is this a file, then the <code>getFile</code> method can
       * return a <code>File</code> object for this source.
       */
      public boolean isFile() {
          return this.isFile;
      }
  
      /**
       * Return a <code>File</code> object if this is a local file
       * (if the <code>isFile</code> method returns true).
       */
      public File getFile() {
          if (this.isFile == true) {
              return new File(this.systemId.substring(FILE.length()));
          }
          return null;
      }
  
      /**
       * If this is not a file this method returns the
       * <code>URLConnection</code> object for the url.
       */
      public URLConnection getURLConnection() {
          if (this.isFile == false) {
              return this.connection;
          }
          return null;
      }
  }
  
  
  
  
  1.1                  
xml-cocoon2/src/org/apache/cocoon/environment/SourceResolver.java
  
  Index: SourceResolver.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   
*****************************************************************************/
  
  package org.apache.cocoon.environment;
  
  import java.io.IOException;
  import javax.xml.transform.URIResolver;
  import org.xml.sax.SAXException;
  
  /**
   * Base interface for resolving a source by system identifiers. This
   * interface extends the <code>URIResolver</code> interface.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:52 $
   */
  
  public interface SourceResolver
  extends URIResolver {
  
      /**
       * Resolve the source.
       * @param systemID This is either a system identifier
       * (<code>java.net.URL</code> or a local file.
       */
      Source resolve(String systemID)
      throws SAXException, IOException;
  
  }
  
  
  
  
  1.1                  
xml-cocoon2/src/org/apache/cocoon/environment/URLResolver.java
  
  Index: URLResolver.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   
*****************************************************************************/
  
  package org.apache.cocoon.environment;
  
  import java.net.URL;
  import java.net.MalformedURLException;
  
  /**
   * This interface describes the URLResolver which is used by the
   * <code>SourceResolver</code>.
   * The <code>URLResolver</code> separates the <code>SourceResolver</code>
   * from the <code>URLFactory</code>.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/05/22 14:38:53 $
   */
  
  public interface URLResolver {
  
      /**
       * Resolve the source
       */
      URL getURL(String location) throws MalformedURLException;
  
      /**
       * Resolve the source
       */
      URL getURL(URL base, String location) throws MalformedURLException;
  
  }
  
  
  
  1.2       +6 -6      
xml-cocoon2/src/org/apache/cocoon/generation/AbstractGenerator.java
  
  Index: AbstractGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/AbstractGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractGenerator.java    2001/05/09 20:49:40     1.1
  +++ AbstractGenerator.java    2001/05/22 14:40:23     1.2
  @@ -11,20 +11,20 @@
   import java.util.Map;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.xml.AbstractXMLProducer;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
    *         (Apache Software Foundation, Exoffice Technologies)
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:40 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:40:23 $
    */
   public abstract class AbstractGenerator extends AbstractXMLProducer 
implements Generator {
   
  -    /** The current <code>EntityResolver</code>. */
  -    protected EntityResolver resolver=null;
  +    /** The current <code>SourceResolver</code>. */
  +    protected SourceResolver resolver=null;
       /** The current <code>Map</code> objectModel. */
       protected Map objectModel=null;
       /** The current <code>Parameters</code>. */
  @@ -33,10 +33,10 @@
       protected String source=null;
   
       /**
  -     * Set the <code>EntityResolver</code>, object model <code>Map</code>,
  +     * Set the <code>SourceResolver</code>, object model <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           this.resolver=resolver;
           this.objectModel=objectModel;
  
  
  
  1.3       +13 -20    
xml-cocoon2/src/org/apache/cocoon/generation/DirectoryGenerator.java
  
  Index: DirectoryGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/DirectoryGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DirectoryGenerator.java   2001/05/10 21:16:49     1.2
  +++ DirectoryGenerator.java   2001/05/22 14:40:31     1.3
  @@ -20,11 +20,11 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.ResourceNotFoundException;
   import org.apache.cocoon.Roles;
  -import org.apache.cocoon.components.url.URLFactory;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.regexp.RE;
   import org.apache.regexp.RESyntaxException;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
  @@ -64,7 +64,7 @@
    *         (Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]">Conny Krappatsch</a>
    *         (SMB GmbH) for Virbus AG
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:49 $ */
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:31 $ */
   
   public class DirectoryGenerator extends ComposerGenerator implements 
Recyclable {
   
  @@ -104,7 +104,7 @@
        * method.
        *
        * @param   resolver
  -     *      the EntityResolver object
  +     *      the SourceResolver object
        * @param   objectModel
        *      a <code>Map</code> containing model object
        * @param   src
  @@ -112,7 +112,7 @@
        * @param   par
        *      configuration parameters
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           super.setup(resolver, objectModel, src, par);
   
  @@ -177,27 +177,20 @@
       throws SAXException, ProcessingException {
           try {
   
  -        InputSource input;
  -        URL url;
  +            Source inputSource;
           File path;
   
  -        input = resolver.resolveEntity(null,super.source);
  -        URLFactory urlFactory = null;
  -        try {
  -            urlFactory = (URLFactory)manager.lookup(Roles.URL_FACTORY);
  -            url = urlFactory.getURL(input.getSystemId());
  -        } catch (Exception e) {
  -            getLogger().error("cannot obtain the URLFactory");
  -            throw new SAXException ("cannot obtain the URLFactory", e);
  -        } finally {
  -            if (urlFactory != null) manager.release((Component)urlFactory);
  +            inputSource =  this.resolver.resolve(super.source);
  +            if (inputSource.isFile() == false) {
  +                throw new IOException("Cannot read directory from "
  +                      + inputSource.getSystemId() + "\"");
           }
  -        path = new File(url.getFile());
  -
  +            path = inputSource.getFile();
           if (!path.isDirectory()) {
                   throw new IOException("Cannot read directory from "
  -                      + url.toString() + "\"");
  +                      + inputSource.getSystemId() + "\"");
           }
  +
   
           this.contentHandler.startDocument();
           this.contentHandler.startPrefixMapping(PREFIX,URI);
  
  
  
  1.4       +12 -32    
xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java
  
  Index: FileGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/FileGenerator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FileGenerator.java        2001/05/14 13:51:18     1.3
  +++ FileGenerator.java        2001/05/22 14:40:39     1.4
  @@ -22,9 +22,10 @@
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.TimeStampCacheValidity;
   import org.apache.cocoon.components.parser.Parser;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.avalon.excalibur.pool.Recyclable;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
  @@ -38,19 +39,13 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
    *         (Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2001/05/14 13:51:18 $
  + * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:40:39 $
    */
   public class FileGenerator extends ComposerGenerator
   implements Cacheable, Recyclable {
   
  -    private static final String FILE = "file:";
  -
       /** The input source */
  -    private InputSource inputSource;
  -    /** The system ID of the input source */
  -    private String      systemID;
  -    /** Last modification date of the source */
  -    private long        lastModificationDate;
  +    private Source inputSource;
   
       /**
        * Set the current <code>ComponentManager</code> instance used by this
  @@ -67,31 +62,16 @@
       public void recycle() {
           super.recycle();
           this.inputSource = null;
  -        this.systemID = null;
       }
   
       /**
        * Setup the file generator.
        * Try to get the last modification date of the source for caching.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           super.setup(resolver, objectModel, src, par);
  -        this.inputSource = super.resolver.resolveEntity(null, super.source);
  -        this.systemID = this.inputSource.getSystemId();
  -        if (this.systemID.startsWith(FILE) == true) {
  -            File xmlFile = new File(this.systemID.substring(FILE.length()));
  -            this.lastModificationDate = xmlFile.lastModified();
  -        } else {
  -            try {
  -                java.net.URL u= new java.net.URL(this.systemID);
  -                java.net.URLConnection conn = u.openConnection();
  -                this.lastModificationDate = 
u.openConnection().getLastModified();
  -            } catch (java.net.MalformedURLException local) {
  -                // we ignore this at this stage
  -                this.lastModificationDate = 0; // no caching!
  -            }
  -        }
  +        this.inputSource = resolver.resolve(src);
       }
   
       /**
  @@ -101,8 +81,8 @@
        * @return The generated key hashes the src
        */
       public long generateKey() {
  -        if (this.lastModificationDate != 0) {
  -            return HashUtil.hash(this.systemID);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return HashUtil.hash(this.inputSource.getSystemId());
           }
           return 0;
       }
  @@ -114,8 +94,8 @@
        *         component is currently not cacheable.
        */
       public CacheValidity generateValidity() {
  -        if (this.lastModificationDate != 0) {
  -            return new TimeStampCacheValidity(this.lastModificationDate);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return new 
TimeStampCacheValidity(this.inputSource.getLastModified());
           }
           return null;
       }
  @@ -128,14 +108,14 @@
           Parser parser = null;
           try {
               getLogger().debug("processing file " + super.source);
  -            getLogger().debug("file resolved to " + this.systemID);
  +            getLogger().debug("file resolved to " + 
this.inputSource.getSystemId());
   
               parser = (Parser)this.manager.lookup(Roles.PARSER);
   
               parser.setContentHandler(super.contentHandler);
               parser.setLexicalHandler(super.lexicalHandler);
   
  -            parser.parse(this.inputSource);
  +            parser.parse(new InputSource(inputSource.getInputStream()));
           } catch (IOException e) {
               getLogger().error("FileGenerator.generate()", e);
               throw new ResourceNotFoundException("FileGenerator could not 
find resource", e);
  
  
  
  1.3       +3 -3      
xml-cocoon2/src/org/apache/cocoon/generation/FragmentExtractorGenerator.java
  
  Index: FragmentExtractorGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/FragmentExtractorGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FragmentExtractorGenerator.java   2001/05/10 21:16:50     1.2
  +++ FragmentExtractorGenerator.java   2001/05/22 14:40:47     1.3
  @@ -20,12 +20,12 @@
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.NOPCacheValidity;
   import org.apache.cocoon.environment.AbstractEnvironment;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.AbstractGenerator;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.cocoon.xml.dom.DOMStreamer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.w3c.dom.Document;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /** The generation half of FragmentExtractor.
  @@ -38,7 +38,7 @@
    * This is by no means complete yet, but it should prove useful, particularly
    * for offline generation.
    * @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:50 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:47 $
    */
   public class FragmentExtractorGenerator extends AbstractGenerator
           implements Recyclable, Cacheable {
  @@ -56,7 +56,7 @@
       public FragmentExtractorGenerator() {
       }
   
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           super.setup(resolver,objectModel,src,par);
   
  
  
  
  1.4       +13 -38    
xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java
  
  Index: HTMLGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/HTMLGenerator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HTMLGenerator.java        2001/05/14 13:51:21     1.3
  +++ HTMLGenerator.java        2001/05/22 14:40:55     1.4
  @@ -26,59 +26,40 @@
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.TimeStampCacheValidity;
   import org.apache.cocoon.components.parser.Parser;
  -import org.apache.cocoon.components.url.URLFactory;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.cocoon.xml.dom.DOMStreamer;
   import org.w3c.tidy.Tidy;
  -import org.xml.sax.EntityResolver;
  -import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2001/05/14 13:51:21 $
  + * @version CVS $Revision: 1.4 $ $Date: 2001/05/22 14:40:55 $
    */
   public class HTMLGenerator extends ComposerGenerator implements Cacheable, 
Recyclable {
   
  -    private static final String FILE = "file:";
  +    /** The  source */
  +    private Source inputSource;
   
  -    /** The system ID of the input source */
  -    private String      systemID;
  -    /** Last modification date of the source */
  -    private long        lastModificationDate;
  -
       /**
        * Recycle this component.
        * All instance variables are set to <code>null</code>.
        */
       public void recycle() {
           super.recycle();
  -        this.systemID = null;
  +        this.inputSource = null;
       }
   
       /**
        * Setup the html generator.
        * Try to get the last modification date of the source for caching.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
       throws ProcessingException, SAXException, IOException {
           super.setup(resolver, objectModel, src, par);
  -        InputSource inputSource = super.resolver.resolveEntity(null, 
super.source);
  -        this.systemID = inputSource.getSystemId();
  -        if (this.systemID.startsWith(FILE) == true) {
  -            File xmlFile = new File(this.systemID.substring(FILE.length()));
  -            this.lastModificationDate = xmlFile.lastModified();
  -        } else {
  -            try {
  -                java.net.URL u= new java.net.URL(this.systemID);
  -                java.net.URLConnection conn = u.openConnection();
  -                this.lastModificationDate = 
u.openConnection().getLastModified();
  -            } catch (java.net.MalformedURLException local) {
  -                // we ignore this at this stage
  -                this.lastModificationDate = 0; // no caching!
  -            }
  -        }
  +        this.inputSource = resolver.resolve(super.source);
       }
   
       /**
  @@ -90,8 +71,8 @@
        *              is currently not cacheable.
        */
       public long generateKey() {
  -        if (this.lastModificationDate != 0) {
  -            return HashUtil.hash(this.systemID);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return HashUtil.hash(this.inputSource.getSystemId());
           }
           return 0;
       }
  @@ -105,8 +86,8 @@
        *         component is currently not cacheable.
        */
       public CacheValidity generateValidity() {
  -        if (this.lastModificationDate != 0) {
  -            return new TimeStampCacheValidity(this.lastModificationDate);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return new 
TimeStampCacheValidity(this.inputSource.getLastModified());
           }
           return null;
       }
  @@ -116,7 +97,6 @@
        */
       public void generate()
       throws IOException, SAXException, ProcessingException {
  -        URLFactory urlFactory = null;
           try
           {
               // Setup an instance of Tidy.
  @@ -124,11 +104,8 @@
               tidy.setXmlOut(true);
               tidy.setXHTML(true);
   
  -            urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
  -            URL url = urlFactory.getURL(this.source);
  -
               // Extract the document using JTidy and stream it.
  -            org.w3c.dom.Document doc = tidy.parseDOM(new 
BufferedInputStream(url.openStream()), null);
  +            org.w3c.dom.Document doc = tidy.parseDOM(new 
BufferedInputStream(this.inputSource.getInputStream()), null);
               DOMStreamer streamer = new 
DOMStreamer(this.contentHandler,this.lexicalHandler);
               streamer.stream(doc);
           } catch (IOException e){
  @@ -140,8 +117,6 @@
           } catch (Exception e){
               getLogger().error("Could not get parser", e);
               throw new ProcessingException("Exception in 
HTMLGenerator.generate()",e);
  -        } finally {
  -            this.manager.release((Component)urlFactory);
           }
       }
   }
  
  
  
  1.3       +1 -2      
xml-cocoon2/src/org/apache/cocoon/generation/JspGenerator.java
  
  Index: JspGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/JspGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JspGenerator.java 2001/05/10 21:16:51     1.2
  +++ JspGenerator.java 2001/05/22 14:40:59     1.3
  @@ -39,7 +39,6 @@
   import org.apache.cocoon.xml.XMLProducer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
  @@ -49,7 +48,7 @@
    * results into SAX events.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:51 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:40:59 $
    */
   public class JspGenerator extends ServletGenerator implements Recyclable {
   
  
  
  
  1.3       +1 -2      
xml-cocoon2/src/org/apache/cocoon/generation/PhpGenerator.java
  
  Index: PhpGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/PhpGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PhpGenerator.java 2001/05/10 21:16:52     1.2
  +++ PhpGenerator.java 2001/05/22 14:41:05     1.3
  @@ -30,7 +30,6 @@
   import org.apache.cocoon.xml.XMLProducer;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.log.Logger;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
  @@ -40,7 +39,7 @@
    * results into SAX events.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Sam Ruby</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:52 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:41:05 $
    */
   public class PhpGenerator extends ServletGenerator implements Recyclable {
   
  
  
  
  1.5       +20 -15    
xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java
  
  Index: ScriptGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ScriptGenerator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ScriptGenerator.java      2001/05/15 11:48:51     1.4
  +++ ScriptGenerator.java      2001/05/22 14:41:12     1.5
  @@ -23,6 +23,8 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.parser.Parser;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   
  @@ -46,9 +48,10 @@
    * </pre>
    * 
    * @author <a href="mailto:[EMAIL PROTECTED]">Jason Foster</a>
  - * @version CVS $Revision: 1.4 $ $Date: 2001/05/15 11:48:51 $
  + * @version CVS $Revision: 1.5 $ $Date: 2001/05/22 14:41:12 $
    */
  -public class ScriptGenerator extends ComposerGenerator implements 
Configurable {
  +public class ScriptGenerator extends ComposerGenerator implements 
Configurable,
  +Recyclable {
   
       protected class BSFLanguage 
       {
  @@ -57,10 +60,11 @@
           public String[] extensions;
       }
   
  -    private static final String FILE = "file:";
  -
       protected BSFLanguage[] additionalLanguages;
   
  +    /** The source */
  +    private Source inputSource;
  +
       public void configure(Configuration conf) throws ConfigurationException
       {
           if (conf != null)
  @@ -98,24 +102,25 @@
           }
       }
   
  +    public void recycle() {
  +        super.recycle();
  +        this.inputSource = null;
  +    }
  +
       public void generate() throws ProcessingException {
           Parser parser = null;
           try {
               // Figure out what file to open and do so
  -
  -            getLogger().debug("processing file [" + this.source + "]");
   
  -            InputSource src = this.resolver.resolveEntity(null, this.source);
  -            String systemID = src.getSystemId();
  -            String fileName = systemID.substring(FILE.length());
  +            getLogger().debug("processing file [" + super.source + "]");
  +            this.inputSource = this.resolver.resolve(super.source);
   
  -            getLogger().debug("file resolved to [" + systemID + "]");
  -            getLogger().debug("file name extracted as [" + fileName + "]");
  +            getLogger().debug("file resolved to [" + 
this.inputSource.getSystemId() + "]");
   
               // TODO: why doesn't this work?
               // Reader in = src.getCharacterStream();
   
  -            Reader in = new FileReader(fileName);
  +            Reader in = new 
java.io.InputStreamReader(this.inputSource.getInputStream());
   
               // Set up the BSF manager and register relevant helper "beans"
   
  @@ -138,7 +143,7 @@
               StringBuffer output = new StringBuffer();
   
               mgr.registerBean("resolver", this.resolver);
  -            mgr.registerBean("source", this.source);
  +            mgr.registerBean("source", super.source);
               mgr.registerBean("objectModel", this.objectModel);
               mgr.registerBean("parameters", this.parameters);
               mgr.registerBean("output", output);
  @@ -148,8 +153,8 @@
   
               // Execute the script
   
  -            mgr.exec(BSFManager.getLangFromFilename(fileName), fileName, 0, 
0,
  -                    IOUtils.getStringFromReader(in));
  +            
mgr.exec(BSFManager.getLangFromFilename(this.inputSource.getSystemId()),
  +                     this.inputSource.getSystemId(), 0, 0, 
IOUtils.getStringFromReader(in));
   
               getLogger().debug("BSFManager execution complete");
               getLogger().debug("output = [" + output.toString() + "]");
  
  
  
  1.3       +19 -20    
xml-cocoon2/src/org/apache/cocoon/generation/ServerPagesGenerator.java
  
  Index: ServerPagesGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ServerPagesGenerator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ServerPagesGenerator.java 2001/05/10 21:16:54     1.2
  +++ ServerPagesGenerator.java 2001/05/22 14:41:16     1.3
  @@ -27,15 +27,15 @@
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.ParametersCacheValidity;
   import org.apache.cocoon.caching.CompositeCacheValidity;
  +import org.apache.cocoon.environment.SourceResolver;
  +import org.apache.cocoon.environment.Source;
   import org.apache.cocoon.components.language.generator.CompiledComponent;
   import org.apache.cocoon.components.language.generator.ProgramGenerator;
   import org.apache.cocoon.components.language.markup.xsp.XSPGenerator;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
  @@ -46,7 +46,7 @@
    * delegating actual SAX event generation.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Ricardo Rocha</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:16:54 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:41:16 $
    */
   public class ServerPagesGenerator
     extends ServletGenerator
  @@ -57,10 +57,11 @@
      */
     protected static ProgramGenerator programGenerator = null;
   
  -  protected static URLFactory factory = null;
  -
     protected XSPGenerator generator = null;
   
  +  /** The source */
  +  private Source inputSource;
  +
     /**
      * Set the global component manager. This method sets the sitemap-defined
      * program generator
  @@ -75,7 +76,6 @@
         try {
             this.programGenerator = (ProgramGenerator)
                 manager.lookup(Roles.PROGRAM_GENERATOR);
  -          this.factory = (URLFactory) manager.lookup(Roles.URL_FACTORY);
         } catch (Exception e) {
             getLogger().error("Could not find ProgramGenerator", e);
         }
  @@ -91,7 +91,7 @@
      * @return A long representing the cache key (defaults to not cachable)
      */
     public long generateKey() {
  -    return HashUtil.hash(this.source + generator.generateKey());
  +    return HashUtil.hash(this.inputSource.getSystemId() + 
generator.generateKey());
     }
   
     /**
  @@ -104,7 +104,7 @@
       CacheValidity genValidity = generator.generateValidity();
       if (genValidity != null) {
           HashMap map = new HashMap (1);
  -        map.put("source", this.source);
  +        map.put("source", this.inputSource.getSystemId());
           ParametersCacheValidity pcv = new ParametersCacheValidity(map);
           return new CompositeCacheValidity(genValidity, pcv);
       }
  @@ -131,25 +131,21 @@
      */
     public final static String DEFAULT_PROGRAMMING_LANGUAGE = "java";
   
  -  public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +  public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
         throws ProcessingException, SAXException, IOException {
   
       super.setup(resolver, objectModel, src, par);
  -
  -    InputSource inputSource = this.resolver.resolveEntity(null, this.source);
   
  -    String systemId = inputSource.getSystemId();
  +    this.inputSource = this.resolver.resolve(super.source);
   
  -    URL url = factory.getURL(systemId);
  -
  -    if (!url.getProtocol().equals("file")) {
  -      throw new ResourceNotFoundException("Not a file: " + url.toString());
  +    if (this.inputSource.isFile() == false) {
  +      throw new ResourceNotFoundException("Not a file: " + 
this.inputSource.getSystemId());
       }
   
  -    File file = new File(url.getFile());
  +    File file = this.inputSource.getFile();
   
       if (!file.canRead()) {
  -      throw new ResourceNotFoundException("Can't read file: " + 
url.toString());
  +      throw new ResourceNotFoundException("Can't read file: " + 
this.inputSource.getSystemId());
       }
   
       if (this.markupLanguage == null) {
  @@ -168,7 +164,7 @@
         getLogger().warn("ServerPagesGenerator.generate()", e);
         throw new ResourceNotFoundException(e.getMessage(), e);
       }
  -    generator.setup(this.resolver, this.objectModel, this.source, 
this.parameters);
  +    generator.setup(this.resolver, this.objectModel, super.source, 
this.parameters);
     }
   
     /**
  @@ -204,6 +200,7 @@
       } finally {
           if(generator != null)
               programGenerator.release(generator);
  +        generator = null;
       }
   
       // End any started events in case of premature return
  @@ -453,7 +450,10 @@
        */
       public void recycle() {
           super.recycle();
  +        if (generator != null)
  +            programGenerator.release(generator);
           this.generator = null;
  +        this.inputSource = null;
       }
   
       /**
  @@ -461,6 +461,5 @@
        */
       public void dispose() {
           if(this.programGenerator != null) 
manager.release((Component)this.programGenerator);
  -        if(this.factory != null) manager.release((Component)this.factory);
       }
   }
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/generation/ServletGenerator.java
  
  Index: ServletGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/ServletGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ServletGenerator.java     2001/05/09 20:49:42     1.1
  +++ ServletGenerator.java     2001/05/22 14:41:22     1.2
  @@ -16,13 +16,13 @@
   import org.apache.cocoon.environment.Context;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Response;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:42 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:41:22 $
    */
   public abstract class ServletGenerator extends ComposerGenerator
   implements Composable {
  @@ -31,7 +31,7 @@
       protected Response response=null;
       protected Context context=null;
   
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
   
         super.setup(resolver, objectModel, src, par);
  
  
  
  1.2       +7 -7      
xml-cocoon2/src/org/apache/cocoon/reading/AbstractReader.java
  
  Index: AbstractReader.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/AbstractReader.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractReader.java       2001/05/09 20:49:39     1.1
  +++ AbstractReader.java       2001/05/22 14:43:33     1.2
  @@ -11,21 +11,21 @@
   import java.io.IOException;
   import java.io.OutputStream;
   import java.util.Map;
  +import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  -import org.apache.avalon.excalibur.pool.Recyclable;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:39 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:43:33 $
    */
   public abstract class AbstractReader extends AbstractLoggable implements 
Reader, Recyclable {
  -    /** The current <code>EntityResolver</code>. */
  -    protected EntityResolver resolver=null;
  +    /** The current <code>SourceResolver</code>. */
  +    protected SourceResolver resolver=null;
       /** The current <code>Map</code> of the object model. */
       protected Map objectModel=null;
       /** The current <code>Parameters</code>. */
  @@ -36,10 +36,10 @@
       protected OutputStream out=null;
   
       /**
  -     * Set the <code>EntityResolver</code> the object model <code>Map</code>,
  +     * Set the <code>SourceResolver</code> the object model <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           this.resolver=resolver;
           this.objectModel=objectModel;
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/reading/DatabaseReader.java
  
  Index: DatabaseReader.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/DatabaseReader.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DatabaseReader.java       2001/05/09 20:49:39     1.1
  +++ DatabaseReader.java       2001/05/22 14:43:41     1.2
  @@ -36,12 +36,12 @@
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Response;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.NOPCacheValidity;
   import org.apache.cocoon.caching.TimeStampCacheValidity;
   import org.apache.cocoon.util.HashUtil;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
  @@ -82,10 +82,10 @@
       }
   
       /**
  -     * Set the <code>EntityResolver</code> the object model <code>Map</code>,
  +     * Set the <code>SourceResolver</code> the object model <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           super.setup(resolver, objectModel, src, par);
   
  
  
  
  1.2       +18 -57    
xml-cocoon2/src/org/apache/cocoon/reading/ResourceReader.java
  
  Index: ResourceReader.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/reading/ResourceReader.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResourceReader.java       2001/05/09 20:49:39     1.1
  +++ ResourceReader.java       2001/05/22 14:43:46     1.2
  @@ -32,18 +32,18 @@
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.TimeStampCacheValidity;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.environment.Context;
   import org.apache.cocoon.environment.Request;
   import org.apache.cocoon.environment.Response;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.HashUtil;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:39 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:43:46 $
    *
    * The <code>ResourceReader</code> component is used to serve binary data
    * in a sitemap pipeline. It makes use of HTTP Headers to determine if
  @@ -64,54 +64,19 @@
   
       private ComponentManager manager;
   
  -    /** The system ID of the input source */
  -    private String      systemID;
  +    /** The  source */
  +    private Source      inputSource;
   
   
  -    private InputStream inputStream;
  -    private long inputLength;
  -    private long lastModified;
  -
       /**
        * Setup the reader.
        * The resource is opened to get an <code>InputStream</code>,
        * the length and the last modification date
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           super.setup(resolver, objectModel, src, par);
  -        this.systemID = resolver.resolveEntity(null, 
super.source).getSystemId();
  -
  -        URLFactory urlFactory = null;
  -        try {
  -            try {
  -                urlFactory = (URLFactory) 
this.manager.lookup(Roles.URL_FACTORY);
  -            } catch (Exception e) {
  -                getLogger().error("cannot obtain the URLFactory", e);
  -                throw new ProcessingException ("cannot obtain the 
URLFactory", e);
  -            }
  -            try {
  -                if (this.source.indexOf(":/") != -1) {
  -                    URLConnection conn = 
urlFactory.getURL(this.source).openConnection();
  -                    this.lastModified = conn.getLastModified();
  -                    this.inputLength = conn.getContentLength();
  -                    this.inputStream = conn.getInputStream();
  -                } else {
  -                    File file = new 
File(urlFactory.getURL(this.systemID).getFile());
  -                    this.lastModified = file.lastModified();
  -                    this.inputLength = file.length();
  -                    this.inputStream = new BufferedInputStream(new 
FileInputStream (file));
  -                }
  -            } catch (MalformedURLException mue) {
  -                getLogger().error("ResourceReader: malformed source \"" + 
this.source + "\"", mue);
  -                throw new ResourceNotFoundException ("ResourceReader: 
malformed source \""
  -                    +this.source+"\". ", mue);
  -            }
  -        } finally {
  -            if (urlFactory != null) {
  -                this.manager.release((Component)urlFactory);
  -            }
  -        }
  +        this.inputSource = this.resolver.resolve(super.source);
       }
   
       public void compose (ComponentManager manager) {
  @@ -120,14 +85,7 @@
   
       public void recycle() {
           super.recycle();
  -        if (this.inputStream != null) {
  -            try {
  -                this.inputStream.close();
  -            } catch (IOException ioe) {
  -                getLogger().debug("Received an IOException, assuming client 
severed connection on purpose");
  -            }
  -            this.inputStream = null;
  -        }
  +        this.inputSource = null;
       }
   
       /**
  @@ -137,7 +95,7 @@
        * @return The generated key hashes the src
        */
       public long generateKey() {
  -        return HashUtil.hash(this.systemID);
  +        return HashUtil.hash(this.inputSource.getSystemId());
       }
   
       /**
  @@ -147,7 +105,7 @@
        *         component is currently not cacheable.
        */
       public CacheValidity generateValidity() {
  -        return new TimeStampCacheValidity(this.lastModified);
  +        return new 
TimeStampCacheValidity(this.inputSource.getLastModified());
       }
   
       /**
  @@ -155,7 +113,7 @@
        *         possible to detect
        */
       public long getLastModified() {
  -        return this.lastModified;
  +        return this.inputSource.getLastModified();
       }
   
       /**
  @@ -165,6 +123,8 @@
           Request request = (Request) 
objectModel.get(Constants.REQUEST_OBJECT);
           Response response = (Response) 
objectModel.get(Constants.RESPONSE_OBJECT);
   
  +        long contentLength = this.inputSource.getContentLength();
  +
           try {
               long expires = parameters.getParameterAsInteger("expires", -1);
   
  @@ -177,16 +137,17 @@
               byte[] buffer = new byte[8192];
               int length = -1;
   
  -            while ((length = this.inputStream.read(buffer)) > -1) {
  +            InputStream inputStream = this.inputSource.getInputStream();
  +            while ((length = inputStream.read(buffer)) > -1) {
                   out.write(buffer, 0, length);
               }
  -            this.inputStream.close();
  -            this.inputStream = null;
  +            inputStream.close();
  +            inputStream = null;
               out.flush();
           } catch (IOException ioe) {
               getLogger().debug("Received an IOException, assuming client 
severed connection on purpose");
           }
  -        return (int)this.inputLength;
  +        return (int)contentLength;
       }
   
       /**
  
  
  
  1.2       +1 -2      
xml-cocoon2/src/org/apache/cocoon/serialization/AbstractSerializer.java
  
  Index: AbstractSerializer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/serialization/AbstractSerializer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractSerializer.java   2001/05/09 20:49:37     1.1
  +++ AbstractSerializer.java   2001/05/22 14:44:41     1.2
  @@ -16,14 +16,13 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.xml.AbstractXMLPipe;
   import org.apache.cocoon.ProcessingException;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
    *         (Apache Software Foundation, Exoffice Technologies)
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:37 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:44:41 $
    */
   
   public abstract class AbstractSerializer extends AbstractXMLPipe implements 
Serializer, Recyclable {
  
  
  
  1.3       +6 -6      
xml-cocoon2/src/org/apache/cocoon/sitemap/ContentAggregator.java
  
  Index: ContentAggregator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/ContentAggregator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContentAggregator.java    2001/05/15 15:31:54     1.2
  +++ ContentAggregator.java    2001/05/22 14:45:11     1.3
  @@ -24,6 +24,7 @@
   import org.apache.cocoon.components.pipeline.EventPipeline;
   import org.apache.cocoon.components.pipeline.StreamPipeline;
   import org.apache.cocoon.environment.Environment;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.Generator;
   import org.apache.cocoon.sitemap.Sitemap;
   import org.apache.cocoon.xml.ContentHandlerWrapper;
  @@ -31,14 +32,13 @@
   import org.apache.cocoon.xml.XMLProducer;
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
   import org.xml.sax.helpers.AttributesImpl;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Id: ContentAggregator.java,v 1.2 2001/05/15 15:31:54 dims 
Exp $
  + * @version CVS $Id: ContentAggregator.java,v 1.3 2001/05/22 14:45:11 
cziegeler Exp $
    */
   
   public class ContentAggregator extends ContentHandlerWrapper
  @@ -61,8 +61,8 @@
       /** The current <code>Environment</code>. */
       protected Environment environment;
   
  -    /** The current <code>EntityResolver</code>. */
  -    protected EntityResolver resolver;
  +    /** The current <code>SourceResolver</code>. */
  +    protected SourceResolver resolver;
   
       /** The current <code>Map</code> objectModel. */
       protected Map objectModel;
  @@ -299,10 +299,10 @@
       }
   
       /**
  -     * Set the <code>EntityResolver</code>, object model <code>Map</code>,
  +     * Set the <code>SourceResolver</code>, object model <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           this.resolver=resolver;
           this.objectModel=objectModel;
  
  
  
  1.2       +18 -2     xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java
  
  Index: Handler.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Handler.java      2001/05/09 20:49:36     1.1
  +++ Handler.java      2001/05/22 14:45:20     1.2
  @@ -36,9 +36,10 @@
   /**
    * Handles the manageing and stating of one <code>Sitemap</code>
    *
  + * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:36 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:20 $
    */
   public class Handler extends AbstractLoggable implements Runnable, 
Configurable, Composable, Contextualizable, Processor, Disposable {
       private Context context;
  @@ -121,7 +122,12 @@
           } else {
               s = this.source;
           }
  -        this.sourceFile = new 
File(urlFactory.getURL(environment.resolveEntity(null, 
s).getSystemId()).getFile());
  +        try {
  +            environment.setURLResolver(new 
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
  +            this.sourceFile = environment.resolve(s).getFile();
  +        } finally {
  +            environment.setURLResolver(null);
  +        }
           if (!this.sourceFile.canRead()) {
               throw new FileNotFoundException ("file " + 
this.sourceFile.toString() + " not found or cannot be opened for reading");
           }
  @@ -156,13 +162,23 @@
       public boolean process (Environment environment)
       throws Exception {
           checkSanity();
  +        try {
  +            environment.setURLResolver(new 
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
           return sitemap.process(environment);
  +        } finally {
  +            environment.setURLResolver(null);
       }
  +    }
   
       public boolean process (Environment environment, StreamPipeline 
pipeline, EventPipeline eventPipeline)
       throws Exception {
           checkSanity();
  +        try {
  +            environment.setURLResolver(new 
org.apache.cocoon.environment.FactoryURLResolver(urlFactory));
           return sitemap.process(environment, pipeline, eventPipeline);
  +        } finally {
  +            environment.setURLResolver(null);
  +        }
       }
   
       private void checkSanity () throws Exception {
  
  
  
  1.2       +4 -4      
xml-cocoon2/src/org/apache/cocoon/sitemap/LinkTranslator.java
  
  Index: LinkTranslator.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/LinkTranslator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LinkTranslator.java       2001/05/09 20:49:36     1.1
  +++ LinkTranslator.java       2001/05/22 14:45:31     1.2
  @@ -13,16 +13,16 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.Constants;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.transformation.Transformer;
   import org.apache.cocoon.util.NetUtils;
   import org.apache.cocoon.xml.xlink.ExtendedXLinkPipe;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   
   /**
    * @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:36 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:31 $
    */
   
   public class LinkTranslator extends ExtendedXLinkPipe implements Transformer 
{
  @@ -30,10 +30,10 @@
       private Map links;
   
       /**
  -     * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
  +     * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
       throws ProcessingException, SAXException, IOException {
           this.links = (Map) objectModel.get(Constants.LINK_OBJECT);
       }
  
  
  
  1.2       +1 -2      
xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java
  
  Index: SitemapComponentSelector.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapComponentSelector.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SitemapComponentSelector.java     2001/05/09 20:49:37     1.1
  +++ SitemapComponentSelector.java     2001/05/22 14:45:35     1.2
  @@ -15,13 +15,12 @@
   import org.apache.avalon.framework.component.Composable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.avalon.excalibur.component.DefaultComponentSelector;
   
   /** Default component manager for Cocoon's sitemap components.
    * @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Id: SitemapComponentSelector.java,v 1.1 2001/05/09 20:49:37 
giacomo Exp $
  + * @version CVS $Id: SitemapComponentSelector.java,v 1.2 2001/05/22 14:45:35 
cziegeler Exp $
    */
   public class SitemapComponentSelector extends DefaultComponentSelector {
       HashMap mime_types;
  
  
  
  1.2       +4 -4      
xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapModelComponent.java
  
  Index: SitemapModelComponent.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/SitemapModelComponent.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SitemapModelComponent.java        2001/05/09 20:49:37     1.1
  +++ SitemapModelComponent.java        2001/05/22 14:45:42     1.2
  @@ -12,21 +12,21 @@
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  -import org.xml.sax.EntityResolver;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.xml.sax.SAXException;
   
   /**
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a>
    *         (Apache Software Foundation, Exoffice Technologies)
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:37 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:42 $
    */
   public interface SitemapModelComponent extends Component {
   
       /**
  -     * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
  +     * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        */
  -    void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
       throws ProcessingException, SAXException, IOException;
   }
  
  
  
  1.2       +17 -5     
xml-cocoon2/src/org/apache/cocoon/transformation/AbstractDOMTransformer.java
  
  Index: AbstractDOMTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/AbstractDOMTransformer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractDOMTransformer.java       2001/05/09 20:49:34     1.1
  +++ AbstractDOMTransformer.java       2001/05/22 14:47:08     1.2
  @@ -14,9 +14,11 @@
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.Composable;
   import org.apache.avalon.framework.parameters.Parameters;
  +import org.apache.avalon.excalibur.pool.Recyclable;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.parser.Parser;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.transformation.Transformer;
   import org.apache.cocoon.xml.XMLConsumer;
   import org.apache.cocoon.xml.dom.DOMBuilder;
  @@ -24,7 +26,6 @@
   import org.apache.cocoon.xml.dom.DOMStreamer;
   import org.w3c.dom.Document;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
   
  @@ -40,10 +41,10 @@
    * @version CVS $Revision $Date
    */
   public abstract class AbstractDOMTransformer extends DOMBuilder
  -    implements Transformer, DOMBuilder.Listener, Composable, Disposable {
  +    implements Transformer, DOMBuilder.Listener, Composable, 
Disposable,Recyclable {
   
       /** The SAX entity resolver */
  -    protected EntityResolver resolver;
  +    protected SourceResolver resolver;
       /** The request object model */
       protected Map objectModel;
       /** The URI requested */
  @@ -79,13 +80,24 @@
       }
   
       /**
  -     * Set the <code>EntityResolver</code>, objectModel <code>Map</code>,
  +     * Recycle the component.
  +     */
  +    public void recycle() {
  +        this.resolver = null;
  +        this.source = null;
  +        this.objectModel = null;
  +        this.parameters = null;
  +    }
  +
  +
  +    /**
  +     * Set the <code>SourceResolver</code>, objectModel <code>Map</code>,
        * the source and sitemap <code>Parameters</code> used to process the 
request.
        *
        * If you wish to process the parameters, override this method, call
        * <code>super()</code> and then add your code.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
           throws ProcessingException, SAXException, IOException {
           this.resolver = resolver;
           this.objectModel = objectModel;
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/transformation/FragmentExtractorTransformer.java
  
  Index: FragmentExtractorTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/FragmentExtractorTransformer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FragmentExtractorTransformer.java 2001/05/09 20:49:34     1.1
  +++ FragmentExtractorTransformer.java 2001/05/22 14:47:17     1.2
  @@ -23,6 +23,7 @@
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.Cacheable;
   import org.apache.cocoon.caching.NOPCacheValidity;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.generation.FragmentExtractorGenerator;
   import org.apache.cocoon.transformation.AbstractTransformer;
   import org.apache.cocoon.util.HashUtil;
  @@ -30,7 +31,6 @@
   import org.apache.cocoon.xml.dom.DOMFactory;
   import org.w3c.dom.Document;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
   
  @@ -43,7 +43,7 @@
    * <a href="http://c2.com/cgi/wiki?YouArentGonnaNeedIt";>you aren't gonna 
need it</a>,
    * so I've just used very simple extraction based on a URI and local name.
    * @author <a href="mailto:[EMAIL PROTECTED]">Paul Russell</a>
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:34 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:17 $
    */
   public class FragmentExtractorTransformer extends AbstractTransformer
       implements Composable, Disposable, Cacheable, Poolable {
  @@ -75,7 +75,7 @@
   
       /** Setup the transformer.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
               throws ProcessingException, SAXException, IOException {
           extractLevel = 0;
           imageID = 0;
  
  
  
  1.3       +12 -28    
xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java
  
  Index: I18nTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- I18nTransformer.java      2001/05/14 13:51:33     1.2
  +++ I18nTransformer.java      2001/05/22 14:47:24     1.3
  @@ -28,13 +28,13 @@
   import org.apache.cocoon.acting.LangSelect;
   import org.apache.cocoon.caching.CacheValidity;
   import org.apache.cocoon.caching.Cacheable;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.caching.TimeStampCacheValidity;
   import org.apache.cocoon.components.parser.Parser;
  -import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
  @@ -106,8 +106,6 @@
    */
   public class I18nTransformer extends AbstractTransformer implements 
Composable, Recyclable, Cacheable {
   
  -    private static final String FILE = "file:";
  -
       protected ComponentManager manager;
   
       public Map dictionary;
  @@ -131,10 +129,9 @@
       protected boolean is_element = false;
       protected String lang;
       protected String source;
  +
       /** The input source */
  -    private InputSource inputSource;
  -    /** The system ID of the input source */
  -    private String      systemID;
  +    private Source inputSource;
   
       /**
        *  Uses <code>org.apache.cocoon.acting.LangSelect.getLang()</code>
  @@ -142,12 +139,11 @@
        *  objectModel.
        */
   
  -    public void setup(EntityResolver resolver, Map objectModel, String 
source,
  +    public void setup(SourceResolver resolver, Map objectModel, String 
source,
               Parameters parameters)
               throws ProcessingException, SAXException, IOException {
   
  -        this.inputSource = resolver.resolveEntity(null, source);
  -        this.systemID = this.inputSource.getSystemId();
  +        this.inputSource = resolver.resolve(source);
   
           lang = (String)(objectModel.get("lang"));
           if (lang == null) {
  @@ -156,18 +152,7 @@
   
           this.source = source;
   
  -        URL tr = null;
  -        URLFactory urlFactory = null;
  -        try {
  -            urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
  -            tr = urlFactory.getURL(this.systemID);
  -        } catch (Exception e) {
  -            getLogger().error("cannot obtain the URLFactory", e);
  -            throw new SAXException("cannot obtain the URLFactory", e);
  -        } finally {
  -            if (urlFactory != null) 
this.manager.release((Component)urlFactory);
  -        }
  -        initialiseDictionary(tr);
  +        initialiseDictionary(this.inputSource.getURL());
       }
   
       /**
  @@ -177,8 +162,8 @@
        * @return The generated key hashes the src
        */
       public long generateKey() {
  -        if (this.systemID.startsWith(FILE) == true) {
  -            return HashUtil.hash(this.source);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return HashUtil.hash(this.inputSource.getSystemId());
           }
           return 0;
       }
  @@ -190,9 +175,8 @@
        *         component is currently not cacheable.
        */
       public CacheValidity generateValidity() {
  -        if (this.systemID.startsWith(FILE) == true) {
  -            File xmlFile = new File(this.systemID.substring(FILE.length()));
  -            return new TimeStampCacheValidity(xmlFile.lastModified());
  +        if (this.inputSource.getLastModified() != 0) {
  +            return new 
TimeStampCacheValidity(this.inputSource.getLastModified());
           }
           return null;
       }
  @@ -391,6 +375,6 @@
       public void recycle() {
           super.recycle();
           this.inputSource = null;
  -        this.systemID = null;
  +        this.source = null;
       }
   }
  
  
  
  1.2       +3 -14     
xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer2.java
  
  Index: I18nTransformer2.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/I18nTransformer2.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- I18nTransformer2.java     2001/05/15 12:01:44     1.1
  +++ I18nTransformer2.java     2001/05/22 14:47:29     1.2
  @@ -13,7 +13,7 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.acting.LangSelect;
   import org.apache.cocoon.components.parser.Parser;
  -import org.apache.cocoon.components.url.URLFactory;
  +import org.apache.cocoon.environment.SourceResolver;
   
   import org.apache.avalon.excalibur.pool.Poolable;
   import org.apache.avalon.framework.component.ComponentManager;
  @@ -24,7 +24,6 @@
   import org.apache.avalon.framework.logger.Loggable;
   
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.helpers.AttributesImpl;
  @@ -198,7 +197,7 @@
        *  objectModel.
        */
   
  -    public void setup(EntityResolver resolver, Map objectModel, String 
source,
  +    public void setup(SourceResolver resolver, Map objectModel, String 
source,
               Parameters parameters)
               throws ProcessingException, SAXException, IOException {
   
  @@ -209,17 +208,7 @@
   
           String translations_file = parameters.getParameter("src", null);
   
  -        URL tr = null;
  -        URLFactory urlFactory = null;
  -        try {
  -            urlFactory = (URLFactory) this.manager.lookup(Roles.URL_FACTORY);
  -            tr = urlFactory.getURL(resolver.resolveEntity(null, 
translations_file).getSystemId());
  -        } catch (Exception e) {
  -            getLogger().error("cannot obtain the URLFactory", e);
  -            throw new SAXException("cannot obtain the URLFactory", e);
  -        } finally {
  -            if (urlFactory != null) 
this.manager.release((Component)urlFactory);
  -        }
  +        URL tr = resolver.resolve(source).getURL();
           initialiseDictionary(tr);
       }
   
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/transformation/LogTransformer.java
  
  Index: LogTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/LogTransformer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LogTransformer.java       2001/05/09 20:49:34     1.1
  +++ LogTransformer.java       2001/05/22 14:47:36     1.2
  @@ -13,9 +13,9 @@
   import java.util.Map;
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.avalon.excalibur.pool.Poolable;
   import org.xml.sax.Attributes;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
   
  @@ -43,7 +43,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
    *         (PWR Organisation &amp; Entwicklung)
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:34 $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:36 $
    *
    */
   public class LogTransformer extends AbstractTransformer implements Poolable {
  @@ -63,7 +63,7 @@
   
       /** BEGIN SitemapComponent methods **/
   
  -    public void setup(EntityResolver resolver, Map objectModel,
  +    public void setup(SourceResolver resolver, Map objectModel,
                         String source, Parameters parameters)
               throws ProcessingException, SAXException, IOException {
           if (logfile == null) {
  
  
  
  1.2       +3 -3      
xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java
  
  Index: SQLTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/SQLTransformer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SQLTransformer.java       2001/05/09 20:49:35     1.1
  +++ SQLTransformer.java       2001/05/22 14:47:41     1.2
  @@ -27,6 +27,7 @@
   import org.apache.avalon.framework.parameters.Parameters;
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.Roles;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.ClassUtils;
   import org.apache.cocoon.xml.XMLConsumer;
   import org.apache.cocoon.xml.XMLProducer;
  @@ -35,7 +36,6 @@
   import org.apache.log.Logger;
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
  @@ -46,7 +46,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
    *         (PWR Organisation & Entwicklung)
  - * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:35 $ $Author: 
giacomo $
  + * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:47:41 $ $Author: 
cziegeler $
    */
   
   public class SQLTransformer extends AbstractTransformer implements 
Composable, Poolable, Disposable {
  @@ -113,7 +113,7 @@
   
       /** BEGIN SitemapComponent methods **/
   
  -    public void setup(EntityResolver resolver, Map objectModel,
  +    public void setup(SourceResolver resolver, Map objectModel,
                         String source, Parameters parameters)
       throws ProcessingException, SAXException, IOException {
           current_state = SQLTransformer.STATE_OUTSIDE;
  
  
  
  1.3       +38 -46    
xml-cocoon2/src/org/apache/cocoon/transformation/TraxTransformer.java
  
  Index: TraxTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/TraxTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TraxTransformer.java      2001/05/14 13:51:34     1.2
  +++ TraxTransformer.java      2001/05/22 14:47:46     1.3
  @@ -44,6 +44,8 @@
   import org.apache.cocoon.components.browser.Browser;
   import org.apache.cocoon.components.store.Store;
   import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.HashUtil;
   import org.apache.cocoon.util.TraxErrorHandler;
   import org.apache.cocoon.xml.ContentHandlerWrapper;
  @@ -51,7 +53,6 @@
   import org.apache.avalon.excalibur.pool.Poolable;
   import org.apache.avalon.excalibur.pool.Recyclable;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
  @@ -98,7 +99,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Davanum Srinivas</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
  - * @version CVS $Id: TraxTransformer.java,v 1.2 2001/05/14 13:51:34 
cziegeler Exp $
  + * @version CVS $Id: TraxTransformer.java,v 1.3 2001/05/22 14:47:46 
cziegeler Exp $
    */
   public class TraxTransformer extends ContentHandlerWrapper
   implements Transformer, Composable, Recyclable, Configurable, Cacheable, 
Disposable {
  @@ -128,32 +129,31 @@
   
       private ComponentManager manager;
   
  -    private long xslFileLastModified;
  -
  -    /** The InputSource */
  -    private InputSource inputSource;
  -    private String systemID;
  -    private String xsluri;
  +    /** The Source */
  +    private Source inputSource;
  +    /** The parameters */
       private Parameters par;
  +    /** The object model */
       private Map objectModel;
  -    private EntityResolver resolver;
  +    /** The source resolver */
  +    SourceResolver resolver;
   
  -    TransformerHandler getTransformerHandler(EntityResolver resolver)
  +    TransformerHandler getTransformerHandler()
       throws SAXException, ProcessingException, IOException, 
TransformerConfigurationException {
           Templates templates = getTemplates();
           if(templates == null) {
  -            getLogger().debug("Creating new Templates in " + this + " for " 
+ systemID + ":" + xsluri);
  -            templates = getTransformerFactory().newTemplates(new 
SAXSource(this.inputSource));
  +            getLogger().debug("Creating new Templates in " + this + " for " 
+ this.inputSource.getSystemId());
  +            templates = getTransformerFactory().newTemplates(new 
SAXSource(new InputSource(this.inputSource.getReader())));
               putTemplates (templates);
           } else {
  -            getLogger().debug("Reusing Templates in " + this + " for " + 
systemID + ":" + xsluri);
  +            getLogger().debug("Reusing Templates in " + this + " for " + 
this.inputSource.getSystemId());
           }
   
           TransformerHandler handler = 
getTransformerFactory().newTransformerHandler(templates);
           if(handler == null) {
               /* If there is a problem in getting the handler, try using a 
brand new Templates object */
  -            getLogger().debug("Re-creating new Templates in " + this + " 
for" + systemID + ":" + xsluri);
  -            templates = getTransformerFactory().newTemplates(new 
SAXSource(resolver.resolveEntity(null, this.xsluri)));
  +            getLogger().debug("Re-creating new Templates in " + this + " 
for" + this.inputSource.getSystemId());
  +            templates = getTransformerFactory().newTemplates(new 
SAXSource(new InputSource(this.inputSource.getReader())));
               putTemplates (templates);
               handler = 
getTransformerFactory().newTransformerHandler(templates);
           }
  @@ -169,15 +169,15 @@
               return null;
   
           // only stylesheets with a last modification date are stored
  -        if (this.xslFileLastModified != 0) {
  +        if (this.inputSource.getLastModified() != 0) {
   
               // Stored is an array of the template and the caching time
  -            if (store.containsKey(xsluri) == true) {
  -                Object[] templateAndTime = (Object[])store.get(xsluri);
  +            if (store.containsKey(this.inputSource.getSystemId()) == true) {
  +                Object[] templateAndTime = 
(Object[])store.get(this.inputSource.getSystemId());
                   if(templateAndTime != null && templateAndTime[1] != null) {
                       long storedTime = ((Long)templateAndTime[1]).longValue();
  -                    if (storedTime < this.xslFileLastModified) {
  -                        store.remove(xsluri);
  +                    if (storedTime < this.inputSource.getLastModified()) {
  +                        store.remove(this.inputSource.getSystemId());
                       } else {
                           templates = (Templates)templateAndTime[0];
                       }
  @@ -185,8 +185,8 @@
               }
           } else {
               // remove an old template if it exists
  -            if (store.containsKey(xsluri) == true) {
  -               store.remove(xsluri);
  +            if (store.containsKey(this.inputSource.getSystemId()) == true) {
  +               store.remove(this.inputSource.getSystemId());
               }
           }
           return templates;
  @@ -198,13 +198,13 @@
               return;
   
           // only stylesheets with a last modification date are stored
  -        if (this.xslFileLastModified != 0) {
  +        if (this.inputSource.getLastModified() != 0) {
   
               // Stored is an array of the template and the current time
               Object[] templateAndTime = new Object[2];
               templateAndTime[0] = templates;
  -            templateAndTime[1] = new Long(this.xslFileLastModified);
  -            store.hold(this.xsluri, templateAndTime);
  +            templateAndTime[1] = new 
Long(this.inputSource.getLastModified());
  +            store.hold(this.inputSource.getSystemId(), templateAndTime);
           }
       }
   
  @@ -215,7 +215,9 @@
           if(tfactory == null)  {
               tfactory = (SAXTransformerFactory) 
TransformerFactory.newInstance();
               tfactory.setErrorListener(new TraxErrorHandler(getLogger()));
  +            
tfactory.setURIResolver((javax.xml.transform.URIResolver)this.resolver);
           }
  +        
tfactory.setURIResolver((javax.xml.transform.URIResolver)this.resolver);
           return tfactory;
       }
   
  @@ -254,30 +256,22 @@
       }
   
       /**
  -     * Set the <code>EntityResolver</code>, the <code>Map</code> with
  +     * Set the <code>SourceResolver</code>, the <code>Map</code> with
        * the object model, the source and sitemap
        * <code>Parameters</code> used to process the request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
       throws SAXException, ProcessingException, IOException {
   
           // Check the stylesheet uri
  -        this.xsluri = src;
  -        if (this.xsluri == null) {
  +        if (src == null) {
               throw new ProcessingException("Stylesheet URI can't be null");
           }
           this.par = par;
           this.objectModel = objectModel;
  -        this.inputSource = resolver.resolveEntity(null, this.xsluri);
  -        this.systemID = inputSource.getSystemId();
  +        this.inputSource = resolver.resolve(src);
           this.resolver = resolver;
  -
  -        this.xslFileLastModified = 0;
  -        if (this.systemID.startsWith(FILE) == true) {
  -            File xslFile = new File(this.systemID.substring(FILE.length()));
  -            this.xslFileLastModified = xslFile.lastModified();
  -        }
  -        getLogger().debug("Using stylesheet: '"+this.xsluri+"' in " + this + 
", last modified: " + this.xslFileLastModified);
  +        getLogger().debug("Using stylesheet: 
'"+this.inputSource.getSystemId()+"' in " + this + ", last modified: " + 
this.inputSource.getLastModified());
       }
   
       /**
  @@ -287,8 +281,8 @@
        * @return The generated key hashes the src
        */
       public long generateKey() {
  -        if (this.xslFileLastModified != 0) {
  -            return HashUtil.hash(this.xsluri);
  +        if (this.inputSource.getLastModified() != 0) {
  +            return HashUtil.hash(this.inputSource.getSystemId());
           } else {
               return 0;
           }
  @@ -301,14 +295,14 @@
        *         component is currently not cacheable.
        */
       public CacheValidity generateValidity() {
  -        if (this.xslFileLastModified != 0) {
  +        if (this.inputSource.getLastModified() != 0) {
               HashMap map = getLogicSheetParameters();
               if (map == null) {
  -                return new TimeStampCacheValidity(this.xslFileLastModified);
  +                return new 
TimeStampCacheValidity(this.inputSource.getLastModified());
               } else {
                   return new CompositeCacheValidity(
                                       new ParametersCacheValidity(map),
  -                                    new 
TimeStampCacheValidity(this.xslFileLastModified)
  +                                    new 
TimeStampCacheValidity(this.inputSource.getLastModified())
                                       );
               }
           }
  @@ -325,7 +319,7 @@
   
           /** Get a Transformer Handler */
           try {
  -            transformerHandler = getTransformerHandler(resolver);
  +            transformerHandler = getTransformerHandler();
           } catch (TransformerConfigurationException e){
               getLogger().error("Problem in getTransformer:", e);
               throw new RuntimeException("Problem in getTransformer:" + 
e.getMessage());
  @@ -514,8 +508,6 @@
           this.objectModel = null;
           this.inputSource = null;
           this.par = null;
  -        this.systemID = null;
  -        this.xsluri = null;
           this.resolver = null;
           super.recycle();
       }
  
  
  
  1.3       +3 -3      
xml-cocoon2/src/org/apache/cocoon/transformation/XIncludeTransformer.java
  
  Index: XIncludeTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/XIncludeTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XIncludeTransformer.java  2001/05/10 21:17:04     1.2
  +++ XIncludeTransformer.java  2001/05/22 14:47:52     1.3
  @@ -30,6 +30,7 @@
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.parser.Parser;
   import org.apache.cocoon.components.url.URLFactory;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.xml.XIncludeContentHandler;
   import org.apache.cocoon.xml.dom.DOMBuilder;
   import org.apache.cocoon.xml.dom.DOMStreamer;
  @@ -40,7 +41,6 @@
   import org.w3c.dom.NodeList;
   import org.xml.sax.Attributes;
   import org.xml.sax.ContentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
   import org.xml.sax.Locator;
   import org.xml.sax.SAXException;
  @@ -54,7 +54,7 @@
    * by the SAX event FSM yet.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:17:04 $ $Author: 
bloritsch $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:47:52 $ $Author: 
cziegeler $
    */
   public class XIncludeTransformer extends AbstractTransformer implements 
Composable, Recyclable, Disposable {
   
  @@ -88,7 +88,7 @@
   
       protected Stack xmlbase_element_name_stack = new Stack();
   
  -    public void setup(EntityResolver resolver, Map objectModel,
  +    public void setup(SourceResolver resolver, Map objectModel,
                         String source, Parameters parameters)
               throws ProcessingException, SAXException, IOException {}
       /*
  
  
  
  1.3       +5 -13     
xml-cocoon2/src/org/apache/cocoon/transformation/XTTransformer.java
  
  Index: XTTransformer.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/org/apache/cocoon/transformation/XTTransformer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XTTransformer.java        2001/05/10 21:17:05     1.2
  +++ XTTransformer.java        2001/05/22 14:47:56     1.3
  @@ -41,7 +41,7 @@
   import org.apache.cocoon.Roles;
   import org.apache.cocoon.components.store.Store;
   import org.apache.cocoon.components.url.URLFactory;
  -import org.apache.cocoon.environment.Request;
  +import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.transformation.Transformer;
   import org.apache.cocoon.xml.DocumentHandlerAdapter;
   import org.apache.cocoon.xml.DocumentHandlerWrapper;
  @@ -52,7 +52,6 @@
   import org.xml.sax.ContentHandler;
   import org.xml.sax.DTDHandler;
   import org.xml.sax.DocumentHandler;
  -import org.xml.sax.EntityResolver;
   import org.xml.sax.ErrorHandler;
   import org.xml.sax.HandlerBase;
   import org.xml.sax.InputSource;
  @@ -66,7 +65,7 @@
    * This Transformer use the XT processor.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Sahuc Sebastien</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/05/10 21:17:05 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 14:47:56 $
    */
   public class XTTransformer extends DocumentHandlerWrapper
   implements Transformer, Composable, Loggable, Recyclable, Disposable {
  @@ -106,19 +105,12 @@
       }
   
       /**
  -     * Set the <code>EntityResolver</code>, the <code>Dictionary</code> with
  +     * Set the <code>SourceResolver</code>, the <code>Dictionary</code> with
        * the object model, the source and sitemap
        * <code>Parameters</code> used to process the request.
        */
  -    public void setup(EntityResolver resolver, Map objectModel, String src, 
Parameters par)
  +    public void setup(SourceResolver resolver, Map objectModel, String src, 
Parameters par)
       throws SAXException, ProcessingException, IOException {
  -
  -        /** The Request object */
  -        Request request = (Request) 
objectModel.get(Constants.REQUEST_OBJECT);
  -        if (request == null) {
  -            throw new ProcessingException ("Missing request object in 
objectModel");
  -        }
  -
           // Check the stylesheet uri
           String xsluri = src;
           if (xsluri == null) {
  @@ -147,7 +139,7 @@
                   new ProcessingException(e.getMessage(),e);
               }
               loaderprocessor.setParser(saxParser.getParser());
  -            InputSource xslsrc = resolver.resolveEntity(null, xsluri);
  +            InputSource xslsrc = new 
InputSource(resolver.resolve(xsluri).getInputStream());;
               loaderprocessor.loadStylesheet(xslsrc);
               if (store != null) store.store(xsluri, loaderprocessor);
           }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to