Not a bad idea, but the pipeline is really a bunch of chained org.xml.sax.ContentHandler objects. Whatever custom events you have would have to extend that. If you look at the methods they are very XML centric. In practice, what you are suggesting has been implemented by using tools like Betwixt or Castor to convert the JavaBeans into SAX events, achieving the same effect. To do this with betwixt simply requires:

/**
* Generates an XML representation of a bean using Betwixt.
* The object to be serialized is retrieved from a request attribute
*
* @version $Revision: 1.2 $
* @created August 2003
*/
public class BeanGenerator extends AbstractGenerator
{
   protected ServiceManager manager;
   private Object           bean;

   /**
* Sets up the BeanGenerator. Parameters will be read and the bean will be
    * generated by calling the get method of the configured class.
    *
    * @param resolver the source resolver
    * @param objectModel the Cocoon object model
    * @param src ignored by the BeanGenerator
    * @param par parameters to the get method
    * @throws ProcessingException
    * @throws SAXException
    * @throws IOException
    */
public final void setup(SourceResolver resolver, Map objectModel, String src,
                     Parameters par)
       throws ProcessingException, SAXException, IOException
   {
       super.setup(resolver, objectModel, src, par);

Request request = (Request)objectModel.get(ObjectModelHelper.REQUEST_OBJECT); this.bean = request.getAttribute(BusinessDelegate.DATA_TRANSFER_OBJECT);
       if (this.bean == null)
       {
throw new ProcessingException("No object was provided to serialize");
       }
   }

   /**
    * Generate XML data.
    * @throws SAXException
    */
   public final void generate()
       throws SAXException
   {
       try
       {
SAXBeanWriter beanWriter = new SAXBeanWriter(this.contentHandler);
           beanWriter.setWriteEmptyElements(false);
           beanWriter.setWriteIDs(false);
beanWriter.getXMLIntrospector().setElementNameMapper(new CapitalizeNameMapper()); beanWriter.getXMLIntrospector().setAttributesForPrimitives(true);
           beanWriter.write(this.bean);
       }
       catch (Exception e)
       {
           getLogger().error("Cannot generate XML for " + bean, e);
           SAXException saxException = new SAXException(e.getMessage());
           throw saxException;
       }
   }
}


Ralph

Alexander Berezhnoy wrote:

Hi!
Recently I've realized, that the main feature of the Cocoon is the pipelines, not XML. In Cocoon components generate and process events, and those are SAX events.

Why not to try generalize this model in order to support any custom event? That could be Java Beans, for example.
In my opinion, that would be a great powering for Cocoon.

Alexander.



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

Reply via email to