cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean-Claude Vogel" <vogel.jeancla...@gmail.com>
Subject Re: Custom DOM transformer
Date Fri, 16 Nov 2007 13:23:13 GMT
Here is the concerned extract of my sitemap :
        <map:pipeline>
            <map:generate type="stream">
                <map:parameter name="defaultContentType" value="text/xml"/>
            </map:generate>
            <map:match pattern="tentative">
                <map:transform type="testTransformer" />
                <map:serialize type="xml"/>
            </map:match>
        </map:pipeline>

Here, a part of the applicationContext.xml (Spring declaration of my
transformer) :
        <bean name="testService"
        class="
org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="maTransactionManager" />
        </property>
        <property name="target">
            <bean class="xxxx.TestService">
                <property name="maxml2ObjectsService">
                    <ref bean="maxml2ObjectsService" />
                </property>
                <property name="serviceProgramsService">
                    <ref bean="serviceProgramsService" />
                </property>
            </bean>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="test">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>

    <bean id="testTransformer"
        name="org.apache.cocoon.transformation.Transformer/testTransformer"
        scope="prototype"
        class="xxxx.TestTransformer">
        <property name="testService">
            <ref bean="testService"/>
        </property>
    </bean>

What I had in my transformer to log the XML stream (wich is effectively
received and logged by the transformer) :
        public Document transform(Document document) {

            try {
                DOMSource domSource = new DOMSource(document);
                StringWriter writer = new StringWriter();
                StreamResult result = new StreamResult(writer);
                TransformerFactory tf = TransformerFactory.newInstance();
                Transformer transformer = tf.newTransformer();
                transformer.transform(domSource, result);
                log.debug("TRANSFORMATION:" + writer.toString());
            }
            catch (TransformerConfigurationException e) {
                e.printStackTrace();
            }
            catch (TransformerException e) {
                e.printStackTrace();
            }

            return document;
        }

I use HttpClient to send the post request containing the XML stream and to
get the XML stream received (unhappily NULL) :
        HttpClient client = new HttpClient();

        StringBuffer newUrl = new StringBuffer();
        newUrl.append(url);

        PostMethod method = new PostMethod(newUrl.toString());
        method.setRequestBody(new FileInputStream(xmlFile));
        String xml = post.getResponseBodyAsString();
        System.out.println("Exported virtual XML : " + maxml); // Here the
response is NULL

Thank for your help

2007/11/16, warrell harries <warrell.harries@googlemail.com>:
>
> Hi Jean-Claude,
>
> What generator are you using in your pipeline match? Can you show us the
> sitemap? You would need to use the Request generator or another one that
> 'loads' the pipeline with the contents of the HTTP Request.
>
> Cheers
>
> On 16/11/2007, Jean-Claude Vogel <vogel.jeanclaude@gmail.com> wrote:
> >
> > Hello guys,
> >
> > I would like to write my own dom transformer. So I simply wrote the
> > following in order to get firstly an identity transformer :
> >
> > public class TestTransformer extends AbstractDOMTransformer {
> >         private Request request;
> >
> >         public void setup(SourceResolver resolver, Map objectModel,
> >                           String src, Parameters par)
> >                           throws ProcessingException, SAXException,
> > IOException {
> >             super.setup(resolver, objectModel, src, par);
> >         }
> >
> >         public Document transform(Document document) {
> >             //  When I log here I see that "document" contains what I
> > want it to contain
> >             return document;
> >         }
> > }
> >
> >
> > To test I send an HTTP post request with an XML in its body, but I my
> > HTTP request response body is desesperatly NULL.
> >
> > I tried to log what happens in the transform method and I can see in my
> > XML body sent by HTTP. The post response is ever empty.
> >
> > What's wrong in my code please ?
> >
>
>

Mime
View raw message