Re: [Laszlo-dev]  SOAPElement class implementation

Benjamin Shine ben at laszlosystems.com
Thu Oct 25 18:24:15 PDT 2007


It looks to me like SOAPElement is imported from  
javax.xml.soap.SOAPElement:

$ grep SOAPElement `find . -name "SOAP*.java"`
...
./WEB-INF/lps/server/src/org/openlaszlo/remote/swf/soap/encoding/ 
SOAPDataEncoder.java:
import javax.xml.soap.SOAPElement;
...

So that implementation must come from one of the jars we ship with,  
but I don't know which one.

Is this the information you were looking for?
-ben


On Oct 25, 2007, at 6:13 PM, keiji Ono wrote:

> Hi
>
> I could make in focus on this issue.
> I found the method of .getChildElements() was rejecting all blanks
> at the head and tail of SOAPElement class.
> But as you know, SOAPElement class was declared by Interface class  
> in SAAJ.
> As the next step, i checked how SOAPElement class had implemented  
> in OpenLaszlo.
> but i could not find the point in OpenLaszlo source.
> If i could find it, i could know it whether it was bug or spec.
> Hey Server Side Men, could you give some hints for me?
>
> Best,
> Keiji Ono
>
> keiji Ono wrote:
>
>> I have been continuing to solve this issue.
>> And i look at the point of the suspicious, but i could not know it  
>> clearly.
>> At the point is in SOAPDataEncoder.java.
>> The 'issue' code is in the method of _traverseDOM().
>>
>> SOAPDataEncoder.java _traverseDOM()
>>
>> iter = el.getChildElements();
>> while(iter.hasNext()){
>> Object o = iter.next(); <---- 1
>> if( Text.class.isInstance(o) ){
>> characters(((Text)o).getValue() ); <---- 2
>> }else{
>> .
>> .
>> }
>> }
>>
>> At the point of 1, when the Object o contained a string
>> "<sometag><![CDATA[ Text Strings]]></sometag>",
>> .getValue() at the point of 2 got the string "Text Strings" and
>> set it to the method of characters(). The characters()
>> push it to client through FlashBuffer class.
>> The issue of it is the blank of the start strings has been  
>> rejected by getValue().
>>
>> I do not know whether this is the specification of getValue() of  
>> org.apache.xml.message.Text class.
>> Is not there the person knowing a lot about this?
>>
>> Keiji Ono
>>
>>> Hummm, it did not effect to the log file.
>>> Basically, i did not use multibyte data, so whichever use UTF-8  
>>> parameter in the properties file,
>>> it did not effect to it, i think.
>>>
>>> BTW, the reason why i am taking this issue, because i have a  
>>> trouble on SOAP data handling on LPS.
>>> The trouble is like this.
>>> When i sent data from a OpenLaszlo application, like ' ABC' to  
>>> SOAP server, but the return was
>>> 'ABC'. Pay attention this, LPS cut out those spaces of the data.
>>> I traced how to treat the data in LPS, so i reached  
>>> FileUtil.java. I know the data from SOAP server
>>> to LPS are correct, that mean the data has the spaces.
>>>
>>> Any advances. Thank you.
>>>
>>> Keiji Ono
>>>
>>>
>>> P T Withington wrote:
>>>
>>>> I wonder if the problem is that log4j is not configured for  
>>>> UTF8? I found this with Google:
>>>>
>>>>> Debugging can be fun with high byte characters as generally  
>>>>> logging to a console isn't going to show you the characters you  
>>>>> are expecting. If you did this:
>>>>>
>>>>> System.out.println(new String(new byte[] { -28, -72, -83},"UTF-8")
>>>>>
>>>>> Then you'd probably just see a ? rather than the Chinese  
>>>>> character that it really should be. However, you can make log4j  
>>>>> log UTF-8 messages. Just add
>>>>>
>>>>> <param name="Encoding" value="UTF-8"/>
>>>>>
>>>>> To the appender in your log4j.xml config. Or this:
>>>>>
>>>>> log4j.appender.myappender.Encoding=UTF-8
>>>>>
>>>>> To your log4j.properties file. You might still only see the  
>>>>> UTF-8 data properly if you view the log file in an editor/ 
>>>>> viewer that can view UTF-8 data (Windows notepad is ok for  
>>>>> instance).
>>>>
>>>>
>>>>
>>>>
>>>> [Java UTF���������8 international character  
>>>> support with Tomcat and Oracle, 26/03/07, Kieran's blog](http:// 
>>>> blogs.warwick.ac.uk/kieranshaw/entry/  
>>>> utf-8_internationalisation_with/)
>>>>
>>>> Also, I wonder if using the Firebug extension to Firefox might  
>>>> help. Using the Net pane, you should be able to see the content  
>>>> of the http get.
>>>>
>>>> On 2007-09-27, at 20:20 EDT, keiji Ono wrote:
>>>>
>>>>> Who dose maintenance this Java file ?
>>>>> If you give me a little tip, i can progress on it.
>>>>>
>>>>> keiji Ono wrote:
>>>>>
>>>>>> Ben,
>>>>>>
>>>>>> Thank you for your suggestion, but i tried already it on 4.0.5  
>>>>>> as a trial ,
>>>>>> but it did not work on it.
>>>>>> I know it worked till on 4.0.3. :@
>>>>>>
>>>>>> It will be good if i can give you a sample code of it , but as  
>>>>>> you know
>>>>>> it is not
>>>>>> easy to give SOAP sample.
>>>>>> And our application is now working on 3.3.3, so i would like  
>>>>>> to try on
>>>>>> 3.3.3.
>>>>>>
>>>>>> I am thinking as following steps now.
>>>>>> 1. Check it on 3.3.3
>>>>>> 2. If i find looks like bug in it, i will change it.
>>>>>> 3. Then i am going to look at 4.0.5 source.
>>>>>>
>>>>>> So could you give some advance?
>>>>>> Thank you.
>>>>>>
>>>>>> Keiji ono
>>>>>>
>>>>>> Benjamin Shine wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Keiji, I suggest you work with lps-4.0.5. It is the most  
>>>>>>> current, and
>>>>>>> we are more likely to be familiar with the code that you're  
>>>>>>> working
>>>>>>> with. See
>>>>>>> http://www.openlaszlo.org/node/383
>>>>>>> for the announcment.
>>>>>>>
>>>>>>> -ben
>>>>>>>
>>>>>>> On Sep 26, 2007, at 5:03 AM, keiji Ono wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Adding, it was the source of lps-3.3.3, and the data was not  
>>>>>>>> multibyte
>>>>>>>> character.
>>>>>>>>
>>>>>>>> Keiji Ono
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> I am checking about Input/Output data on LPS now.
>>>>>>>>> Because when i take SOAP interface on my application, the  
>>>>>>>>> getting data
>>>>>>>>> is wrong.
>>>>>>>>> Then i would like to check data where output from LPS.
>>>>>>>>> At the point of FileUtils.java, i add some code like following
>>>>>>>>> (BlockName-A).
>>>>>>>>> But it got unreadable data to write lps.log as following.
>>>>>>>>> How can i get 'readable' log on lps.log ?
>>>>>>>>>
>>>>>>>>> <checking code on FileUtils.java>
>>>>>>>>> public static int sendToStream(InputStream input,
>>>>>>>>> OutputStream output, int size)
>>>>>>>>> throws IOException {
>>>>>>>>> int c = 0;
>>>>>>>>> byte[] buffer = new byte[size];
>>>>>>>>> int b = 0;
>>>>>>>>> while(true) {
>>>>>>>>> try {
>>>>>>>>> // Until end of stream
>>>>>>>>> if ((b = input.read(buffer)) <= 0) {
>>>>>>>>> return c;
>>>>>>>>> }
>>>>>>>>> } catch (IOException e) {
>>>>>>>>> throw new StreamReadingException(e.getMessage());
>>>>>>>>> }
>>>>>>>>> c += b;
>>>>>>>>> try {
>>>>>>>>> output.write(buffer, 0, b);
>>>>>>>>>
>>>>>>>>> //=== adding from here BlockName-A
>>>>>>>>> {
>>>>>>>>> String aString = new String(buffer, "UTF-8");
>>>>>>>>> mLogger.debug( "OUTPUT: " + aString );
>>>>>>>>> }
>>>>>>>>> //=== to here
>>>>>>>>>
>>>>>>>>> <lps.log>
>>>>>>>>> OUTPUT: FWS4 x F ?  `
>>>>>>>>> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?? ?0  _m _t CSPCHD id
>>>>>>>>> AddLongResponse AddLongResult ? _m _root 
? _m N
? _t  
>>>>>>>>> _root 
?
>>>>>>>>> _t N
?  ? _root 
?
>>>>>>>>> _rootndi RL?  C?   =L?  C?   =L?;
>>>>>>>>> 0000000100001gUD5zy4000000XKonfBejSj6FIgaG0jaWHQ--    
>>>>>>>>> =?  ?
>>>>>>>>> _root 
? _finishndi R?  B?  ? _root 
?
>>>>>>>>> _rootndi RL?  C?   =L?  C?   =L?
>>>>>>>>> GHGHGH  =?  ? _root 
? _finishndi R?  B?
>>>>>>>>> _parent 
?   ?
>>>>>>>>> _parent 
? loader N? returnData R @
>>>>>>>>>
>>>>>>>>> Thanks any advance.
>>>>>>>>>
>>>>>>>>> Keiji Ono
>>>>>>>>>




More information about the Laszlo-dev mailing list