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 2007/06/12 21:55:30 UTC
svn commit: r546616 - in /webservices/axis2/trunk/java/modules:
adb/src/org/apache/axis2/databinding/utils/
adb/src/org/apache/axis2/rpc/receivers/
integration/test-resources/ComplexDataTypes/
integration/test/org/tempuri/complex/data/ integration/test...
Author: deepal
Date: Tue Jun 12 12:55:28 2007
New Revision: 546616
URL: http://svn.apache.org/viewvc?view=rev&rev=546616
Log:
- fixing issues in beanutil
- Fixed fault handling when we invoke the blocking invocation using two channel.
Modified:
webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
webservices/axis2/trunk/java/modules/integration/test-resources/ComplexDataTypes/ComplexDataTypes.wsdl
webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/Person.java
webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfArrayOfstring.java
webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfNullableOfdecimal.java
webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfshort.java
webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfstring.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPSender.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Tue Jun 12 12:55:28 2007
@@ -31,8 +31,6 @@
import org.apache.axis2.engine.ObjectSupplier;
import org.apache.axis2.util.StreamWrapper;
import org.apache.axis2.util.Loader;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.codehaus.jam.JClass;
import org.codehaus.jam.JProperty;
import org.codehaus.jam.JamClassIterator;
@@ -61,7 +59,6 @@
private static int nsCount = 1;
- private static final Log log = LogFactory.getLog(BeanUtil.class);
/**
* To Serilize Bean object this method is used, this will create an object array using given
@@ -150,8 +147,15 @@
continue;
}
if (SimpleTypeMapper.isSimpleType(ptype)) {
- Object value = propDesc.getReadMethod().invoke(beanObject,
+ Method readMethod = propDesc.getReadMethod();
+ Object value;
+ if(readMethod!=null){
+ value = readMethod.invoke(beanObject,
null);
+ } else {
+ throw new AxisFault("can not find read method for : " + propDesc.getName());
+ }
+
if (elemntNameSpace != null) {
object.add(new QName(elemntNameSpace.getNamespaceURI(),
propDesc.getName(), elemntNameSpace.getPrefix()));
@@ -162,8 +166,15 @@
object.add(value == null ? null : SimpleTypeMapper.getStringValue(value));
} else if (ptype.isArray()) {
if (SimpleTypeMapper.isSimpleType(ptype.getComponentType())) {
- Object value = propDesc.getReadMethod().invoke(beanObject,
- null);
+
+ Method readMethod = propDesc.getReadMethod();
+ Object value;
+ if(readMethod!=null){
+ value = readMethod.invoke(beanObject,
+ null);
+ } else {
+ throw new AxisFault("can not find read method for : " + propDesc.getName());
+ }
if (value != null) {
int i1 = Array.getLength(value);
for (int j = 0; j < i1; j++) {
@@ -329,7 +340,7 @@
throw AxisFault.makeFault(ce);
}
}
-
+
if (beanClass.isArray()) {
ArrayList valueList = new ArrayList();
Class arrayClassType = beanClass.getComponentType();
@@ -363,15 +374,14 @@
PropertyDescriptor proprty = propDescs[i];
properties.put(proprty.getName(), proprty);
}
- boolean tuched = false;
Iterator elements = beanElement.getChildren();
+ if (beanObj == null) {
+ beanObj = objectSupplier.getObject(beanClass);
+ }
while (elements.hasNext()) {
// the beanClass could be an abstract one.
// so create an instance only if there are elements, in
// which case a concrete subclass is available to instantiate.
- if (beanObj == null) {
- beanObj = objectSupplier.getObject(beanClass);
- }
OMElement parts;
Object objValue = elements.next();
if (objValue instanceof OMElement) {
@@ -405,14 +415,9 @@
if (writeMethod != null) {
writeMethod.invoke(beanObj, parms);
}
- tuched = true;
}
}
- if (tuched) {
- return beanObj;
- } else {
- return null;
- }
+ return beanObj;
}
} catch (IllegalAccessException e) {
throw new AxisFault("IllegalAccessException : " + e);
@@ -609,8 +614,12 @@
helper, true, objectSupplier);
valueList.add(o);
}
- retObjs[count] = ConverterUtil.convertToArray(arrayClassType,
- valueList);
+ if(valueList.get(0)==null){
+ retObjs[count] = null;
+ } else {
+ retObjs[count] = ConverterUtil.convertToArray(arrayClassType,
+ valueList);
+ }
if (!done) {
return omElement;
}
Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Tue Jun 12 12:55:28 2007
@@ -739,7 +739,7 @@
for (int i = 0; i < listSize; i++) {
Object o = objectList.get(i);
if (o != null) {
- Array.set(returnArray, i, convertToDateTime(o.toString()));
+ Array.set(returnArray, i, o);
}
}
} else {
Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Tue Jun 12 12:55:28 2007
@@ -151,6 +151,8 @@
throw (AxisFault)cause;
}
throw new AxisFault(msg, e);
+ } catch(RuntimeException e) {
+ throw new AxisFault(e.getMessage(), e);
} catch (Exception e) {
String msg = "Exception occurred while trying to invoke service method " +
method.getName();
Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java Tue Jun 12 12:55:28 2007
@@ -147,9 +147,23 @@
) throws Exception {
QName elementQName = outMessage.getAxisMessage().getElementQName();
if (resObject == null) {
+ QName resName;
+ if (service.isElementFormDefault()) {
+ resName = new QName(service.getSchematargetNamespace(),
+ RETURN_WRAPPER,
+ service.getSchemaTargetNamespacePrefix());
+ } else {
+ resName = new QName(RETURN_WRAPPER);
+ }
+ XMLStreamReader xr = new NullXMLStreamReader(resName);
+ StreamWrapper parser = new StreamWrapper(xr);
+ StAXOMBuilder stAXOMBuilder =
+ OMXMLBuilderFactory.createStAXOMBuilder(
+ OMAbstractFactory.getSOAP11Factory(), parser);
ns = fac.createOMNamespace(service.getSchematargetNamespace(),
- service.getSchemaTargetNamespacePrefix());
+ service.getSchemaTargetNamespacePrefix());
OMElement bodyChild = fac.createOMElement(method.getName() + "Response", ns);
+ bodyChild.addChild(stAXOMBuilder.getDocumentElement());
envelope.getBody().addChild(bodyChild);
} else {
if (resObject instanceof Object[]) {
Modified: webservices/axis2/trunk/java/modules/integration/test-resources/ComplexDataTypes/ComplexDataTypes.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test-resources/ComplexDataTypes/ComplexDataTypes.wsdl?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test-resources/ComplexDataTypes/ComplexDataTypes.wsdl (original)
+++ webservices/axis2/trunk/java/modules/integration/test-resources/ComplexDataTypes/ComplexDataTypes.wsdl Tue Jun 12 12:55:28 2007
@@ -20,7 +20,7 @@
<xs:element name="ArrayOfshort" type="ax22:ArrayOfshort"/>
<xs:complexType name="ArrayOfshort">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="short"
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="_short"
nillable="true" type="xs:short"/>
</xs:sequence>
</xs:complexType>
Modified: webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/Person.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/Person.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/Person.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/Person.java Tue Jun 12 12:55:28 2007
@@ -53,7 +53,7 @@
* @return possible object is
* {@link Boolean }
*/
- public Boolean isMale() {
+ public Boolean getMale() {
return male;
}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfArrayOfstring.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfArrayOfstring.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfArrayOfstring.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfArrayOfstring.java Tue Jun 12 12:55:28 2007
@@ -11,4 +11,8 @@
return this.arrayOfstring;
}
+
+ public void setArrayOfstring(ArrayOfstring[] arrayOfstring) {
+ this.arrayOfstring = arrayOfstring;
+ }
}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfNullableOfdecimal.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfNullableOfdecimal.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfNullableOfdecimal.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfNullableOfdecimal.java Tue Jun 12 12:55:28 2007
@@ -13,4 +13,7 @@
return this.decimal;
}
+ public void setDecimal(BigDecimal[] decimal) {
+ this.decimal = decimal;
+ }
}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfshort.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfshort.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfshort.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfshort.java Tue Jun 12 12:55:28 2007
@@ -4,11 +4,14 @@
protected Short[] _short;
- public Short[] getShort() {
+ public Short[] get_short() {
if (_short == null) {
_short = new Short[0];
}
return this._short;
}
+ public void set_short(Short[] _short) {
+ this._short = _short;
+ }
}
Modified: webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfstring.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfstring.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfstring.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/tempuri/complex/data/arrays/ArrayOfstring.java Tue Jun 12 12:55:28 2007
@@ -11,4 +11,8 @@
return this.string;
}
+
+ public void setString(String[] string) {
+ this.string = string;
+ }
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Tue Jun 12 12:55:28 2007
@@ -18,7 +18,6 @@
import org.apache.axiom.om.util.UUIDGenerator;
import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFault;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
@@ -290,11 +289,11 @@
// process the result of the invocation
if (internalCallback.envelope != null) {
// The call ended normally, so there is nothing to do
- } else {
+ } else {
if (internalCallback.error instanceof AxisFault) {
- throw (AxisFault) internalCallback.error;
+ createFaultMesasgeConext(mc);
} else if (internalCallback.error != null) {
- throw AxisFault.makeFault(internalCallback.error);
+ createFaultMesasgeConext(mc);
} else if (! internalCallback.isComplete()) {
throw new AxisFault(Messages.getMessage("responseTimeOut"));
} else {
@@ -304,6 +303,54 @@
}
}
+ private void createFaultMesasgeConext(MessageContext mc) throws AxisFault {
+ MessageContext faultMessageContext =
+ mc.getConfigurationContext().createMessageContext();
+
+ // This is a hack - Needs to change
+// responseMessageContext.setOptions(options);
+
+ faultMessageContext.setServerSide(false);
+ faultMessageContext.setMessageID(mc.getMessageID());
+ addMessageContext(faultMessageContext);
+ faultMessageContext.setServiceContext(mc.getServiceContext());
+ faultMessageContext.setAxisMessage(
+ axisOp.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE));
+ faultMessageContext.setDoingREST(mc.isDoingREST());
+
+ faultMessageContext.setProperty(MessageContext.TRANSPORT_IN, mc
+ .getProperty(MessageContext.TRANSPORT_IN));
+ faultMessageContext.setTransportIn(mc.getTransportIn());
+ faultMessageContext.setTransportOut(mc.getTransportOut());
+
+ // Options object reused above so soapAction needs to be removed so
+ // that soapAction+wsa:Action on response don't conflict
+ faultMessageContext.setSoapAction(null);
+
+ if (faultMessageContext.getEnvelope() == null) {
+ SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(faultMessageContext);
+ if (resenvelope != null) {
+ faultMessageContext.setEnvelope(resenvelope);
+ } else {
+ throw new AxisFault(Messages
+ .getMessage("blockingInvocationExpectsResponse"));
+ }
+ }
+ SOAPEnvelope resenvelope = faultMessageContext.getEnvelope();
+ if (resenvelope != null) {
+ AxisEngine.receive(faultMessageContext);
+ if (faultMessageContext.getReplyTo() != null) {
+ sc.setTargetEPR(faultMessageContext.getReplyTo());
+ }
+ if (resenvelope.getBody().hasFault()||faultMessageContext.isProcessingFault()) {
+ if (options.isExceptionToBeThrownOnSOAPFault()) {
+ // does the SOAPFault has a detail element for Excpetion
+ throw Utils.getInboundFaultFromMessageContext(faultMessageContext);
+ }
+ }
+ }
+ }
+
/**
* @param msgctx
* @return Returns MessageContext.
@@ -379,7 +426,7 @@
if (responseMessageContext.getReplyTo() != null) {
sc.setTargetEPR(responseMessageContext.getReplyTo());
}
- if (resenvelope.getBody().hasFault()||responseMessageContext.isProcessingFault()) {
+ if (resenvelope.getBody().hasFault()||responseMessageContext.isProcessingFault()) {
if (options.isExceptionToBeThrownOnSOAPFault()) {
// does the SOAPFault has a detail element for Excpetion
throw Utils.getInboundFaultFromMessageContext(responseMessageContext);
@@ -440,6 +487,7 @@
private Exception error;
+
public void onComplete(AsyncResult result) {
if (log.isDebugEnabled()) {
log.debug("Entry: OutInAxisOperationClient$SyncCallBack::onComplete");
@@ -473,6 +521,7 @@
log.debug("Entry: OutInAxisOperationClient$SyncCallBack::onError, " + e);
}
error = e;
+ setComplete(true);
if (log.isDebugEnabled()) {
log.debug("Exit: OutInAxisOperationClient$SyncCallBack::onError");
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Tue Jun 12 12:55:28 2007
@@ -20,7 +20,9 @@
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.axis2.client.async.Callback;
+import org.apache.axis2.client.async.AsyncResult;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPSender.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPSender.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPSender.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPSender.java Tue Jun 12 12:55:28 2007
@@ -281,6 +281,14 @@
processResponse(method, msgContext);
}
+ Object isTransportNonBlocking = msgContext.getProperty(
+ MessageContext.TRANSPORT_NON_BLOCKING);
+ if (isTransportNonBlocking != null &&
+ ((Boolean) isTransportNonBlocking).booleanValue()) {
+ throw new AxisFault(Messages.getMessage("transportError",
+ String.valueOf(method.getStatusCode()),
+ method.getStatusText()));
+ }
} else {
throw new AxisFault(Messages.getMessage("transportError",
String.valueOf(method.getStatusCode()),
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java?view=diff&rev=546616&r1=546615&r2=546616
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/SimpleHTTPServer.java Tue Jun 12 12:55:28 2007
@@ -283,7 +283,7 @@
}
}
if (embedded != null) {
- String endpointRefernce = "http://" + ip + ":" + embedded.getPort() ;
+ String endpointRefernce = "http://" + ipAddress + ":" + embedded.getPort() ;
if(configurationContext.getServiceContextPath().startsWith("/")){
endpointRefernce = endpointRefernce +
configurationContext.getServiceContextPath() + "/" + serviceName;
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org