You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by di...@apache.org on 2001/08/23 14:54:58 UTC

cvs commit: xml-cocoon2/xdocs docs-book.xml generators.xml

dims        01/08/23 05:54:58

  Modified:    .        build.xml
               src/org/apache/cocoon/generation XMLDBGenerator.java
               xdocs    docs-book.xml generators.xml
  Log:
  "Patches and additions to XML:DB" from "Gianugo Rabellino <g....@bibop.it>"
  
  Revision  Changes    Path
  1.52      +10 -3     xml-cocoon2/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/build.xml,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- build.xml	2001/08/20 16:14:01	1.51
  +++ build.xml	2001/08/23 12:54:58	1.52
  @@ -101,9 +101,10 @@
   - HTML Generator : Requires the JTidy package (included in the dist)
                      <map:generator  name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content"/>
   
  -- XML:DB Generator: Requires the XML:DB API and a valid implementation 
  -                    (notincluded in the dist)
  +- XML:DB Generators: Require the XML:DB API and a valid implementation 
  +                    (not included in the dist)
                       <map:generator name="xmldb" src="org.apache.cocoon.generation.XMLDBGenerator"/>
  +                    <map:generator name="xmldbcollection" src="org.apache.cocoon.generation.XMLDBCollectionGenerator"/>
                       
   Transformers
   
  @@ -311,7 +312,7 @@
           <exclude name="**/Sendmail*.java" unless="mail.present"/>
           <exclude name="**/LDAPTransformer*.java" unless="naming.present"/>
           <exclude name="**/JSPEngineImplWLS.java" unless="weblogic.present"/>
  -        <exclude name="**/XMLDBGenerator.java" unless="xmldb.present"/>
  +        <exclude name="**/XMLDB*.java" unless="xmldb.present"/>
           <exclude name="**/browser/*.x*"/>
         </fileset>
       </copy>
  @@ -630,6 +631,12 @@
       <property name="xmldb.conf" value="&lt;driver&gt;org.dbxml.client.xmldb.DatabaseImpl&lt;/driver&gt;&lt;base&gt;xmldb:dbxml:///db/&lt;/base&gt;"/>
       <java classname="st">
           <arg line="-i ${build.war}/sitemap.xmap -o ${build.war}/sitemap.xmap -a generators xmldb org.apache.cocoon.generation.XMLDBGenerator ${xmldb.conf}"/>
  +        <classpath>
  +          <pathelement location="${bin.dir}"/>
  +        </classpath>
  +    </java>
  +    <java classname="st">
  +        <arg line="-i ${build.war}/sitemap.xmap -o ${build.war}/sitemap.xmap -a generators xmldbcollection org.apache.cocoon.generation.XMLDBCollectionGenerator ${xmldb.conf}"/>
           <classpath>
             <pathelement location="${bin.dir}"/>
           </classpath>
  
  
  
  1.2       +67 -19    xml-cocoon2/src/org/apache/cocoon/generation/XMLDBGenerator.java
  
  Index: XMLDBGenerator.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/generation/XMLDBGenerator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLDBGenerator.java	2001/08/20 16:14:01	1.1
  +++ XMLDBGenerator.java	2001/08/23 12:54:58	1.2
  @@ -19,6 +19,7 @@
   import org.xmldb.api.base.XMLDBException;
   import org.xmldb.api.modules.XMLResource;
   
  +import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
  @@ -45,9 +46,14 @@
    * XML:DB compliant database.
    * It must to be configured as follows:
    * <pre>
  - * &lt;driver&gt;(a valid DB:XML compliant driver)&lt;/driver&gt;
  - * &lt;base&gt;xmldb:yourdriver://host/an/optional/path/to/be/prepended&lt;/base&gt;
  + * &lt;driver&gt;
  + *   (a valid DB:XML compliant driver)
  + * &lt;/driver&gt;
  + * &lt;base&gt;
  + *   xmldb:yourdriver://host/an/optional/path/to/be/prepended
  + * &lt;/base&gt;
    * </pre>
  + *
    * NOTE: the driver can be any DB:XML compliant driver (although this 
    * component has been tested only with 
    * <a href="http://www.dbxml.org">dbXML</a>, and the trailing
  @@ -57,7 +63,7 @@
    */
    
    public class XMLDBGenerator extends ComposerGenerator
  -   implements Cacheable, Recyclable,Configurable {
  +   implements Cacheable, Recyclable,Configurable,Initializable {
        
       protected String driver;
       protected String base;
  @@ -72,7 +78,8 @@
       }
       
       /**
  -     * Recycle the component, keep only the configuration variables.
  +     * Recycle the component, keep only the configuration variables
  +     * and the database instance for reuse.
        *
        */
        
  @@ -80,9 +87,8 @@
           super.recycle();
           this.col = null;
           this.res = null;
  -        this.database = null;
  -        this.collection = null;
           this.xmlResource = null;
  +        this.collection = null;
       }
       
      /**
  @@ -109,10 +115,44 @@
           throw new ConfigurationException("XMLDB configuration not found");
         }
       }
  +
  +   /**
  +    * Initialize the component getting a database instance. 
  +    *
  +    * @exception Exception if an error occurs
  +    */ 
  +
  +    public void initialize() throws Exception {
  +      try {
   
  -    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
  +        Class c = Class.forName(driver);
  +        database = (Database)c.newInstance();
  +        DatabaseManager.registerDatabase(database);
  +
  +      } catch (XMLDBException xde) {
  +
  +        this.getLogger().warn("Unable to connect to the XML:DB database");
  +        throw new ProcessingException("Unable to connect to the XML DB" 
  +          + xde.getMessage());
  +
  +      } catch (Exception e) {
  +
  +        this.getLogger().warn("There was a problem setting up the connection");
  +        this.getLogger().warn("Make sure that your driver is available");
  +        throw new ProcessingException("Problem setting up the connection: " 
  +          + e.getMessage());
  +
  +      } 
  +    }
  +
  +    public void setup(SourceResolver resolver, 
  +                      Map objectModel, 
  +                      String src, 
  +                      Parameters par)
         throws ProcessingException, SAXException,IOException {
  +
         super.setup(resolver, objectModel, src, par);
  +
       }
       
       /**
  @@ -145,27 +185,35 @@
       public void generate()
         throws IOException, SAXException, ProcessingException {
         String col = "/";
  -      this.getLogger().debug("Processing resource: " + source);
  +
         if (source.indexOf('/') != -1)
           col = "/" + source.substring(0, source.lastIndexOf('/'));        
         res = source.substring(source.lastIndexOf('/') + 1);
  +
         try {
  -        Class c = Class.forName(driver);
  -        Database database = (Database)c.newInstance();
  -        DatabaseManager.registerDatabase(database);
           collection = DatabaseManager.getCollection(base + col);
           xmlResource = (XMLResource) collection.getResource(res);
  +
           if (xmlResource == null)
  -          throw new ResourceNotFoundException("Document " + col + "/" +res + 
  -            "not found");
  +          throw new ResourceNotFoundException("Document " + col + "/" + res + 
  +            " not found");
  +
           xmlResource.getContentAsSAX(this.xmlConsumer);
  +
  +        collection.close();
  +
         } catch (XMLDBException xde) {
  +
           throw new ProcessingException("Unable to fetch content: " +
             xde.getMessage());
  -      } catch (Exception e) {
  -          this.getLogger().debug("Driver: " + driver +"/" + "Base: " + base);
  -          throw new ProcessingException("Unable to set up XMLDB connection (NULL?): " +
  -          e.getMessage());
  -      }
  +
  +      } catch (NullPointerException npe) {
  +
  +          this.getLogger().debug("The XML:DB driver raised an exception");
  +          this.getLogger().debug("probably the document was not found");
  +          throw new ProcessingException("Null pointer exception while " + 
  +          "retrieving document : " + npe.getMessage());
  +
  +      } 
       }
  - }
  +}
  
  
  
  1.24      +1 -0      xml-cocoon2/xdocs/docs-book.xml
  
  Index: docs-book.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/xdocs/docs-book.xml,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- docs-book.xml	2001/08/20 16:25:59	1.23
  +++ docs-book.xml	2001/08/23 12:54:58	1.24
  @@ -31,6 +31,7 @@
     <hidden id="stream-generator" label="Stream Generator" source="stream-generator.xml"/>
     <hidden id="php-generator" label="Php Generator" source="php-generator.xml"/>
     <hidden id="xmldb-generator" label="XML:DB Generator" source="xmldb-generator.xml"/>
  +  <hidden id="xmldbcollection-generator" label="XML:DB Generator" source="xmldbcollection-generator.xml"/>
   
     <!-- The transformers -->
     <page id="transformers" label="Transformers" source="transformers.xml"/>
  
  
  
  1.8       +1 -0      xml-cocoon2/xdocs/generators.xml
  
  Index: generators.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/xdocs/generators.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- generators.xml	2001/08/20 16:14:01	1.7
  +++ generators.xml	2001/08/23 12:54:58	1.8
  @@ -38,6 +38,7 @@
   				<li><link href="stream-generator.html">Stream Generator</link></li>
   				<li><link href="php-generator.html">Php Generator</link> (optional)</li>
   				<li><link href="xmldb-generator.html">XML:DB Generator</link> (optional)</li>
  +				<li><link href="xmldbcollection-generator.html">XML:DB Collection Generator</link> (optional)</li>
   			</ul>
   		</s1>
   	</body>
  
  
  

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