You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2001/08/31 15:48:57 UTC

cvs commit: xml-cocoon2/src/org/apache/cocoon/environment URLFactorySourceResolver.java

sylvain     01/08/31 06:48:57

  Modified:    src/org/apache/cocoon/components/language/markup
                        AbstractMarkupLanguage.java Logicsheet.java
  Added:       src/org/apache/cocoon/environment
                        URLFactorySourceResolver.java
  Log:
  Pass a SourceResolver to XSLTProcessor when reading builtin logicsheets, to allow <xsl:include>.
  This bug appeared today, but I don't understand how it could have worked before !!
  
  Revision  Changes    Path
  1.11      +2 -2      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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractMarkupLanguage.java	2001/08/30 08:43:57	1.10
  +++ AbstractMarkupLanguage.java	2001/08/31 13:48:57	1.11
  @@ -54,7 +54,7 @@
    * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
    * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
    * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
  - * @version CVS $Revision: 1.10 $ $Date: 2001/08/30 08:43:57 $
  + * @version CVS $Revision: 1.11 $ $Date: 2001/08/31 13:48:57 $
    */
   public abstract class AbstractMarkupLanguage extends AbstractLoggable
     implements MarkupLanguage, Composable, Configurable
  @@ -343,7 +343,7 @@
   
       if (logicsheet == null) {
         Source inputSource = resolver.resolve(logicsheetLocation);
  -      logicsheet = new Logicsheet(inputSource, manager);
  +      logicsheet = new Logicsheet(inputSource, manager, resolver);
         logicsheetName = logicsheet.getSystemId();
   
         logicsheetCache.store(CACHE_PREFIX + logicsheetName, logicsheet);
  
  
  
  1.6       +6 -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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Logicsheet.java	2001/08/25 19:40:32	1.5
  +++ Logicsheet.java	2001/08/31 13:48:57	1.6
  @@ -13,6 +13,8 @@
   import org.apache.avalon.framework.component.ComponentException;
   
   import org.apache.cocoon.environment.Source;
  +import org.apache.cocoon.environment.SourceResolver;
  +import org.apache.cocoon.environment.URLFactorySourceResolver;
   import org.apache.cocoon.util.TraxErrorHandler;
   import org.apache.cocoon.components.url.URLFactory;
   import org.apache.cocoon.components.xslt.XSLTProcessor;
  @@ -48,7 +50,7 @@
    * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
    * @author <a href="mailto:dims@yahoo.com">Davanum Srinivas</a>
    * @author <a href="mailto:ovidiu@cup.hp.com">Ovidiu Predescu</a>
  - * @version CVS $Revision: 1.5 $ $Date: 2001/08/25 19:40:32 $
  + * @version CVS $Revision: 1.6 $ $Date: 2001/08/31 13:48:57 $
    */
   public class Logicsheet extends AbstractLoggable
   {
  @@ -72,12 +74,13 @@
      */
     ComponentManager manager;
   
  -  public Logicsheet(Source source, ComponentManager manager)
  +  public Logicsheet(Source source, ComponentManager manager, SourceResolver resolver)
     {
       this.source = source;
       this.manager = manager;
       try {
         xsltProcessor = (XSLTProcessor)manager.lookup(XSLTProcessor.ROLE);
  +      xsltProcessor.setSourceResolver(resolver);
       }
       catch (ComponentException e) {
         getLogger().error("Cannot obtain XSLTProcessor component: " + e);
  @@ -110,6 +113,7 @@
       this.source = new URLSource(url, manager);
       try {
         xsltProcessor = (XSLTProcessor)manager.lookup(XSLTProcessor.ROLE);
  +      xsltProcessor.setSourceResolver(new URLFactorySourceResolver(urlFactory, manager));
       }
       catch (ComponentException e) {
         getLogger().error("Cannot obtain XSLTProcessor component: " + e);
  
  
  
  1.1                  xml-cocoon2/src/org/apache/cocoon/environment/URLFactorySourceResolver.java
  
  Index: URLFactorySourceResolver.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 java.net.URL;
  
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.component.ComponentException;
  
  import org.apache.cocoon.ProcessingException;
  import org.apache.cocoon.components.source.URLSource;
  import org.apache.cocoon.components.url.URLFactory;
  
  import org.xml.sax.SAXException;
  
  /**
   * A <code>SourceResolver</code> based on a <code>URLFactory</code>.
   *
   * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/08/31 13:48:57 $
   */
  
  public class URLFactorySourceResolver implements SourceResolver {
  
      /** The component manager */
      protected ComponentManager manager;
      
      /** The URL factory */
      protected URLFactory urlFactory;
      
      /**
       * Creates an <code>URLFactorySourceResolver</code> with a component manager.
       * The <code>URLFactory</code> is looked up in the component manager.
       */
      public URLFactorySourceResolver(ComponentManager manager)
        throws ComponentException {
          this.manager = manager;
          this.urlFactory = (URLFactory)manager.lookup(URLFactory.ROLE);
      }
      
      /**
       * Creates an <code>URLFactorySourceResolver</code> with a component manager and
       * a <code>URLFactory</code> that will be used to resolve URLs.
       */
      public URLFactorySourceResolver(URLFactory factory, ComponentManager manager) {
          this.urlFactory = factory;
          this.manager = manager;
      }
      
      /**
       * Resolve the source.
       *
       * @param systemID This is either a system identifier
       *        (<code>java.net.URL</code>) or a local file.
       */
      public Source resolve(String systemID)
        throws ProcessingException, SAXException, IOException {
          
          URL url = this.urlFactory.getURL(systemID);
          return new URLSource(url, this.manager);
      }
  }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org