You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by pr...@apache.org on 2001/02/20 13:47:52 UTC

cvs commit: xml-cocoon/src/org/apache/cocoon/sitemap Manager.java XSLTFactoryLoader.java

prussell    01/02/20 04:47:51

  Modified:    src/org/apache/cocoon/sitemap Tag: xml-cocoon2 Manager.java
                        XSLTFactoryLoader.java
  Log:
  Fixing XSLTFactoryLoader's logging. This is not an ideal workaround as I
  am setting the log statically. Since as far as I know we can't get hold
  of the actual class instance to perform lifecycle management, I can't really
  see an alternative.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.9   +9 -1      xml-cocoon/src/org/apache/cocoon/sitemap/Attic/Manager.java
  
  Index: Manager.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/sitemap/Attic/Manager.java,v
  retrieving revision 1.1.2.8
  retrieving revision 1.1.2.9
  diff -u -r1.1.2.8 -r1.1.2.9
  --- Manager.java	2001/02/19 21:57:50	1.1.2.8
  +++ Manager.java	2001/02/20 12:47:43	1.1.2.9
  @@ -27,6 +27,7 @@
   import org.apache.cocoon.ProcessingException;
   import org.apache.cocoon.environment.Environment;
   import org.apache.cocoon.sitemap.Handler;
  +import org.apache.cocoon.sitemap.XSLTFactoryLoader;
   
   import org.xml.sax.SAXException;
   
  @@ -36,7 +37,7 @@
    * checking regeneration of the sub <code>Sitemap</code>
    *
    * @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
  - * @version CVS $Revision: 1.1.2.8 $ $Date: 2001/02/19 21:57:50 $
  + * @version CVS $Revision: 1.1.2.9 $ $Date: 2001/02/20 12:47:43 $
    */
   public class Manager extends AbstractLoggable implements Configurable, Composer, Contextualizable {
   
  @@ -74,6 +75,13 @@
               prefix = uri_prefix;
           Handler sitemapHandler = (Handler) sitemaps.get(source);
   
  +        /* FIXME: Workaround -- set the logger XSLTFactoryLoader used to generate source
  +         * within the sitemap generation phase.
  +         * Needed because we never have the opportunity to handle the lifecycle of the
  +         * XSLTFactoryLoader, since it is created by the Xalan engine.
  +         */
  +        XSLTFactoryLoader.setLogger(getLogger());
  +        
           if (sitemapHandler != null) {
               if (sitemapHandler.available()) {
                   if (check_reload
  
  
  
  1.1.2.9   +20 -17    xml-cocoon/src/org/apache/cocoon/sitemap/Attic/XSLTFactoryLoader.java
  
  Index: XSLTFactoryLoader.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/sitemap/Attic/XSLTFactoryLoader.java,v
  retrieving revision 1.1.2.8
  retrieving revision 1.1.2.9
  diff -u -r1.1.2.8 -r1.1.2.9
  --- XSLTFactoryLoader.java	2001/01/22 21:56:49	1.1.2.8
  +++ XSLTFactoryLoader.java	2001/02/20 12:47:46	1.1.2.9
  @@ -23,13 +23,16 @@
    * generation stylesheet to load <code>MatcherFactory</code>s or
    * <code>SelectorFactory</code>s to get the generated source code.
    *
  + * <strong>Note:</strong> This class uses a static log instance to
  + * set up the instances it creates. This is suboptimal.
  + *
    * @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
  - * @version CVS $Revision: 1.1.2.8 $ $Date: 2001/01/22 21:56:49 $
  + * @version CVS $Revision: 1.1.2.9 $ $Date: 2001/02/20 12:47:46 $
    */
   
  -public class XSLTFactoryLoader implements Loggable {
  -    protected Logger log;
  +public class XSLTFactoryLoader {
  +    protected static Logger log;
   
       private HashMap obj = new HashMap();
   
  @@ -50,27 +53,27 @@
                               + "\". Should implement the CodeFactory interface");
       }
   
  -    public void setLogger(Logger logger) {
  -        if (this.log == null) {
  -            this.log = logger;
  +    public static void setLogger(Logger logger) {
  +        if (log == null) {
  +            log = logger;
           }
       }
   
       public String getParameterSource(String className, NodeIterator conf)
       throws ClassNotFoundException, InstantiationException, IllegalAccessException, Exception {
           Object factory = obj.get(className);
  -    if (factory == null) factory = ClassUtils.newInstance(className);
  -    obj.put (className, factory);
  -
  -    if (factory instanceof Loggable) {
  -        ((Loggable)factory).setLogger(this.log);
  -    }
  -    if (factory instanceof CodeFactory) {
  -        return ((CodeFactory) factory).generateParameterSource(conf);
  -    }
  +        if (factory == null) factory = ClassUtils.newInstance(className);
  +        obj.put (className, factory);
   
  -    throw new Exception ("Wrong class \"" + factory.getClass().getName()
  -                         + "\". Should implement the CodeFactory interface");
  +        if (factory instanceof Loggable) {
  +            ((Loggable)factory).setLogger(this.log);
  +        }
  +        if (factory instanceof CodeFactory) {
  +            return ((CodeFactory) factory).generateParameterSource(conf);
  +        }
  +    
  +        throw new Exception ("Wrong class \"" + factory.getClass().getName()
  +                             + "\". Should implement the CodeFactory interface");
       }
   
       public String getMethodSource(String className, NodeIterator conf)