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 2006/10/26 11:28:31 UTC
svn commit: r467932 - in /webservices/axis2/branches/java/1_1/modules:
adb/src/org/apache/axis2/databinding/utils/
adb/src/org/apache/axis2/databinding/utils/reader/
adb/src/org/apache/axis2/rpc/client/
adb/src/org/apache/axis2/rpc/receivers/ kernel/sr...
Author: deepal
Date: Thu Oct 26 02:28:31 2006
New Revision: 467932
URL: http://svn.apache.org/viewvc?view=rev&rev=467932
Log:
fixing prc serialization problem whem elementformdefault=flase
adding invokeRobust method into RPCServiceClient to do oneway invocation
- improve null handling in RPC MR
Modified:
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Thu Oct 26 02:28:31 2006
@@ -25,7 +25,6 @@
import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
import org.apache.axiom.om.util.Base64;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;
import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl;
import org.apache.axis2.engine.ObjectSupplier;
@@ -57,7 +56,7 @@
*/
public static XMLStreamReader getPullParser(Object beanObject,
QName beanName,
- TypeTable typeTable) {
+ TypeTable typeTable, boolean qualified) {
try {
JamServiceFactory factory = JamServiceFactory.getInstance();
JamServiceParams jam_service_parms = factory.createServiceParams();
@@ -74,14 +73,7 @@
throw new AxisFault("No service class found , exception from JAM");
}
QName elemntNameSpace = null;
- if (typeTable == null) {
- MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
- if (currentMessageContext != null) {
- typeTable = currentMessageContext.
- getAxisService().getTypeTable();
- }
- }
- if (typeTable != null) {
+ if (typeTable != null && qualified) {
QName qNamefortheType = typeTable.getQNamefortheType(beanObject.getClass().getName());
elemntNameSpace = new QName(qNamefortheType.getNamespaceURI(),
"elementName");
@@ -196,7 +188,7 @@
object.add(value);
}
}
- return new ADBXMLStreamReaderImpl(beanName, object.toArray(), null);
+ return new ADBXMLStreamReaderImpl(beanName, object.toArray(), null, typeTable,qualified);
} catch (java.io.IOException e) {
throw new RuntimeException(e);
} catch (java.beans.IntrospectionException e) {
@@ -219,7 +211,7 @@
className = className.substring(className.lastIndexOf('.') + 1,
className.length());
}
- return getPullParser(beanObject, new QName(className), null);
+ return getPullParser(beanObject, new QName(className), null, false);
}
public static Object deserialize(Class beanClass,
@@ -557,7 +549,11 @@
}
}
- public static OMElement getOMElement(QName opName, Object [] args, QName partName) {
+ public static OMElement getOMElement(QName opName,
+ Object [] args,
+ QName partName,
+ boolean qualifed,
+ TypeTable typeTable) {
ArrayList objects;
objects = new ArrayList();
int argCount = 0;
@@ -636,7 +632,7 @@
argCount ++;
}
- XMLStreamReader xr = new ADBXMLStreamReaderImpl(opName, objects.toArray(), null);
+ XMLStreamReader xr = new ADBXMLStreamReaderImpl(opName, objects.toArray(), null, typeTable, qualifed);
StreamWrapper parser = new StreamWrapper(xr);
StAXOMBuilder stAXOMBuilder =
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java Thu Oct 26 02:28:31 2006
@@ -5,6 +5,7 @@
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.databinding.ADBBean;
import org.apache.axis2.databinding.utils.BeanUtil;
+import org.apache.ws.java2wsdl.utils.TypeTable;
import javax.activation.DataHandler;
import javax.xml.namespace.NamespaceContext;
@@ -43,23 +44,22 @@
* 4. QName name/String name - ADBBean value
* 5. QName name/String name - Java bean
* 5. QName name/String name - Datahandler
- *
+ * <p/>
* As for the attributes, these are the possible combinations in the
* array
* 1. String name/QName name - String value
* 2. OMAttributeKey - OMAttribute
- *
+ * <p/>
* Note that certain array methods have been deliberately removed to avoid
* complications. The generated code will take the trouble to lay the
* elements of the array in the correct order
- *
+ * <p/>
* <p/>
* Hence there will be a parser impl that knows how to handle these types, and
* this parent parser will always delegate these tasks to the child pullparasers
* in effect this is one huge state machine that has only a few states and delegates
* things down to the child parsers whenever possible
* <p/>
- *
*/
public class ADBXMLStreamReaderImpl implements ADBXMLStreamReader {
@@ -88,6 +88,12 @@
//initialized at zero
private int currentPropertyIndex = 0;
+ //To keep element formdefault qualified or not
+ private boolean qualified = false;
+
+ //to keep the current types which are in AxisService
+ private TypeTable typeTable = null;
+
/*
* we need to pass in a namespace context since when delegated, we've no
@@ -102,8 +108,16 @@
this.properties = properties;
this.elementQName = adbBeansQName;
this.attributes = attributes;
+ }
-
+ public ADBXMLStreamReaderImpl(QName adbBeansQName,
+ Object[] properties,
+ Object[] attributes,
+ TypeTable typeTable,
+ boolean qualified) {
+ this(adbBeansQName, properties, attributes);
+ this.qualified = qualified;
+ this.typeTable = typeTable;
}
/**
@@ -133,26 +147,25 @@
}
/**
- *
* @param key
* @throws IllegalArgumentException
*/
public Object getProperty(String key) throws IllegalArgumentException {
if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
- if (OPTIMIZATION_ENABLED.equals(key)){
+ if (OPTIMIZATION_ENABLED.equals(key)) {
return Boolean.TRUE;
- }else{
+ } else {
return null;
}
- }else if (state==TEXT_STATE){
- if (IS_BINARY.equals(key)){
+ } else if (state == TEXT_STATE) {
+ if (IS_BINARY.equals(key)) {
return Boolean.FALSE;
- }else{
+ } else {
return null;
}
- }else if (state==DELEGATED_STATE){
+ } else if (state == DELEGATED_STATE) {
return childReader.getProperty(key);
- }else{
+ } else {
return null;
}
@@ -191,14 +204,14 @@
*/
public boolean hasNext() throws XMLStreamException {
if (state == DELEGATED_STATE) {
- if (childReader.isDone()){
+ if (childReader.isDone()) {
//the child reader is done. We shouldn't be getting the
//hasnext result from the child pullparser then
return true;
- }else{
+ } else {
return childReader.hasNext();
}
- } else {
+ } else {
return (state == START_ELEMENT_STATE
|| state == TEXT_STATE);
@@ -279,7 +292,7 @@
public int getAttributeCount() {
return (state == DELEGATED_STATE) ?
childReader.getAttributeCount() :
- ((attributes != null)&&(state==START_ELEMENT_STATE) ? attributes.length / 2 : 0);
+ ((attributes != null) && (state == START_ELEMENT_STATE) ? attributes.length / 2 : 0);
}
/**
@@ -288,7 +301,7 @@
public QName getAttributeName(int i) {
if (state == DELEGATED_STATE) {
return childReader.getAttributeName(i);
- } else if (state==START_ELEMENT_STATE) {
+ } else if (state == START_ELEMENT_STATE) {
if (attributes == null) {
return null;
} else {
@@ -310,7 +323,7 @@
}
OMAttribute att = (OMAttribute) omAttribObj;
return att.getQName();
- } else if (attribPointer instanceof OMAttribKey){
+ } else if (attribPointer instanceof OMAttribKey) {
Object omAttribObj = attributes[(i * 2) + 1];
if (omAttribObj == null ||
!(omAttribObj instanceof OMAttribute)) {
@@ -331,7 +344,7 @@
}
}
}
- }else{
+ } else {
throw new IllegalStateException();//as per the api contract
}
@@ -340,14 +353,14 @@
public String getAttributeNamespace(int i) {
if (state == DELEGATED_STATE) {
return childReader.getAttributeNamespace(i);
- } else if (state==START_ELEMENT_STATE) {
+ } else if (state == START_ELEMENT_STATE) {
QName name = getAttributeName(i);
if (name == null) {
return null;
} else {
return name.getNamespaceURI();
}
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -355,14 +368,14 @@
public String getAttributeLocalName(int i) {
if (state == DELEGATED_STATE) {
return childReader.getAttributeLocalName(i);
- } else if (state==START_ELEMENT_STATE) {
+ } else if (state == START_ELEMENT_STATE) {
QName name = getAttributeName(i);
if (name == null) {
return null;
} else {
return name.getLocalPart();
}
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -370,14 +383,14 @@
public String getAttributePrefix(int i) {
if (state == DELEGATED_STATE) {
return childReader.getAttributePrefix(i);
- } else if (state==START_ELEMENT_STATE) {
+ } else if (state == START_ELEMENT_STATE) {
QName name = getAttributeName(i);
if (name == null) {
return null;
} else {
return name.getPrefix();
}
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -389,7 +402,7 @@
public String getAttributeValue(int i) {
if (state == DELEGATED_STATE) {
return childReader.getAttributeValue(i);
- } else if (state ==START_ELEMENT_STATE){
+ } else if (state == START_ELEMENT_STATE) {
if (attributes == null) {
return null;
} else {
@@ -412,7 +425,7 @@
}
OMAttribute att = (OMAttribute) omAttribObj;
return att.getAttributeValue();
- } else if (attribPointer instanceof OMAttribKey){
+ } else if (attribPointer instanceof OMAttribKey) {
if (omAttribObj == null ||
!(omAttribObj instanceof OMAttribute)) {
// wrong object set to have in the attrib array -
@@ -432,7 +445,7 @@
}
}
}
- }else{
+ } else {
throw new IllegalStateException();
}
@@ -464,7 +477,7 @@
public String getNamespacePrefix(int i) {
if (state == DELEGATED_STATE) {
return childReader.getNamespacePrefix(i);
- } else if (state!=TEXT_STATE) {
+ } else if (state != TEXT_STATE) {
//order the prefixes
String[] prefixes = makePrefixArray();
if ((i >= prefixes.length) || (i < 0)) {
@@ -473,7 +486,7 @@
return prefixes[i];
}
- }else{
+ } else {
throw new IllegalStateException();
}
@@ -493,11 +506,11 @@
public String getNamespaceURI(int i) {
if (state == DELEGATED_STATE) {
return childReader.getNamespaceURI(i);
- } else if (state!=TEXT_STATE) {
+ } else if (state != TEXT_STATE) {
String namespacePrefix = getNamespacePrefix(i);
return namespacePrefix == null ? null :
(String) declaredNamespaceMap.get(namespacePrefix);
- }else{
+ } else {
throw new IllegalStateException();
}
@@ -531,9 +544,9 @@
public String getText() {
if (state == DELEGATED_STATE) {
return childReader.getText();
- } else if (state==TEXT_STATE) {
- return (String)properties[currentPropertyIndex-1];
- }else{
+ } else if (state == TEXT_STATE) {
+ return (String) properties[currentPropertyIndex - 1];
+ } else {
throw new IllegalStateException();
}
}
@@ -541,10 +554,10 @@
public char[] getTextCharacters() {
if (state == DELEGATED_STATE) {
return childReader.getTextCharacters();
- }else if (state==TEXT_STATE) {
- return properties[currentPropertyIndex-1]==null?new char[0]:
- ((String)properties[currentPropertyIndex-1]).toCharArray();
- }else{
+ } else if (state == TEXT_STATE) {
+ return properties[currentPropertyIndex - 1] == null ? new char[0] :
+ ((String) properties[currentPropertyIndex - 1]).toCharArray();
+ } else {
throw new IllegalStateException();
}
}
@@ -553,10 +566,10 @@
throws XMLStreamException {
if (state == DELEGATED_STATE) {
return childReader.getTextCharacters(i, chars, i1, i2);
- }else if (state==TEXT_STATE) {
+ } else if (state == TEXT_STATE) {
//todo - implement this
return 0;
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -564,9 +577,9 @@
public int getTextStart() {
if (state == DELEGATED_STATE) {
return childReader.getTextStart();
- } else if (state==TEXT_STATE) {
+ } else if (state == TEXT_STATE) {
return 0;//assume text always starts at 0
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -574,9 +587,9 @@
public int getTextLength() {
if (state == DELEGATED_STATE) {
return childReader.getTextLength();
- } else if (state==TEXT_STATE) {
+ } else if (state == TEXT_STATE) {
return 0;//assume text always starts at 0
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -606,7 +619,7 @@
*/
public Location getLocation() {
//return a default location
- return new Location(){
+ return new Location() {
public int getLineNumber() {
return 0;
}
@@ -632,9 +645,9 @@
public QName getName() {
if (state == DELEGATED_STATE) {
return childReader.getName();
- } else if (state!=TEXT_STATE) {
+ } else if (state != TEXT_STATE) {
return elementQName;
- }else{
+ } else {
throw new IllegalStateException();
}
@@ -643,9 +656,9 @@
public String getLocalName() {
if (state == DELEGATED_STATE) {
return childReader.getLocalName();
- } else if (state!=TEXT_STATE) {
+ } else if (state != TEXT_STATE) {
return elementQName.getLocalPart();
- }else{
+ } else {
throw new IllegalStateException();
}
}
@@ -662,9 +675,9 @@
public String getNamespaceURI() {
if (state == DELEGATED_STATE) {
return childReader.getNamespaceURI();
- } else if (state==TEXT_STATE) {
+ } else if (state == TEXT_STATE) {
return null;
- }else{
+ } else {
return elementQName.getNamespaceURI();
}
}
@@ -672,11 +685,11 @@
public String getPrefix() {
if (state == DELEGATED_STATE) {
return childReader.getPrefix();
- } else if (state==TEXT_STATE) {
+ } else if (state == TEXT_STATE) {
return null;
- }else{
+ } else {
String prefix = elementQName.getPrefix();
- return "".equals(prefix) ? null : prefix ;
+ return "".equals(prefix) ? null : prefix;
}
}
@@ -771,7 +784,7 @@
/**
* By far this should be the most important method in this class
- * this method changes the state of the parser
+ * this method changes the state of the parser
*/
public int next() throws XMLStreamException {
int returnEvent = -1; //invalid state is the default state
@@ -836,7 +849,7 @@
//move to the next property depending on the current property
//index
Object propPointer = properties[currentPropertyIndex];
- QName propertyQName=null;
+ QName propertyQName = null;
boolean textFound = false;
if (propPointer == null) {
throw new XMLStreamException("property key cannot be null!");
@@ -844,9 +857,9 @@
// propPointer being a String has a special case
// that is it can be a the special constant ELEMENT_TEXT that
// says this text event
- if (ELEMENT_TEXT.equals(propPointer)){
+ if (ELEMENT_TEXT.equals(propPointer)) {
textFound = true;
- }else{
+ } else {
propertyQName = new QName((String) propPointer);
}
} else if (propPointer instanceof QName) {
@@ -864,14 +877,14 @@
//ok! we got the key. Now look at the value
Object propertyValue = properties[currentPropertyIndex + 1];
//cater for the special case now
- if (textFound){
+ if (textFound) {
//no delegation here - make the parser null and immediately
//return with the event characters
childReader = null;
state = TEXT_STATE;
currentPropertyIndex = currentPropertyIndex + 2;
return CHARACTERS;
- }else if (propertyValue == null) {
+ } else if (propertyValue == null) {
//if the value is null we delegate the work to a nullable
// parser
childReader = new NullXMLStreamReader(propertyQName);
@@ -881,7 +894,7 @@
//we've a special pullparser for a datahandler!
} else if (propertyValue instanceof DataHandler) {
childReader = new ADBDataHandlerStreamReader(propertyQName,
- (DataHandler)propertyValue);
+ (DataHandler) propertyValue);
childReader.addNamespaceContext(this.namespaceContext);
childReader.init();
@@ -889,20 +902,20 @@
//strings are handled by the NameValuePairStreamReader
childReader =
new NameValuePairStreamReader(propertyQName,
- (String)propertyValue);
+ (String) propertyValue);
childReader.addNamespaceContext(this.namespaceContext);
childReader.init();
} else if (propertyValue instanceof String[]) {
//string[] are handled by the NameValueArrayStreamReader
//if the array is empty - skip it
- if (((String[])propertyValue).length==0){
+ if (((String[]) propertyValue).length == 0) {
//advance the index
currentPropertyIndex = currentPropertyIndex + 2;
return processProperties();
- }else{
+ } else {
childReader =
new NameValueArrayStreamReader(propertyQName,
- (String[])propertyValue);
+ (String[]) propertyValue);
childReader.addNamespaceContext(this.namespaceContext);
childReader.init();
}
@@ -934,7 +947,7 @@
//the thing as a bean and try generating events from it
childReader = new WrappingXMLStreamReader
(BeanUtil.getPullParser(propertyValue,
- propertyQName, null));
+ propertyQName, typeTable, qualified));
//we cannot register the namespace context here
}
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java Thu Oct 26 02:28:31 2006
@@ -63,7 +63,7 @@
* @return Response OMElement
*/
public OMElement invokeBlocking(QName opName, Object [] args) throws AxisFault {
- OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+ OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
if (notNullService) {
return super.sendReceive(opName, omElement);
}
@@ -87,7 +87,7 @@
*/
public Object[] invokeBlocking(QName opName, Object [] args, Object [] returnTypes) throws AxisFault {
- OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+ OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
OMElement response;
if (notNullService) {
response = super.sendReceive(opName, omElement);
@@ -112,7 +112,7 @@
Object [] args,
Callback callback)
throws AxisFault {
- OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+ OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
//call the underline implementation
if (notNullService) {
super.sendReceiveNonBlocking(opName, omElement, callback);
@@ -121,5 +121,14 @@
}
}
-
+ public void invokeRobust(QName opName,
+ Object [] args) throws AxisFault {
+ OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
+ //call the underline implementation
+ if (notNullService) {
+ super.sendRobust(opName, omElement);
+ } else {
+ super.sendRobust(omElement);
+ }
+ }
}
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java Thu Oct 26 02:28:31 2006
@@ -17,7 +17,6 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.util.Base64;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
@@ -31,7 +30,6 @@
import org.apache.commons.logging.LogFactory;
import javax.xml.namespace.QName;
-import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -120,47 +118,8 @@
service.getSchematargetNamespacePrefix());
SOAPEnvelope envelope = fac.getDefaultEnvelope();
OMElement bodyContent = null;
-
- if (resObject instanceof Object[]) {
- QName resName = new QName(service.getSchematargetNamespace(),
- method.getName() + "Response",
- service.getSchematargetNamespacePrefix());
- OMElement bodyChild = RPCUtil.getResponseElement(resName,
- (Object[]) resObject, service.isElementFormDefault());
- envelope.getBody().addChild(bodyChild);
- } else {
- if (resObject.getClass().isArray()) {
- int length = Array.getLength(resObject);
- Object objArray [];
- if (resObject instanceof byte[]) {
- objArray = new Object[1];
- objArray[0] = Base64.encode((byte[]) resObject);
- } else {
- objArray = new Object[length];
- for (int i = 0; i < length; i++) {
- objArray[i] = Array.get(resObject, i);
- }
- }
- QName resName = new QName(service.getSchematargetNamespace(),
- method.getName() + "Response",
- service.getSchematargetNamespacePrefix());
- OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
- objArray, service.isElementFormDefault());
- envelope.getBody().addChild(bodyChild);
- } else {
- if (service.isElementFormDefault()) {
- RPCUtil.processResponse(fac, resObject, bodyContent, ns,
- envelope, method, service.isElementFormDefault(),
- service.getTypeTable());
- } else {
- RPCUtil.processResponse(fac, resObject, bodyContent, ns,
- envelope, method, service.isElementFormDefault(),
- null);
- }
-
- }
- }
- outMessage.setEnvelope(envelope);
+ RPCUtil.processResponse(resObject, service,
+ method, envelope, fac, ns, bodyContent, outMessage);
} catch (InvocationTargetException e) {
String msg = null;
if (e.getCause() != null) {
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Thu Oct 26 02:28:31 2006
@@ -22,7 +22,6 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.util.Base64;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
@@ -36,7 +35,6 @@
import org.apache.commons.logging.LogFactory;
import javax.xml.namespace.QName;
-import java.lang.reflect.Array;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -135,46 +133,9 @@
service.getSchematargetNamespacePrefix());
SOAPEnvelope envelope = fac.getDefaultEnvelope();
OMElement bodyContent = null;
-
- if (resObject instanceof Object[]) {
- QName resName = new QName(service.getSchematargetNamespace(),
- method.getName() + "Response",
- service.getSchematargetNamespacePrefix());
- OMElement bodyChild = RPCUtil.getResponseElement(resName,
- (Object[]) resObject, service.isElementFormDefault());
- envelope.getBody().addChild(bodyChild);
- } else {
- if (resObject.getClass().isArray()) {
- int length = Array.getLength(resObject);
- Object objArray [];
- if (resObject instanceof byte[]) {
- objArray = new Object[1];
- objArray[0] = Base64.encode((byte[]) resObject);
- } else {
- objArray = new Object[length];
- for (int i = 0; i < length; i++) {
- objArray[i] = Array.get(resObject, i);
- }
- }
-
- QName resName = new QName(service.getSchematargetNamespace(),
- method.getName() + "Response",
- service.getSchematargetNamespacePrefix());
- OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
- objArray, service.isElementFormDefault());
- envelope.getBody().addChild(bodyChild);
- } else {
- if (service.isElementFormDefault()) {
- RPCUtil.processResponse(fac, resObject, bodyContent, ns,
- envelope, method, service.isElementFormDefault(),
- service.getTypeTable());
- } else {
- RPCUtil.processResponse(fac, resObject, bodyContent, ns,
- envelope, method, service.isElementFormDefault(),
- null);
- }
- }
- }
+ RPCUtil.processResponse(resObject, service,
+ method, envelope, fac, ns,
+ bodyContent, outMessage);
outMessage.setEnvelope(envelope);
} catch (InvocationTargetException e) {
String msg = null;
Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java Thu Oct 26 02:28:31 2006
@@ -5,17 +5,22 @@
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.axiom.om.util.Base64;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;
import org.apache.axis2.databinding.utils.BeanUtil;
+import org.apache.axis2.databinding.utils.reader.NullXMLStreamReader;
+import org.apache.axis2.description.AxisService;
import org.apache.axis2.engine.ObjectSupplier;
import org.apache.axis2.util.StreamWrapper;
import org.apache.ws.java2wsdl.utils.TypeTable;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import java.lang.reflect.Array;
import java.lang.reflect.Method;
/*
* Copyright 2004,2005 The Apache Software Foundation.
@@ -83,7 +88,7 @@
returnWrapper = new QName(RETURN_WRAPPER);
}
XMLStreamReader xr = BeanUtil.getPullParser(resObject,
- returnWrapper, typeTable);
+ returnWrapper, typeTable, qualified);
StAXOMBuilder stAXOMBuilder =
OMXMLBuilderFactory.createStAXOMBuilder(
OMAbstractFactory.getOMFactory(), new StreamWrapper(xr));
@@ -104,24 +109,90 @@
return BeanUtil.deserialize(methodElement, parameters, objectSupplier);
}
- public static OMElement getResponseElement(QName resname, Object [] objs, boolean qualified) {
+ public static OMElement getResponseElement(QName resname, Object [] objs,
+ boolean qualified, TypeTable typeTable) {
if (qualified) {
return BeanUtil.getOMElement(resname, objs,
- new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()));
+ new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);
} else {
return BeanUtil.getOMElement(resname, objs,
- new QName(RETURN_WRAPPER));
+ new QName(RETURN_WRAPPER), qualified, typeTable);
}
}
- public static OMElement getResponseElementForArray(QName resname, Object [] objs, boolean qualified) {
+ public static OMElement getResponseElementForArray(QName resname, Object [] objs,
+ boolean qualified, TypeTable typeTable) {
if (qualified) {
return BeanUtil.getOMElement(resname, objs,
- new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()));
+ new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);
} else {
return BeanUtil.getOMElement(resname, objs,
- new QName(RETURN_WRAPPER));
+ new QName(RETURN_WRAPPER), qualified, typeTable);
}
+ }
+
+ public static void processResponse(Object resObject,
+ AxisService service,
+ Method method,
+ SOAPEnvelope envelope,
+ SOAPFactory fac,
+ OMNamespace ns,
+ OMElement bodyContent,
+ MessageContext outMessage
+ ) throws Exception {
+ if (resObject == null) {
+ QName resName = new QName(service.getSchematargetNamespace(),
+ method.getName() + "Response",
+ service.getSchematargetNamespacePrefix());
+ XMLStreamReader xr = new NullXMLStreamReader(resName);
+ StreamWrapper parser = new StreamWrapper(xr);
+ StAXOMBuilder stAXOMBuilder =
+ OMXMLBuilderFactory.createStAXOMBuilder(
+ OMAbstractFactory.getSOAP11Factory(), parser);
+ OMElement bodyChild = stAXOMBuilder.getDocumentElement();
+ envelope.getBody().addChild(bodyChild);
+ } else {
+ if (resObject instanceof Object[]) {
+ QName resName = new QName(service.getSchematargetNamespace(),
+ method.getName() + "Response",
+ service.getSchematargetNamespacePrefix());
+ OMElement bodyChild = RPCUtil.getResponseElement(resName,
+ (Object[]) resObject, service.isElementFormDefault(), service.getTypeTable());
+ envelope.getBody().addChild(bodyChild);
+ } else {
+ if (resObject.getClass().isArray()) {
+ int length = Array.getLength(resObject);
+ Object objArray [];
+ if (resObject instanceof byte[]) {
+ objArray = new Object[1];
+ objArray[0] = Base64.encode((byte[]) resObject);
+ } else {
+ objArray = new Object[length];
+ for (int i = 0; i < length; i++) {
+ objArray[i] = Array.get(resObject, i);
+ }
+ }
+
+ QName resName = new QName(service.getSchematargetNamespace(),
+ method.getName() + "Response",
+ service.getSchematargetNamespacePrefix());
+ OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
+ objArray, service.isElementFormDefault(), service.getTypeTable());
+ envelope.getBody().addChild(bodyChild);
+ } else {
+ if (service.isElementFormDefault()) {
+ RPCUtil.processResponse(fac, resObject, bodyContent, ns,
+ envelope, method, service.isElementFormDefault(),
+ service.getTypeTable());
+ } else {
+ RPCUtil.processResponse(fac, resObject, bodyContent, ns,
+ envelope, method, service.isElementFormDefault(),
+ null);
+ }
+ }
+ }
+ }
+ outMessage.setEnvelope(envelope);
}
}
Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Thu Oct 26 02:28:31 2006
@@ -268,7 +268,7 @@
* response message.
*/
Boolean useCustomListener = (Boolean) options.getProperty(Constants.Configuration.USE_CUSTOM_LISTENER);
- if (useCustomListener==null || useCustomListener.booleanValue()==false) {
+ if (useCustomListener==null || !useCustomListener.booleanValue()) {
EndpointReference replyToFromTransport = mc.getConfigurationContext().getListenerManager().
getEPRforService(sc.getAxisService().getName(), axisOp.getName().getLocalPart(), mc
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org