cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vgritse...@apache.org
Subject svn commit: r158632 - cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java
Date Tue, 22 Mar 2005 18:00:43 GMT
Author: vgritsenko
Date: Tue Mar 22 10:00:41 2005
New Revision: 158632

URL: http://svn.apache.org/viewcvs?view=rev&rev=158632
Log:
add FileGeneratorFactory

Added:
    cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java   (with props)
Modified:
    cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java

Modified: cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java?view=diff&r1=158631&r2=158632
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/FileGenerator.java Tue Mar 22 10:00:41
2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -32,24 +32,27 @@
 /**
  * @cocoon.sitemap.component.documentation
  * The <code>FileGenerator</code> is a class that reads XML from a source
- * and generates SAX Events.
- * The FileGenerator implements the <code>CacheableProcessingComponent</code>
interface.
+ * and generates SAX Events. The <code>FileGenerator</code> implements the
+ * <code>CacheableProcessingComponent</code> interface.
+ *
+ * <br>See {@link FileGeneratorFactory} for thread safe implementation of this
+ * component.
  *
  * @cocoon.sitemap.component.name   file
  * @cocoon.sitemap.component.label  content
  * @cocoon.sitemap.component.logger sitemap.generator.file
  * @cocoon.sitemap.component.documentation.caching
- *               Uses the last modification date of the xml document for validation
+ *     Uses the last modification date of the xml document for validation
  *
  * @cocoon.sitemap.component.pooling.max  32
  *
  * @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
  *         (Apache Software Foundation)
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
- * @version CVS $Id$
+ * @version $Id$
  */
 public class FileGenerator extends ServiceableGenerator
-implements CacheableProcessingComponent {
+                           implements CacheableProcessingComponent {
 
     /** The input source */
     protected Source inputSource;

Added: cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java?view=auto&rev=158632
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java (added)
+++ cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java Tue Mar 22
10:00:41 2005
@@ -0,0 +1,149 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.generation;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceException;
+
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.xml.AbstractXMLProducer;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
+import org.apache.cocoon.components.source.SourceUtil;
+import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceException;
+import org.apache.excalibur.source.SourceValidity;
+import org.xml.sax.SAXException;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * @cocoon.sitemap.component.documentation
+ * The <code>FileGeneratorFactory</code> is a class that reads XML from a source
+ * and generates SAX Events. The <code>FileGeneratorFactory</code> implements
the
+ * <code>CacheableProcessingComponent</code> interface.
+ *
+ * @cocoon.sitemap.component.name   file
+ * @cocoon.sitemap.component.label  content
+ * @cocoon.sitemap.component.logger sitemap.generator.file
+ * @cocoon.sitemap.component.documentation.caching
+ *     Uses the last modification date of the xml document for validation
+ *
+ * @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
+ *         (Apache Software Foundation)
+ * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
+ * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
+ * @version $Id$
+ */
+public class FileGeneratorFactory extends AbstractLogEnabled
+                                  implements GeneratorFactory, Serviceable {
+
+    /** The service manager */
+    private ServiceManager manager;
+
+    public void service(ServiceManager manager) throws ServiceException {
+        this.manager = manager;
+    }
+
+    /**
+     * Single threaded instance implementing generator functionality.
+     */
+    private class Instance extends AbstractXMLProducer
+                           implements GeneratorFactory.Instance,
+                                      CacheableProcessingComponent, Disposable {
+
+        /** The source resolver */
+        private SourceResolver resolver;
+
+        /** The input source */
+        private Source source;
+
+        /** Return GeneratorFactory */
+        public GeneratorFactory getFactory() {
+            return FileGeneratorFactory.this;
+        }
+
+        public Instance(Logger logger) {
+            enableLogging(logger);
+        }
+
+        /** Setup: resolve the source */
+        public void setup(SourceResolver resolver, Map objectModel, String src, Parameters
par)
+        throws ProcessingException, SAXException, IOException {
+            this.resolver = resolver;
+            try {
+                this.source = this.resolver.resolveURI(src);
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug("Source '" + src +
+                                      "' resolved to <" + this.source.getURI() + ">");
+                }
+            } catch (SourceException se) {
+                throw SourceUtil.handle("Error during resolving of '" + src + "'.", se);
+            }
+        }
+
+        /** Dispose: release the source */
+        public void dispose() {
+            if (this.source != null) {
+                this.resolver.release(this.source);
+                this.source = null;
+            }
+        }
+
+        /**
+         * Generate the unique key.
+         * This key must be unique inside the space of this component.
+         *
+         * @return The generated key hashes the src
+         */
+        public Serializable getKey() {
+            return this.source.getURI();
+        }
+
+        /**
+         * Generate the validity object.
+         *
+         * @return The generated validity object or <code>null</code> if the
+         *         component is currently not cacheable.
+         */
+        public SourceValidity getValidity() {
+            return this.source.getValidity();
+        }
+
+        /**
+         * Generate XML data.
+         */
+        public void generate()
+        throws IOException, SAXException, ProcessingException {
+            try {
+                SourceUtil.parse(manager, this.source, super.xmlConsumer);
+            } catch (SAXException e) {
+                SourceUtil.handleSAXException(this.source.getURI(), e);
+            }
+        }
+    }
+
+    public GeneratorFactory.Instance getInstance() {
+        return new Instance(getLogger());
+    }
+}

Propchange: cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/src/java/org/apache/cocoon/generation/FileGeneratorFactory.java
------------------------------------------------------------------------------
    svn:keywords = Id



Mime
View raw message