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/12/11 14:06:04 UTC

cvs commit: xml-cocoon2/src/org/apache/cocoon/components/language/generator ProgramGeneratorImpl.java

sylvain     01/12/11 05:06:04

  Modified:    src/org/apache/cocoon/components/language/generator
                        ProgramGeneratorImpl.java
  Log:
  Undoed previous changes : it broke sitemap/XSP reloading
  
  Revision  Changes    Path
  1.25      +20 -58    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.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- ProgramGeneratorImpl.java	2001/12/09 21:36:42	1.24
  +++ ProgramGeneratorImpl.java	2001/12/11 13:06:04	1.25
  @@ -8,8 +8,6 @@
   
   package org.apache.cocoon.components.language.generator;
   
  -import org.apache.avalon.excalibur.monitor.FileResource;
  -import org.apache.avalon.excalibur.monitor.Monitor;
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.component.*;
   import org.apache.avalon.framework.configuration.Configurable;
  @@ -33,23 +31,18 @@
   import org.apache.cocoon.environment.Source;
   import org.apache.cocoon.environment.SourceResolver;
   import org.apache.cocoon.util.IOUtils;
  -import org.apache.cocoon.util.NetUtils;
   import org.xml.sax.InputSource;
   
  -import java.beans.PropertyChangeListener;
  -import java.beans.PropertyChangeEvent;
   import java.io.File;
  -import java.net.URL;
   import java.net.MalformedURLException;
   
   /**
    * The default implementation of <code>ProgramGenerator</code>
    * @author <a href="mailto:ricardo@apache.org">Ricardo Rocha</a>
  - * @version CVS $Revision: 1.24 $ $Date: 2001/12/09 21:36:42 $
  + * @version CVS $Revision: 1.25 $ $Date: 2001/12/11 13:06:04 $
    */
   public class ProgramGeneratorImpl extends AbstractLoggable
  -    implements ProgramGenerator, Contextualizable, Composable, Configurable, ThreadSafe, 
  -               Disposable, PropertyChangeListener {
  +    implements ProgramGenerator, Contextualizable, Composable, Configurable, ThreadSafe, Disposable {
   
       /** The auto-reloading option */
       protected boolean autoReload = false;
  @@ -84,15 +77,6 @@
       /** Servlet Context Directory */
       protected String contextDir;
   
  -    /** Resource monitoring */
  -    protected Monitor monitor;
  -
  -    /** lastModified date */
  -    protected long lastModified;
  -
  -    /** File resource */
  -    protected FileResource file;
  -
       /** Contextualize this class */
       public void contextualize(Context context) throws ContextException {
           if (this.workDir == null) {
  @@ -127,7 +111,6 @@
                   this.markupSelector = (ComponentSelector)this.manager.lookup(MarkupLanguage.ROLE + "Selector");
                   this.languageSelector = (ComponentSelector)this.manager.lookup(ProgrammingLanguage.ROLE + "Selector");
                   this.classManager = (ClassLoaderManager)this.manager.lookup(ClassLoaderManager.ROLE);
  -                this.monitor = (Monitor) this.manager.lookup(Monitor.ROLE);
               } catch (Exception e) {
                   getLogger().warn("Could not lookup Component", e);
               }
  @@ -162,15 +145,6 @@
           throws Exception {
   
           Source source = resolver.resolve(fileName);
  -        
  -        /** Monitoring the Sitemap source */
  -        URL url = new URL(source.getSystemId());
  -        getLogger().debug("Sitemap path=" + url.getFile());
  -        file = new FileResource(url.getFile());
  -        file.addPropertyChangeListener(this);
  -        monitor.addResource(file);
  -        getLogger().debug("lastModified date=" + this.getLastModified());
  -        
           try {
               // Set filenames
               StringBuffer contextFilename = new StringBuffer(this.rootPackage.replace('.', File.separatorChar));
  @@ -185,21 +159,21 @@
                   contextFilename.append(id);
               }
               String normalizedName = IOUtils.normalizedFilename(contextFilename.toString());
  -
  +    
               // Ensure no 2 requests for the same file overlap
               Class program = null;
               CompiledComponent programInstance = null;
  -
  +    
               // Attempt to load program object from cache
               try {
                   programInstance = (CompiledComponent) select(normalizedName);
               } catch (Exception e) {
                   getLogger().debug("The instance was not accessible from the internal cache. Proceeding.");
               }
  -
  +    
               if ((programInstance == null) && this.preload) {
                   String className = normalizedName.replace(File.separatorChar, '.');
  -
  +    
                   try {
                       program = this.classManager.loadClass(className);
                       this.addCompiledComponent(newManager, normalizedName, program);
  @@ -208,44 +182,44 @@
                       getLogger().debug("The class was not preloaded");
                   }
               }
  -
  +    
               if (programInstance == null) {
  -            programInstance =
  +	        programInstance =
                       this.createResource(
                           newManager, fileName, normalizedName,
                           markupLanguageName, programmingLanguageName, resolver
                       );
               }
  -
  +    
               if (this.autoReload == false) {
                   return programInstance;
               }
  -
  +    
               /*
                * FIXME: It's the program (not the instance) that must
                * be queried for changes!!!
                */
  -
  -            if (programInstance != null && programInstance.modifiedSince(this.getLastModified())) {
  +    
  +            if (programInstance != null && programInstance.modifiedSince(source.getLastModified())) {
                   // Release the component.
                   release(programInstance);
  -
  +    
                   // Unload program
                   ProgrammingLanguage programmingLanguage = (ProgrammingLanguage)this.languageSelector.select(programmingLanguageName);
                   programmingLanguage.setLanguageName(programmingLanguageName);
                   programmingLanguage.unload(program, normalizedName, this.workDir);
                   this.cache.removeGenerator(normalizedName);
  -
  +    
                   // Invalidate previous program/instance pair
                   program = null;
                   programInstance = null;
               }
  -
  +    
               if (programInstance == null) {
                   if (program == null) {
                       programInstance =
                           this.createResource(
  -                            newManager, fileName, normalizedName,
  +                            newManager, fileName, normalizedName, 
                               markupLanguageName, programmingLanguageName,
                               resolver
                           );
  @@ -316,7 +290,7 @@
               }
           }
   
  -    return programInstance;
  +	return programInstance;
       }
   
       private Class generateResource(ComponentManager newManager,
  @@ -328,7 +302,7 @@
           throws Exception {
   
           Source source = resolver.resolve(fileName);
  -        try {
  +        try { 
               // Input Source
               InputSource is = source.getInputSource();
               // Generate code
  @@ -347,7 +321,7 @@
               Class program = programmingLanguage.load(normalizedName, this.workDir, markupLanguage.getEncoding());
               // Store generated program in cache
               this.addCompiledComponent(newManager, normalizedName, program);
  -
  +    
               // FIXME: Do we want this functionality?  All analysis says no.
               if (markupLanguage.getClass().equals(SitemapMarkupLanguage.class)) {
                   try {
  @@ -357,7 +331,7 @@
                       this.addCompiledComponent(newManager, "sitemap", program);
                   }
               }
  -
  +    
               return program;
           } finally {
               source.recycle();
  @@ -389,17 +363,5 @@
           this.manager.release((Component)this.repository);
           this.manager.release((Component)this.markupSelector);
           this.manager.release((Component)this.languageSelector);
  -    }
  -
  -    public void propertyChange(PropertyChangeEvent evt) {
  -        setLastModified(((Long)evt.getNewValue()).longValue());
  -    }
  -
  -    private void setLastModified(long _lastModified) {
  -        lastModified = _lastModified;
  -    }
  -
  -    private long getLastModified() {
  -        return lastModified;
       }
   }
  
  
  

----------------------------------------------------------------------
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