I just notice that the deprecated folder from cvs
contains XMLDBGenerator and XMLDBCollectionGenerator.
But I never tried out. Anyway, would you suggest how I
could fix my generator to non-cached?

Thanks.


--- Ken C <[EMAIL PROTECTED]> wrote:
> Hi,
>     Having read the "write a custom generator"
> tutorial, I am trying to write one that hooks up a
> connection to an xmldb -- eXist; and then get an xml
> back based on a request parameter. Everything seems
> to
> work fine for the first time the request is made.
> Different request parameters on subsequent request
> won't result a correct xml. I suspect that this
> generator may have been cached, which is not what I
> want. Following is the code, it's ugly but just a
> first try...
> 
> ==========================================
> 
> import
> org.apache.cocoon.generation.AbstractGenerator;
> import org.xml.sax.helpers.AttributesImpl;
> import org.xml.sax.SAXException;
> // for the setup() method
> import org.apache.cocoon.environment.SourceResolver;
> import java.util.Map;
> import
> org.apache.avalon.framework.parameters.Parameters;
> import org.apache.cocoon.ProcessingException;
> import java.io.IOException;
> // used to deal with the request parameters.
> import
> org.apache.cocoon.environment.ObjectModelHelper;
> import org.apache.cocoon.environment.Request;
> import java.util.Enumeration;
> import java.util.Date;
> 
> //xmldb
> import org.xmldb.api.base.*;
> import org.xmldb.api.modules.*;
> import org.xmldb.api.*;
> 
> public class ThreadGenerator extends
> AbstractGenerator
> 
> {
>     // Will be initialized in the setup() method and
> used in generate()
>     Request request = null;
>     String threadID = null; //the thread we are
> looking for
>                             //todo: set threadID as
> a
> static final variable
>     
>     //xmldb
>     String driver = null;
>     Database database = null;
>     Collection col = null;
>     String[] resources = null;
>     XMLResource xmlres = null;
>     String forumURI =
> "xmldb:exist:///db/cocoon/forum"; //db root
>     
>     
>     public void setup(SourceResolver resolver, Map
> objectModel, 
>              String src, Parameters parameters)  
>          throws ProcessingException, SAXException,
> IOException 
>     {
>        super.setup(resolver, objectModel, src,
> parameters);
>        request =
> ObjectModelHelper.getRequest(objectModel);
>        forumURI = forumURI + "/" +
> request.getParameter("groupID");
>        forumURI = forumURI + "/" +
> request.getParameter("forumID");
>        
>        //xmldb
>        try {
>               driver = "org.exist.xmldb.DatabaseImpl"; 
> //todo: parameters.getParameter("driver");
>         Class cl = Class.forName(driver);
>         database = (Database)cl.newInstance();
>         DatabaseManager.registerDatabase(database);
>         database.setProperty("create-database",
> "true");
>         
>         
>         col =
> DatabaseManager.getCollection(forumURI);
> 
>         col.setProperty("pretty", "true");
>         col.setProperty("encoding", "UTF-8");
>         
>         this.getLogger().debug("getting threadID");
>         threadID = request.getParameter("threadID")
> +
> ".xml"; //todo: set threadID as a static final
> variable
>         resources = col.listResources();
>         this.getLogger().debug("getting threadID
> done...");
>         
>         }
>         catch(Exception e){}
>     } 
>     /**
>      * Implement the generate() method from
> AbstractGenerator.
>      */
>     public void generate() throws SAXException
>     {
>       
>       if (threadID!=null)
>       {
>         try {
>           
>               xmlres =
> (XMLResource)col.getResource(threadID);
>               if (xmlres==null)
>                 throw new SAXException("Resource not
> found:" + threadID + "doesn't not exist");
>               
>           
> xmlres.getContentAsSAX(this.contentHandler);
>                           
>               contentHandler.startDocument();
>               contentHandler.endDocument(); 
>               
>        }
>        
>       catch (Exception e){}
>       } 
>    }
>    public void recycle() {
>       super.recycle();
>       this.request = null;
>       driver = null;      
>       
>       try {
>       col.close();      
>       DatabaseManager.deregisterDatabase(database);
>       } 
>       catch (Exception e){}
>       database = null;
>       resources = null;
>       xmlres = null;
>       forumURI = null;      
>    }
> }
> //end class
> 
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Shopping - Send Flowers for Valentine's Day
> http://shopping.yahoo.com
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, email:
> [EMAIL PROTECTED]
> 


__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to