W3C home > Mailing lists > Public > xproc-dev@w3.org > July 2009

Calabash: Java API

From: Leif Warner <abimelech@gmail.com>
Date: Wed, 22 Jul 2009 14:32:21 -0700
Message-ID: <54d4ec0f0907221432i10e2fd62q9c51fbb63e9cca7a@mail.gmail.com>
To: XProc Dev <xproc-dev@w3.org>
You could use the interface to Calabash I made for my online processor.The
API is just something like:
PipelineRunner piperunner = new PipelineRunner();

piperunner.run(InputStream in, OutputStream out)

where "in" is the xproc document, and out will be the "results" port.

The only modification I made to WritableDocument was to pass in the
OutputStream in the constructor, rather than having System.out hard-coded
in.  I just copied that class definition, renamed it, but it still
implements the same interface, so I didn't need to re-compile Calabash for
that.

I could put it on github or email you stuff.  Its open-source so I need to
put it up, anyways.  And I'd like feedback on this, to see a standard api
evolve, hopefully to be included in Calabash at some point.

On Wed, Jul 22, 2009 at 3:32 AM, Florent Georges <fgeorges@fgeorges.org>wrote:

> 2009/7/22 Florent Georges wrote:
>
> >  So WritableDocument encapsulates the Saxon serializer and its
> > option settings.  But the only way, if I am right, to set the
> > actual destination is by giving a URI.  Why not allowing a File,
> > an OutputStream or a Writer, as in an s9api's Serializer.
>
>   FYI, I use a modified version of WritableDocument in which I
> changed the ctor from:
>
>    public WritableDocument(XProcRuntime xproc, String uri,
> Serialization serial) {
>        this.runtime = xproc;
>        this.uri = uri;
>
>        if (serial == null) {
>            this.serial = new Serialization(xproc, null);
>            this.serial.setIndent(xproc.getDebug()); // indent stdio
> by default when debugging
>        } else {
>            this.serial = serial;
>        }
>    }
>
> to:
>
>    private WritableDocument(XProcRuntime xproc, Serialization s)
>    {
>        runtime = xproc;
>        serial = s == null ? new Serialization(xproc, null) : s;
>        serializer = new Serializer();
>    }
>
>    public WritableDocument(XProcRuntime xproc, File out, Serialization s)
>    {
>        this(xproc, s);
>        serializer.setOutputFile(out);
>    }
>
>    public WritableDocument(XProcRuntime xproc, OutputStream out,
> Serialization s)
>    {
>        this(xproc, s);
>        serializer.setOutputStream(out);
>    }
>
>    public WritableDocument(XProcRuntime xproc, Writer out, Serialization s)
>    {
>        this(xproc, s);
>        serializer.setOutputWriter(out);
>    }
>
> along a few other changes: I do not instantiate the Serializer in
> write() anymore, I don't set its output stream in write() neither.
>
>  I don't feel comfortable to use a modified version of a
> Calabash class, but this way I can benefit from Calabash
> serialization options as well as using s9api services...
>
>  Regards,
>
> --
> Florent Georges
> http://www.fgeorges.org/
>
>
Received on Wednesday, 22 July 2009 21:33:09 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 22 July 2009 21:33:10 GMT