Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 23313 invoked from network); 12 Feb 2005 23:19:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 12 Feb 2005 23:19:58 -0000 Received: (qmail 74206 invoked by uid 500); 12 Feb 2005 23:19:56 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 74143 invoked by uid 500); 12 Feb 2005 23:19:56 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: dev@cocoon.apache.org Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 74130 invoked by uid 99); 12 Feb 2005 23:19:55 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=RCVD_BY_IP,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: domain of irv.salisbury@gmail.com designates 64.233.184.200 as permitted sender) Received: from wproxy.gmail.com (HELO wproxy.gmail.com) (64.233.184.200) by apache.org (qpsmtpd/0.28) with ESMTP; Sat, 12 Feb 2005 15:19:54 -0800 Received: by wproxy.gmail.com with SMTP id 71so521667wri for ; Sat, 12 Feb 2005 15:19:52 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:references; b=CVD1c8vf20lydxu/O3uTU/hM13NiuRKo8KI2yi6hyfraeitSsDAIFTCn4lHON/vKvpx37Ctly3uXjqA8BDS0WUGBGAaggkUYQl/01qjpRUrqLD60KYejir0xz/t0pvSUeSHPloOyE/PN2I9q54/thf/m1NbH+Ppcrq4+qKHlFVQ= Received: by 10.54.52.67 with SMTP id z67mr7256wrz; Sat, 12 Feb 2005 15:19:52 -0800 (PST) Received: by 10.54.24.70 with HTTP; Sat, 12 Feb 2005 15:19:52 -0800 (PST) Message-ID: <8b8d97d2050212151973d5dcd6@mail.gmail.com> Date: Sat, 12 Feb 2005 18:19:52 -0500 From: Irv Salisbury Reply-To: Irv Salisbury To: dev@cocoon.apache.org Subject: Re: XMLBeans and request attributes In-Reply-To: <420E0A39.4070101@nada.kth.se> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit References: <8b8d97d205021111567cee763d@mail.gmail.com> <420E0A39.4070101@nada.kth.se> X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N On Sat, 12 Feb 2005 14:52:57 +0100, Daniel Fagerstrom wrote: > Irv Salisbury wrote: > > This is really a follow up to some questions I asked earlier about XML > > in request attributes. I wanted to show how I went about solving what > > I needed, and to get feedback if there is a better way. > > > > To recap, my basic problem was that I wanted to call internal > > pipelines and pass them XML. The cocoon: protocol does not support > > POST, so the easiest way I was told to use request attributes. I > > decided to incorporate XMLBeans into the mix to make my life easier. > > > > So, all of my business objects in the system are XMLBeans that have > > been generated from a set of XMLSchema files. I have a series of > > internal pipelines that can generate XML of these schemas. To "pass" > > the objects around, I use a combination of flowscript and a generator > > I wrote that generates XML from a request attribute that happens to be > > an XMLObject. (Borrowing from the RequestAttributeGenerator) > > > > So, here is a simple flow snippet: > > > > var sessionInfo = getSessionInfo(); > > cocoon.request.setAttribute( "sessionInfo", sessionInfo ); > > cocoon.sendPage( "internal/style/catalog" ); > > > > So, the goal of the getSessionInfo call is to create a SessionInfo > > object, which happens to be an XMLBeans object. Here is the > > getSessionInfo method: > > > > function getSessionInfo() { > > var pipelineUtil = cocoon.createObject( PipelineUtil ); > > var xmlSaxHandler = > > XmlBeans.getContextTypeLoader().newXmlSaxHandler( > > > > SessionInfoDocument.type, null ); > > pipelineUtil.processToSAX( > > "internal/sessionInfo/getSessionInfo", > > null, > > xmlSaxHandler.getContentHandler() ); > > var sessionInfo = xmlSaxHandler.getObject(); > > return sessionInfo; > > } > > > > Then, my generator for internal/style/catalog is such: > > > > > > > > > > > > This really seems to work great. Has anyone had experience with doing > > this before? Does this seem like a good idea? Anything I am missing > > here? > > Seem like a reasonable approach. You can simplify things a little bit by > embeding the XMLBean in an object that implements > org.apache.excalibur.xml.sax.XMLizable, > http://svn.apache.org/viewcvs.cgi/excalibur/trunk/components/xmlutil/src/java/org/apache/excalibur/xml/sax/XMLizable.java?view=markup > The toSAX method could be implemented in terms of the XMLObject.save method. > > Both JXTG and the XModuleSource > http://wiki.apache.org/cocoon/XModuleSource are XMlizable aware, so you > don't need any specialized generator. > > Also, if you are using trunk, it might be interesting to know that Rhino > 1.6, (that is used for flowscripts) has extensive XMLBean support: > http://marc.theaimsgroup.com/?t=110009028500003&r=1&w=2. > > > The main reason for choosing XMLBeans was the ability to go back and > > forth from Java - XML easily. Boy, if this was merged with Hibernate, > > that would be something! > > They are at least discussing it: http://wiki.apache.org/xmlbeans/V2Features. > > /Daniel > This is why I ask this list! Thanks for the info. Great references. You know, if only some of this could be put into book form... Irv