[Laszlo-dev] ?SOAPElement class implementation
keiji Ono
keiji_ono at net8.co.jp
Sun Nov 18 05:30:49 PST 2007
Hi Henry,
I am preparing a small piece of this issue.
Because the original test case was a bit special.
So i build it on Axis environment. I am going to make it in this week.
Please wait for a few days.
Thanks
Keiji Ono
Keiji_ono at net8.co.jp
Henry Minsky wrote:
>I'll try and see if there was any change to the code paths between
>4.0.3 and 4.0.5.
>
>Do have a small piece of test code that I can run to confirm that I am
>reproducing the issue? If so, can you attach that to a bug report and file
>it in JIRA? Send me an email when you do that, and I will take a look.
>
>
>On 11/5/07, keiji Ono <keiji_ono at net8.co.jp> wrote:
>
>
>> Hi,
>>
>> I found a problem of SOAP action between 3.3.3 and latest nighty build
>>(4.1.x).
>> With a same LZX application and using SOAP data I/F.
>> 3.3.3 could send data to LPS, but the nighty could not.
>> ex.
>> send data 'burabura'
>> debugging 'lzpostbody' in SOAPDataSource.java
>> on 3.3.3: <some tag>[![CDATA[burabura]]</some tag>
>> on 4.1.x: <some tag/>
>> * in effect, those data were encoded.
>>
>> SOAPDataSource.java had not any changes between them.
>> Are there some changing data interface specifications?
>> I confirmed it was OK till 4.0.3, but 4.0.5 and later were NG.
>>
>> Regards,
>> Keiji Ono
>>
>>
>> Henry Minsky wrote:
>>
>>
>>
>>On 10/30/07, keiji Ono <keiji_ono at net8.co.jp> wrote:
>>
>>
>>>I have checked Apache-Axis library. And i knew where it was implemented
>>>but at the same time
>>>i did not understand about my issue whether it was a spec or bug. Then i
>>>will ask it for Axis forum.
>>>Thank you for everything.
>>>
>>>BTW, i have been seeing OpenLaszlo source code by now, i would like to
>>>confirm and gather up my *understanding* on processing SOAP data. If
>>>this is incorrect, please correct me.
>>>
>>>Issue: procedure SOAP message data to provide to client
>>>Example data: <data tag>burabura data</data tag>
>>>Process:
>>>1. read SOAP data ( like the example data )
>>>2. disintegrate in tag and data
>>>3. the data will be converted to Flash data format
>>>4. reassemble the tag and the data
>>>5. put it out it to client by HttpServletResponse
>>>
>>>But i did not find the point of *reassemble* clearly.
>>>
>>>
>> Hello Keiji,
>>
>> I was probably the last person to touch the SOAP code, when I
>> added support for the DHTML runtime.
>>
>> In SWF, the SOAP data is converted to flash, using the old data compiler
>>which used to be used for XML data, but is no longer used for that.
>>
>> In the DHTML version of the SOAP code, the data is converted to
>> JSON format. This might be easier to understand than the swf code paths, if
>>you look at the
>> output that is sent to the client. It is a JSON string which is just a
>>combination of string, number, and arrays and objects.
>>
>>
>> It had been my intention to rewrite the SOAP server code for the SWF
>>runtime, so that
>> instead of using the old data compiler, it would instead just use the JSON
>> format that we now use for DHTML, and compile the JSON string to swf with
>>the regular "script compiler" that all the other Laszlo code goes through.
>>This would simplify
>> the code substantially on the server, as it would eliminate the two
>>duplicate
>> code paths that exist now for SWF and DHTML. Unfortunately I have not had
>> time to do that.
>>
>> Henry
>>
>>
>>
>>
>>
>>
>>
>>>Best,
>>>Keiji Ono
>>>
>>>��������� wrote:
>>>
>>>
>>>
>>>>We use "apache-axis" for this server-side job, see i.e. at
>>>>
>>>>
>>>>
>>org.openlaszlo.remote.swf.soap.encoding.SOAPDataEncoder#buildHeaders(org.apache.axis.message.SOAPHeader
>>).
>>
>>
>>>>So I guess you need to check the "axis.jar" (JavaDoc:
>>>>
>>>>
>>>>
>>"http://ws.apache.org/axis/java/apiDocs/org/apache/axis/message/package-summary.html
>>")
>>
>>
>>>>to get any further.
>>>>
>>>>- Andr���������
>>>>
>>>>
>>>>
>>>>>Hi Ben,
>>>>>
>>>>>Thank you for your reply.
>>>>>Yes, i also found your point and i was searching the implementation.
>>>>>If it did not implement in OpenLaszlo source, it must came from
>>>>>saaj.jar or other jars.
>>>>>As far as i know, this class declared as Interface class in SAAJ, so
>>>>>i wondered
>>>>>where did it implement.
>>>>>In your opinion, OpenLaszlo depend on the standard of JARs, right?
>>>>>If so, i would appreciate it if you gave me the information about
>>>>>JARs version and so on.
>>>>>
>>>>>Best,
>>>>>Keiji Ono
>>>>>
>>>>>Benjamin Shine wrote:
>>>>>
>>>>>
>>>>>
>>>>>>/
>>>>>>
>>>>>>
>>>>>/>/ 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: FWS 4 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
>>>>>/>>>>>>>>>>
>>>>>
>>>>>
>>>
>>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> hminsky at laszlosystems.com
>>
>>
More information about the Laszlo-dev
mailing list