cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From p...@apache.org
Subject cvs commit: cocoon-2.1/src/java/org/apache/cocoon/components/modules/input XMLFileModule.java
Date Wed, 30 Jun 2004 21:04:08 GMT
pier        2004/06/30 14:04:08

  Modified:    src/java/org/apache/cocoon/components/modules/input
                        XMLFileModule.java
  Log:
  Flush caches when reloading an XML file in the XMLFileModule input module.
  This will prevent XPath values resolved with an old version of the file to
  be cached and returned even if the document changes.
  
  Revision  Changes    Path
  1.22      +18 -4     cocoon-2.1/src/java/org/apache/cocoon/components/modules/input/XMLFileModule.java
  
  Index: XMLFileModule.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/components/modules/input/XMLFileModule.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- XMLFileModule.java	29 Jun 2004 15:07:14 -0000	1.21
  +++ XMLFileModule.java	30 Jun 2004 21:04:08 -0000	1.22
  @@ -123,6 +123,8 @@
           private SourceValidity validity;
           /** Source content cached as DOM Document */
           private Document document;
  +        /** Remember who created us (and who's caching us) */
  +        private XMLFileModule instance;
   
           /**
            * Creates a new <code>DocumentHelper</code> instance.
  @@ -131,10 +133,11 @@
            * @param cache a <code>boolean</code> value, whether this source should
be kept in memory.
            * @param src a <code>String</code> value containing the URI
            */
  -        public DocumentHelper(boolean reload, boolean cache, String src) {
  +        public DocumentHelper(boolean reload, boolean cache, String src, XMLFileModule
instance) {
               this.reloadable = reload;
               this.cacheable = cache;
               this.uri = src;
  +            this.instance = instance;
               // defer loading of the document
           }
   
  @@ -176,6 +179,17 @@
                               }
                               this.validity = newValidity;
                               this.document = SourceUtil.toDOM(src);
  +
  +                            /*
  +                             * Clear the cache, otherwise reloads won't do much.
  +                             *
  +                             * FIXME (pf): caches should be held in the DocumentHelper
  +                             *             instance itself, clearing global cache will
  +                             *             clear everything for each configured document.
  +                             *             (this is a quick fix, no time to do the whole)
  +                             */
  +                            this.instance.expressionCache.clear();
  +                            this.instance.expressionValuesCache.clear();
                           }
                       }
                   }
  @@ -266,7 +280,7 @@
               // by assigning the source uri to this.src the last one will be the default
               // OTOH caching / reload parameters can be specified in one central place
               // if multiple file tags are used.
  -            this.documents.put(files[i], new DocumentHelper(reload, cache, this.src));
  +            this.documents.put(files[i], new DocumentHelper(reload, cache, this.src, this));
           }
   
           // init caches
  @@ -336,7 +350,7 @@
                   }
   
               }
  -            this.documents.put(src, new DocumentHelper(reload, cache, src));
  +            this.documents.put(src, new DocumentHelper(reload, cache, src, this));
           }
   
           try {
  
  
  

Mime
View raw message