Ok, figured this out: don't use copy, use processPipelineTo and use the xmodule as the target... So far so good, except I'm not seeing the result in the request attribute after I've written it.
I might note that if this works we've sort of got the capabliity for dynamically composing pipelines in flowscript: run whatever pipeline you want to write whatever data into memory, later run a regular pileline to aggregate this in memory data with it's normal output.... > > > Vadim Gritsenko <[EMAIL PROTECTED]> writes: > > > > > Hunsberger, Peter wrote: > > > > >Is > > >there any existing in-memory writable source available for > > reuse? Any > > >hints on how to do this? > > > > > > > Try: > > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25210 > > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25517 > > > Thanks, that seems to be half the picture, but I think I'm > still missing > something: can I call a Cocoon pipeline using xmodule? I'm > getting the > error: > > "Cannot set XMLSerializer outputstream" > > Which would seem to indicate a problem with the output > stream, but since I've tried using the request-attr stream > from the samples and got the same error I assume it's > something to do with the input side of the equation? > > The sitemap fragment for the input data is straightforward enough: > > <map:match pattern="*/_validate/**"> > <map:generate src="cocoon:/{/1}/requestdata"/> > <map:transform src="stylesheets/resolve_request.xsl"/> > <map:transform > src="cocoon:/{1}/validationTemplate/{2}"/> > <map:transform type="CTcheck"/> > <map:serialize type="xml"/> > </map:match> > > The flowscript looks like: > > var sourceURI = "xmodule:cocoon:run/_validate/"+collection; > var destinationURI = "xmodule:request-attr:validate"; > > var resolver = null; > var source = null; > var destination = null; > try { > resolver = cocoon.getComponent( > Packages.org.apache.cocoon.environment.SourceResolver.ROLE ); > source = resolver.resolveURI( sourceURI ); > destination = resolver.resolveURI( destinationURI ); > return Packages.org.apache.excalibur.source.SourceUtil.copy( > source, destination ); > } finally { > if ( source != null ) > resolver.release( source ); > if (destination != null) > resolver.release( destination ); > cocoon.releaseComponent( resolver ); > } > > Where "collection" is a variable previously set that tells me > what collection of metadata I'm dealing with. > > Is this just a case of using the wrong protocol (If so what > would it be)? Do I perhaps need a version of Cocoon from CVS > and not the 2.1.3 release? > > One interesting thing to note is that the error is reported > as occurring at the "cocoon.releaseComponent( resolver);" > line of the flow script... > > > > > > >
