Instead of debugging my personal project could someone just state or post the changes that need to be made to the HelloWorldJSONRPC sample so that an object can be sent to the back end instead of a primative?
Willis C. White III Software Engineer, CIO Lab IBM Certified IT Specialist Code Warrior Home office 845-331-5134, Cell 845-853-3827 "This quote was intentionally left blank " EM:[email protected] NM:Willis White/Poughkeepsie/IBM From: Willis C White/Poughkeepsie/IBM@IBMUS To: [email protected] Date: 10/18/2011 03:21 PM Subject: Re: can HelloWorldJSONRPC be modified to send objects? I still have the problem. Fix one thing these two line where wrong info.Firstname = document.getElementById("Firstname").value; info.Lastname = document.getElementById("Lastname").value; should be FirstName and LastName (not Firstname and Lastname) are the constructors I have in my earlier post, wrong? Willis C. White III Software Engineer, CIO Lab IBM Certified IT Specialist Code Warrior Home office 845-331-5134, Cell 845-853-3827 "This quote was intentionally left blank " EM:[email protected] NM:Willis White/Poughkeepsie/IBM From: Luciano Resende <[email protected]> To: [email protected] Date: 10/18/2011 01:34 PM Subject: Re: can HelloWorldJSONRPC be modified to send objects? On Tue, Oct 18, 2011 at 5:50 AM, Willis C White <[email protected]> wrote: > > I am still getting the same error. > > I used the code you sent me. > function sendAndGetInfo(){ > try{ > var person = new Object(); > person.Firstname = document.getElementById("Firstname").value; > person.Lastname = document.getElementById("Lastname").value; > person.Description = document.getElementById("Description").value; > person.Latitude = document.getElementById("Latitude").value; > person.Longatude = document.getElementById("Longatude").value; > json_data = JSON.stringify(person); > > console.log(person); > > HelloWorldService.setPersonInfo(person, handleInfoResponse); > > }catch(e){ > console.dir(e); > } > } > > function handleInfoResponse(result) { > console.log(result); > } > > > this is what firebug says is being posting > {"id": 4, "method": "Service.setPersonInfo", "params": [{"Firstname": "willis", "Lastname": "white", "Description": "sdfsdfds", "Latitude": "23", "Longatude": "2455"}]} > > > > this is the error I am getting > > {"error":{"msg":"argument type mismatch","trace":"java.lang.IllegalArgumentException: argument type mismatch\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)\r\n\tat java.lang.reflect.Method.invoke(Method.java:599)\r\n\tat org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationInvoker.invoke(JavaImplementationInvoker.java:156)\r\n\tat org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleJSONRPCMethodInvocation(JSONRPCServiceServlet.java:261)\r\n\tat org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.handleServiceRequest(JSONRPCServiceServlet.java:164)\r\n\tat org.apache.tuscany.sca.binding.jsonrpc.provider.JSONRPCServiceServlet.service(JSONRPCServiceServlet.java:97)\r\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:831)\r\n\tat org.apache.tuscany.sca.host.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:107)\r\n\tat org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:94)\r\n\tat com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:852)\r\n\tat com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:917)\r\n\tat com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:924) > > > > > this is the beginning of the data class. I have tried this with and without constructors and with and with out default values for the private members. > > package TOdata; > > public class person { > private String FirstName = ""; > private String LastName = ""; > private String Longatude = ""; > private String Latitude = ""; > private Integer ID = 0; > private String Description = ""; > > > public person() { > super(); > } > > public person(String firstName, String lastName, String longatude, > String latitude, String description) { > super(); > FirstName = firstName; > LastName = lastName; > Longatude = longatude; > Latitude = latitude; > Description = description; > } > > .... > > > > This is my interface class. > > package helloworldjsonrpc; > > import TOdata.person; > > public interface HelloWorldService { > String getGreetings(String name); > > person setPersonInfo(person info); > } > Willis C. White III > Software Engineer, CIO Lab > IBM Certified IT Specialist > Code Warrior > EM:[email protected] > NM:Willis White/Poughkeepsie/IBM > > > > > From: Luciano Resende <[email protected]> > To: [email protected] > Date: 10/18/2011 01:13 AM > Subject: Re: can HelloWorldJSONRPC be modified to send objects? > ________________________________ > > > On Mon, Oct 17, 2011 at 10:19 AM, Willis C White <[email protected]> wrote: > > function sendAndGetInfo(){ > > try{ > > var info = new Object(); > > info.Firstname = document.getElementById("Firstname").value; > > info.Lastname = document.getElementById("Lastname").value; > > info.Description = document.getElementById("Description").value; > > info.Latitude = document.getElementById("Latitude").value; > > info.Longatude = document.getElementById("Longatude").value; > > json_data = JSON.stringify(info); > > > > console.log(json_data); > > > > HelloWorldService.setPersonInfo(json_data, handleInfoResponse); > > > > }catch(e){ > > console.dir(e); > > } > > } > > You could try : > > function sendAndGetInfo(){ > try{ > var person = new Object(); > person.firstName = document.getElementById("Firstname").value; > person.lastName = document.getElementById("Lastname").value; > person.description = > document.getElementById("Description").value; > person.latitude = document.getElementById("Latitude").value; > person.longitude = document.getElementById("Longatude").value; > > service.someOperation(person, handleInfoResponse); > > }catch(e){ > console.dir(e); > } > } > > > This should work, assuming your service have a "someOperation" > method that accepts a "Person" parameter that contains setters for > firstName, lastName, description, latitude and longitude. > > > -- Two things : a) Case of the properties person.firstName versus person.Firstname, it should be firstName b) Your Person class should be a valid bean : default constructors, getters/setters for every property -- Luciano Resende http://people.apache.org/~lresende http://twitter.com/lresende1975 http://lresende.blogspot.com/
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
