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 * [EMAIL PROTECTED] 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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]