[Laszlo-user] question about javarpc and dataset
Ruben Reusser
rr at headwire.com
Thu Jul 19 12:43:52 PDT 2007
This is my lzx file and the java class - with the HashMap example I
actually get 2 rows in the datagrid, however no data shows up.
I initially had the return of String test() as the dataset
Ruben
// sample trying to return an XML string
public String test() {
return "<quotes>"+
"<quote id=\"200\" text=\"quote 10\" firstname=\"Ruben\"
lastname=\"Reusser\" plan=\"1500\" type=\"Self\" date=\"1/1/2007\"/>"+
"<quote id=\"199\" text=\"quote 1\" firstname=\"Carla\"
lastname=\"Poulin\" plan=\"1500\" type=\"Family\" date=\"1/2/2007\"/>"+
"</quotes>";
}
public static Hashtable getProperties()
{
return System.getProperties();
}
// sample trying to return a HashMap
public HashMap test()
{
HashMap map = new HashMap();
map.put("id", "200");
map.put("text", "quote 10");
map.put("firstname", "Ruben");
map.put("lastname", "Reusser");
map.put("plan", "1500");
map.put("type", "Self");
map.put("date", "1/1/1907");
HashMap quoteMap = new HashMap();
quoteMap.put("quote1", map);
map.put("id", "201");
map.put("text", "quote 10");
map.put("firstname", "Ruben");
map.put("lastname", "Reusser");
map.put("plan", "1500");
map.put("type", "Self");
map.put("date", "1/1/1907");
quoteMap.put("quote2", map);
HashMap returnMap = new HashMap();
returnMap.put("quotes", quoteMap);
return returnMap;
}
<canvas width="800" height="600">
<dataset name="quoteData"/>
<security>
<allow>
<pattern>^examples\.ConstructExample</pattern>
</allow>
</security>
<!-- See $LPS_HOME/WEB-INF/classes/ConstructExample.java for java
source. -->
<javarpc name="ce" scope="session" autoload="true"
remoteclassname="examples.ConstructExample">
<handler name="onerror" args="err">
Debug.write("----------");
Debug.write("onerror:", err)
</handler>
<handler name="onload">
Debug.write("----------");
Debug.write("constructed with", this.createargs);
Debug.write(this.proxy);
</handler>
<remotecall name="test" funcname="test" dataobject="quoteData">
<handler name="ondata" args="value">
Debug.write('result is:');
Debug.inspect(value);
Debug.inspect(quoteData);
</handler>
</remotecall>
</javarpc>
<button x="10" y="10" onclick="ce.test.invoke();">
</button>
<grid x="10" y="40" bgcolor="0xffffff" datapath="quoteData:/*"
width="400" height="400">
<gridtext editable="false" datapath="@date"> Date
</gridtext>
<gridtext editable="false" datapath="@id"> ID </gridtext>
<gridtext editable="false" datapath="@firstname"> First
Name </gridtext>
<gridtext editable="false" datapath="@lastname"> Last
Name </gridtext>
<gridtext editable="false" datapath="@plan"> Plan
</gridtext>
<gridtext editable="false" datapath="@type"> Rated for
</gridtext>
</grid>
</canvas>
Henry Minsky wrote:
> Can you send a small example of what your code looks like ?
>
> There is an example in the source distribution in
> test/rpc/javarpc/serverenv.lzx, which accesses a server side call to
> system environment info test.xmlrpc.SystemProp
>
> <canvas debug="true" width="800" >
>
> <!-- <debug x="370" width="400" height="300" /> -->
>
> <alert name="errormsg"/>
>
> <simplelayout spacing="10"/>
>
> <dataset name="envDset" />
>
> <list name="env" width="250" height="200">
> <textlistitem name="ti" datapath="envDset:/*"
> text="$path{'name()'}">
> <method event="onselect">
> canvas.display.setText(datapath.xpathQuery('text()'))
> </method>
> </textlistitem>
> </list>
>
> <text name="display" selectable="true" width="350"
> multiline="true" bgcolor="0xd0d0d0" />
>
> <security>
> <allow>
> <pattern>^org\.openlaszlo\.test\.xmlrpc\.SystemProp$</pattern>
> </allow>
> </security>
>
> <javarpc name="systemprop" scope="none"
> remoteclassname=" org.openlaszlo.test.xmlrpc.SystemProp">
>
> <method event="onload">
> Debug.write('onload invoke');
> this.getProperties.invoke();
> </method>
>
> <method event="onerror" args="msg">
> errormsg.setAttribute('text', 'error: ' + msg)
> errormsg.open()
> </method>
>
> <remotecall name="getProperties" funcname="getProperties"
> dataobject="$once{envDset}">
> <method event="ondata" args="d">
> Debug.write('data:', d);
> </method>
> </remotecall>
>
> </javarpc>
>
>
>
> Java Code:
>
> package org.openlaszlo.test.xmlrpc;
>
> import org.apache.xmlrpc.*;
> import java.util.*;
>
> public class SystemProp
> {
> public static Hashtable getProperties()
> {
> return System.getProperties();
> }
>
> public static void main(String argv[])
> {
> WebServer ws = new WebServer(8181);
> SystemProp se = new SystemProp();
> ws.addHandler("localservice", se);
> ws.start();
> }
> }
>
>
> On 7/19/07, *Ruben Reusser* <rr at headwire.com <mailto:rr at headwire.com>>
> wrote:
>
> hi
>
> I am new thew openlaszlo and figured I do a little test program using
> JavaRPC and the 4.0.2 release. I am trying to populate a dataset
> (list)
> from a value returned from my java class but seem to fail.
> I can call the java class and get a return value (String) that is an
> XML. However, I am not sure if that is the way I am supposed to do
> it or
> not. When I look at the dataset it's empty. Does anyone have an
> example
> program that does that?
> I checked the mailing list and the forum but I am unable to find a
> working example (I can find a couple of people asking the same
> question).
>
> Thanks
>
> Ruben
>
>
>
>
> --
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com <mailto:hminsky at laszlosystems.com>
>
More information about the Laszlo-user
mailing list