[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlrpc-user
Subject:    Re: Read larger text content using axiom
From:       Andreas Veithen <andreas.veithen () gmail ! com>
Date:       2011-10-31 11:29:58
Message-ID: CADx4_uWA+f-=jzkYm8D4fpi8z5LRGt+sRfKf5L7DSwzjk7iCNQ () mail ! gmail ! com
[Download RAW message or body]

SYNAPSE-809 is about a bug in getTextPayload. Since that method is
designed to load the content of an element into a String object, the
correct solution is to use OMElement#getText() because it does exactly
that.

However, loading a CSV file into a String before passing it to Smooks
is not a smart solution because Smooks is able read from a stream.
Therefore, getTextAsStream is a better solution, assuming that it is
used _instead of_ getTextPayload (and not inside getTextPayload).

Andreas

On Mon, Oct 31, 2011 at 06:29, Jasintha Dasanayaka <jasinthad@gmail.com> wrote:
>  Hi Andreas
>
>  Here you mention that better solution is to use
> ElementHelper#getTextAsStream method but I saw in the synapse
> jira(SYNAPSE-809) you  had made a comment on that
> "ElementHelper#getTextAsStream is useless here." I am little bit confusing
> about this could you please explain this
>
> /Jasintha
>
> On Thu, Oct 27, 2011 at 2:17 AM, Andreas Veithen <andreas.veithen@gmail.com>
> wrote:
>>
>> Jasintha,
>>
>> That method assumes that the object model was produced by a coalescing
>> parser, which is not the case here. It should use OMElement#getText()
>> instead of OMText#getText(). However, that defeats the purpose of the
>> PlainTextBuilder/WrappedTextNodeOMDataSourceFromReader stuff because
>> it would read the entire CSV file into memory (Given the method
>> signature of PayloadHelper#getTextPayload, it has no other choice).
>> The better solution is to use ElementHelper#getTextAsStream from the
>> Axiom API because that method enables streaming.
>>
>> Andreas
>>
>> On Wed, Oct 26, 2011 at 06:55, Jasintha Dasanayaka <jasinthad@gmail.com>
>> wrote:
>> >  Hi Andreas
>> >
>> > We are using smooks meditor in ESB to convert csv file to xml  but we
>> > couldn't convert the whole file into xml it's only convert 4KB size of
>> > data
>> > .We identified that other part of the massage has lost  within the
>> > synapse
>> > class called "PayloadHelper.java" method name is
>> > "getTextPayload(SOAPEnvelope envelope)" that method uses above way to
>> > get
>> > axiom child
>> >
>> > you can find this code in synapse trunk   class "PayloadHelper.java"
>> > line
>> > number 199
>> >
>> > Thanks & Regards
>> > /Jasintha
>> >
>> > On Tue, Oct 25, 2011 at 11:58 PM, Andreas Veithen
>> > <andreas.veithen@gmail.com> wrote:
>> >>
>> >> Jasintha,
>> >>
>> >> The sample code doesn't really show what you are trying to achieve.
>> >> Obviously you wouldn't use Axiom to read the content of a file into a
>> >> String, so what is the actual use case?
>> >>
>> >> Andreas
>> >>
>> >> On Tue, Oct 25, 2011 at 06:48, Jasintha Dasanayaka
>> >> <jasinthad@gmail.com>
>> >> wrote:
>> >> >  Hi Andreas
>> >> >
>> >> >  According to you Answer in issue[1] I have modified the method as
>> >> > follows
>> >> > is this the correct way to do this If not could you please suggest a
>> >> > correct
>> >> > way
>> >> >
>> >> >
>> >> >
>> >> > private static String readFile(String file) throws IOException,
>> >> > XMLStreamException {
>> >> >
>> >> >         FileInputStream fin = new FileInputStream(file);
>> >> >         OMFactory factory = OMAbstractFactory.getOMFactory();
>> >> >         String charSetEnc =
>> >> > BuilderUtil.getCharSetEncoding("text/plain");
>> >> >         QName wrapperQName = BaseConstants.DEFAULT_TEXT_WRAPPER;
>> >> >         Reader reader;
>> >> >         try {
>> >> >             reader = new InputStreamReader(fin, charSetEnc);
>> >> >         } catch (UnsupportedEncodingException ex) {
>> >> >             throw new AxisFault("Unsupported encoding: " +
>> >> > charSetEnc,
>> >> > ex);
>> >> >         }
>> >> >         OMElement om =  new OMSourcedElementImpl(wrapperQName,
>> >> > factory,
>> >> >                 new
>> >> > WrappedTextNodeOMDataSourceFromReader(wrapperQName,
>> >> > reader));
>> >> >         om.serialize(System.out);
>> >> >
>> >> >        /*  before modify
>> >> >        OMNode textNode = om.getFirstOMChild();
>> >> >         OMText text = (OMText) textNode;
>> >> >         return text.getText();
>> >> >       */
>> >> >
>> >> >         StringBuffer buffer = new StringBuffer();
>> >> >         Iterator<OMNode> iterator = om.getChildren();
>> >> >         while(iterator.hasNext()){
>> >> >             OMText text = (OMText) iterator.next();
>> >> >             buffer.append(text.getText());
>> >> >         }
>> >> >
>> >> >         return buffer.toString();
>> >> >
>> >> >     }
>> >> >
>> >> >
>> >> >  Thanks & Regards
>> >> >  /Jasintha
>> >> >
>> >> > [1]-https://issues.apache.org/jira/browse/AXIOM-395
>> >> >
>> >> > --
>> >> > Thanks & Regards
>> >> >
>> >> > Jasintha Dasanayake
>> >> > Software Engineer.
>> >> >
>> >> > WSO2 Inc,|http://wso2.com
>> >> > lean . enterprise . middleware
>> >> >
>> >> > mobile +94 772 916 596 ,
>> >> >
>> >> >
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>> >> For additional commands, e-mail: dev-help@ws.apache.org
>> >>
>> >
>> >
>> >
>> > --
>> > Thanks & Regards
>> >
>> > Jasintha Dasanayake
>> > Software Engineer.
>> >
>> > WSO2 Inc,|http://wso2.com
>> > lean . enterprise . middleware
>> >
>> > mobile +94 772 916 596 ,
>> >
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
>> For additional commands, e-mail: dev-help@ws.apache.org
>>
>
>
>
> --
> Thanks & Regards
>
> Jasintha Dasanayake
> Software Engineer.
>
> WSO2 Inc,|http://wso2.com
> lean . enterprise . middleware
>
> mobile +94 772 916 596 ,
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic