You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2005/11/01 11:27:24 UTC
svn commit: r330016 - in /webservices/axis2/trunk/java/modules:
codegen/src/org/apache/axis2/rpc/receivers/
codegen/src/org/apache/axis2/util/ integration/test/org/apache/axis2/rpc/
Author: deepal
Date: Tue Nov 1 02:27:08 2005
New Revision: 330016
URL: http://svn.apache.org/viewcvs?rev=330016&view=rev
Log:
Improved RPCMessageReceiver to handle arrays properly .
Added:
webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/Company.java
Modified:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/SimpleTypeMapper.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java
webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/SimpleTypeMapper.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/SimpleTypeMapper.java?rev=330016&r1=330015&r2=330016&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/SimpleTypeMapper.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/rpc/receivers/SimpleTypeMapper.java Tue Nov 1 02:27:08 2005
@@ -19,6 +19,7 @@
import org.apache.axis2.om.OMElement;
+import javax.xml.namespace.QName;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -94,7 +95,17 @@
}
}
- public static ArrayList getArrayList(OMElement element){
+ public static ArrayList getArrayList(OMElement element, String localName){
+ Iterator childitr = element.getChildrenWithName(new QName(localName));
+ ArrayList list = new ArrayList();
+ while (childitr.hasNext()) {
+ Object o = childitr.next();
+ list.add(o);
+ }
+ return list;
+ }
+
+ public static ArrayList getArrayList(OMElement element){
Iterator childitr = element.getChildren();
ArrayList list = new ArrayList();
while (childitr.hasNext()) {
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java?rev=330016&r1=330015&r2=330016&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/util/BeanSerializerUtil.java Tue Nov 1 02:27:08 2005
@@ -62,6 +62,10 @@
Object value = propDesc.getReadMethod().invoke(beanObject,null);
objetc.add(propDesc.getName());
objetc.add(value.toString());
+ } else if(SimpleTypeMapper.isArrayList(ptype)){
+ objetc.add(new QName(propDesc.getName()));
+ Object value = propDesc.getReadMethod().invoke(beanObject,null);
+ objetc.add(((ArrayList) value).toArray());
} else {
objetc.add(new QName(propDesc.getName()));
Object value = propDesc.getReadMethod().invoke(beanObject,null);
@@ -108,10 +112,19 @@
Class parameters = prty.getPropertyType();
if (prty.equals("class"))
continue;
- Object partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);
- if (partObj == null) {
+
+ Object partObj;
+ if(SimpleTypeMapper.isSimpleType(parameters)){
+ partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);
+ } else if(SimpleTypeMapper.isArrayList(parameters)){
+ partObj = SimpleTypeMapper.getArrayList((OMElement)parts.getParent(),prty.getName());
+ } else {
partObj = deserialize(parameters, parts);
}
+// Object partObj = SimpleTypeMapper.getSimpleTypeObject(parameters, parts);
+// if (partObj == null) {
+// partObj = deserialize(parameters, parts);
+// }
Object [] parms = new Object[]{partObj};
prty.getWriteMethod().invoke(beanObj,parms);
}
@@ -233,6 +246,9 @@
//have to check the instnceof
MultirefHelper helper = new MultirefHelper((OMElement)response.getParent());
boolean hasRef = false;
+ //to support array . if the paramter type is array , then all the omelemnts with that paramtre name
+ // has to get and add to the list
+ Class classType = null;
while (parts.hasNext() && count < length) {
Object objValue = parts.next();
OMElement omElement;
@@ -241,8 +257,7 @@
} else {
continue;
}
-
- Class classType = (Class)javaTypes[count];
+ classType = (Class)javaTypes[count];
//handling refs
OMAttribute omatribute = MultirefHelper.processRefAtt(omElement);
String ref=null;
Added: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/Company.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/Company.java?rev=330016&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/Company.java (added)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/Company.java Tue Nov 1 02:27:08 2005
@@ -0,0 +1,43 @@
+package org.apache.axis2.rpc;
+
+import java.util.ArrayList;
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* @author : Deepal Jayasinghe (deepal@apache.org)
+*
+*/
+
+public class Company {
+
+ private ArrayList persons;
+ private String name;
+
+ public ArrayList getPersons() {
+ return persons;
+ }
+
+ public void setPersons(ArrayList persons) {
+ this.persons = persons;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java?rev=330016&r1=330015&r2=330016&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java Tue Nov 1 02:27:08 2005
@@ -20,6 +20,7 @@
import junit.framework.TestCase;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.databinding.utils.ADBPullParser;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceContext;
@@ -48,10 +49,7 @@
import javax.xml.stream.XMLStreamReader;
import java.io.ByteArrayInputStream;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
+import java.util.*;
public class RPCCallTest extends TestCase {
@@ -280,6 +278,55 @@
args.add("1");
OMElement response = call.invokeBlocking(operationName, args.toArray());
assertEquals(Byte.parseByte(response.getFirstElement().getText()), 1);
+ call.close();
+ }
+
+ public void testCompany() throws AxisFault {
+ configureSystem("echoCompany");
+ RPCCall call =
+ new RPCCall("target/test-resources/intregrationRepo");
+
+ call.setTo(targetEPR);
+ call.setTransportInfo(Constants.TRANSPORT_HTTP,
+ Constants.TRANSPORT_HTTP,
+ false);
+
+ Company com = new Company();
+ com.setName("MyCompany");
+
+ ArrayList ps = new ArrayList();
+
+ Person p1 = new Person();
+ p1.setAge(10);
+ p1.setName("P1");
+ ps.add(p1);
+
+ Person p2 = new Person();
+ p2.setAge(15);
+ p2.setName("P2");
+ ps.add(p2);
+
+ Person p3 = new Person();
+ p3.setAge(20);
+ p3.setName("P3");
+ ps.add(p3);
+
+ com.setPersons(ps);
+
+// List list = new ArrayList();
+// list.add(new QName(com.getName()));
+// list.add(com);
+// list.add(new QName("Persons"));
+// list.add(ps.toArray());
+//
+// XMLStreamReader pullParser = ADBPullParser.createPullParser(new QName("UdaEka"), list.toArray(), null);
+// OMElement documentElement = new StAXOMBuilder(pullParser).getDocumentElement();
+// System.out.println("documentElement = " + documentElement);
+
+
+ ArrayList args = new ArrayList();
+ args.add(com);
+ OMElement response = call.invokeBlocking(operationName, args.toArray());
call.close();
}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java?rev=330016&r1=330015&r2=330016&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCServiceClass.java Tue Nov 1 02:27:08 2005
@@ -145,6 +145,19 @@
public Employee echoEmployee(Employee em){
System.out.println("vale: " + em.toString());
- return em;
+ return em;
+ }
+
+
+ public Company echoCompany(Company com) throws AxisFault {
+ ArrayList pss = com.getPersons();
+ ArrayList tems= new ArrayList();
+ for (int i = 0; i < pss.size(); i++) {
+ OMElement omElement = (OMElement) pss.get(i);
+ Person p =(Person)BeanSerializerUtil.deserialize(Person.class,omElement);
+ tems.add(p);
+ }
+ com.setPersons(tems);
+ return com;
}
}