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 he...@apache.org on 2005/05/19 07:28:13 UTC
svn commit: r170873 - in
/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi:
Call.java InOnlyMEPClient.java InOutMEPClient.java MEPClient.java
Author: hemapani
Date: Wed May 18 22:28:13 2005
New Revision: 170873
URL: http://svn.apache.org/viewcvs?rev=170873&view=rev
Log:
fine tuning the Client API
Modified:
webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java
webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/MEPClient.java
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java?rev=170873&r1=170872&r2=170873&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/Call.java Wed May 18 22:28:13 2005
@@ -28,21 +28,16 @@
import org.apache.axis.description.GlobalDescription;
import org.apache.axis.description.OperationDescription;
import org.apache.axis.description.ServiceDescription;
-import org.apache.axis.description.TransportInDescription;
-import org.apache.axis.description.TransportOutDescription;
import org.apache.axis.engine.AxisFault;
import org.apache.axis.engine.AxisSystemImpl;
-import org.apache.axis.om.OMAbstractFactory;
import org.apache.axis.om.OMElement;
import org.apache.axis.soap.SOAPEnvelope;
-import org.apache.axis.soap.SOAPFactory;
/**
* This class is the pretty convineance class for the user without see the comlplexites of Axis2.
*/
public class Call extends InOutMEPClient {
private HashMap properties;
- private boolean isEnvelope = false;
public Call() throws AxisFault {
super(assumeServiceContext());
@@ -69,15 +64,11 @@
axisConfig = new OperationDescription(new QName(axisop));
serviceContext.getServiceConfig().addOperation(axisConfig);
}
- MessageContext msgctx = prepareTheSystem(axisConfig, toSend);
+ MessageContext msgctx = prepareTheSystem(toSend);
MessageContext responseContext = super.invokeBlocking(axisConfig, msgctx);
SOAPEnvelope resEnvelope = responseContext.getEnvelope();
- if (isEnvelope) {
- return resEnvelope;
- } else {
- return resEnvelope.getBody().getFirstElement();
- }
+ return resEnvelope.getBody().getFirstElement();
}
/**
* Invoke the nonblocking/Asynchronous call
@@ -96,46 +87,12 @@
axisConfig = new OperationDescription(new QName(axisop));
serviceContext.getServiceConfig().addOperation(axisConfig);
}
- MessageContext msgctx = prepareTheSystem(axisConfig, toSend);
+ MessageContext msgctx = prepareTheSystem(toSend);
super.invokeNonBlocking(axisConfig, msgctx, callback);
}
- /**
- * Prepare the MessageContext, this is Utility method
- * @param axisOp
- * @param toSend
- * @return
- * @throws AxisFault
- */
-
- private MessageContext prepareTheSystem(OperationDescription axisOp, OMElement toSend)
- throws AxisFault {
- ConfigurationContext syscontext = serviceContext.getEngineContext();
- //Make sure the ServiceDescription object has the OperationDescription
- serviceContext.getServiceConfig().addOperation(axisOp);
-
- TransportInDescription transportIn =
- syscontext.getEngineConfig().getTransportIn(new QName(listenertransport));
- TransportOutDescription transportOut =
- syscontext.getEngineConfig().getTransportOut(new QName(senderTransport));
-
- MessageContext msgctx = new MessageContext(null, transportIn, transportOut, syscontext);
-
- SOAPEnvelope envelope = null;
-
- if (toSend instanceof SOAPEnvelope) {
- envelope = (SOAPEnvelope) toSend;
- isEnvelope = true;
- } else {
- SOAPFactory omfac = OMAbstractFactory.getSOAP11Factory();
- envelope = omfac.getDefaultEnvelope();
- envelope.getBody().addChild(toSend);
- isEnvelope = false;
- }
- msgctx.setEnvelope(envelope);
- return msgctx;
- }
+
/**
* Assume the values for the ConfigurationContext and ServiceContext to make the NON WSDL cases simple.
@@ -146,27 +103,6 @@
EngineContextFactory efac = new EngineContextFactory();
ConfigurationContext sysContext = efac.buildClientEngineContext(null);
new ConfigurationContext(new AxisSystemImpl(new GlobalDescription()));
-
-// //Add the addressing modules
-// ModuleDescription addressingModule = new ModuleDescription();
-// addressingModule.setName(new QName("addressing"));
-// Flow inflow = new FlowImpl();
-// HandlerDescription handlerDesc = new HandlerDescription();
-// handlerDesc.setRules(new PhaseRule(PhaseMetadata.PHASE_PRE_DISPATCH));
-// handlerDesc.setHandler(new AddressingInHandler());
-// inflow.addHandler(handlerDesc);
-// addressingModule.setInFlow(inflow);
-//
-// Flow outflow = new FlowImpl();
-// handlerDesc = new HandlerDescription();
-// handlerDesc.setRules(new PhaseRule(PhaseMetadata.PHASE_PRE_DISPATCH));
-// handlerDesc.setHandler(new AddressingOutHandler());
-// outflow.addHandler(handlerDesc);
-// addressingModule.setInFlow(outflow);
-// addressingModule.setModule(new AddressingModule());
-// sysContext.getEngineConfig().addMdoule(addressingModule);
-// sysContext.getEngineConfig().getGlobal().addModule(addressingModule.getName());
-
//create new service
QName assumedServiceName = new QName("AnonnoymousService");
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java?rev=170873&r1=170872&r2=170873&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOnlyMEPClient.java Wed May 18 22:28:13 2005
@@ -17,26 +17,70 @@
*/
package org.apache.axis.clientapi;
+import javax.xml.namespace.QName;
+
import org.apache.axis.addressing.EndpointReference;
import org.apache.axis.addressing.MessageInformationHeadersCollection;
import org.apache.axis.addressing.miheaders.RelatesTo;
+import org.apache.axis.context.ConfigurationContext;
import org.apache.axis.context.MessageContext;
import org.apache.axis.context.ServiceContext;
import org.apache.axis.description.OperationDescription;
+import org.apache.axis.description.TransportInDescription;
+import org.apache.axis.engine.AxisConfiguration;
+import org.apache.axis.engine.AxisEngine;
+import org.apache.axis.engine.AxisFault;
+import org.apache.axis.soap.SOAPEnvelope;
+import org.apache.axis.transport.TransportReceiver;
+import org.apache.axis.transport.http.HTTPTransportReceiver;
+import org.apache.wsdl.WSDLConstants;
-
-public class InOnlyMEPClient extends MEPClient{
- private MessageInformationHeadersCollection messageInformationHeaders;
- /**
- * @param service
- */
+public class InOnlyMEPClient extends MEPClient {
+ protected MessageInformationHeadersCollection messageInformationHeaders;
+ protected String senderTransport;
+
+
public InOnlyMEPClient(ServiceContext service) {
- super(service);
- // TODO Auto-generated constructor stub
+ super(service,WSDLConstants.MEP_URI_IN_ONLY);
}
-
- public void send(OperationDescription axisop, final MessageContext msgctx){
-
+
+ public void send(OperationDescription axisop, final MessageContext msgctx) throws AxisFault {
+ verifyInvocation(axisop);
+ msgctx.setMessageInformationHeaders(messageInformationHeaders);
+ msgctx.setServiceContext(serviceContext);
+ ConfigurationContext syscontext = serviceContext.getEngineContext();
+ TransportInDescription transportIn =
+ syscontext.getEngineConfig().getTransportIn(new QName(senderTransport));
+ msgctx.setTransportIn(transportIn);
+
+ ConfigurationContext sysContext = serviceContext.getEngineContext();
+ AxisConfiguration registry = sysContext.getEngineConfig();
+
+ AxisEngine engine = new AxisEngine(sysContext);
+ msgctx.setOperationContext(axisop.findOperationContext(msgctx,serviceContext,false));
+
+ engine.send(msgctx);
+
+ MessageContext response =
+ new MessageContext(
+ msgctx.getSessionContext(),
+ msgctx.getTransportIn(),
+ msgctx.getTransportOut(),
+ msgctx.getSystemContext());
+ response.setProperty(
+ MessageContext.TRANSPORT_READER,
+ msgctx.getProperty(MessageContext.TRANSPORT_READER));
+ response.setServerSide(false);
+ response.setOperationContext(msgctx.getOperationContext());
+ response.setServiceContext(msgctx.getServiceContext());
+
+ //TODO Fix this we support only the HTTP Sync cases, so we hardcode this
+ TransportReceiver receiver = new HTTPTransportReceiver();
+ receiver.invoke(response, sysContext);
+ SOAPEnvelope resenvelope = response.getEnvelope();
+ if (response!= null && resenvelope.getBody().hasFault()) {
+ throw new AxisFault(resenvelope.getBody().getFault().getException());
+ }
}
/**
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java?rev=170873&r1=170872&r2=170873&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/InOutMEPClient.java Wed May 18 22:28:13 2005
@@ -65,7 +65,7 @@
protected EndpointReference to;
public InOutMEPClient(ServiceContext serviceContext) {
- super(serviceContext);
+ super(serviceContext,WSDLConstants.MEP_URI_OUT_IN);
//service context has the engine context set in to it !
callbackReceiver = new CallbackReceiver();
listenerManager = new ListenerManager(serviceContext.getEngineContext());
Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/MEPClient.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/MEPClient.java?rev=170873&r1=170872&r2=170873&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/MEPClient.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/clientapi/MEPClient.java Wed May 18 22:28:13 2005
@@ -17,23 +17,47 @@
*/
package org.apache.axis.clientapi;
+import org.apache.axis.context.MessageContext;
import org.apache.axis.context.ServiceContext;
import org.apache.axis.description.OperationDescription;
import org.apache.axis.engine.AxisFault;
+import org.apache.axis.om.OMAbstractFactory;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.soap.SOAPEnvelope;
+import org.apache.axis.soap.SOAPFactory;
/**
* This is the Super Class for all the MEPClients, All the MEPClient will extend this.
*/
public abstract class MEPClient {
protected ServiceContext serviceContext;
- public MEPClient(ServiceContext service){
+ protected final String mep;
+
+ public MEPClient(ServiceContext service,String mep){
this.serviceContext = service;
+ this.mep = mep;
}
protected void verifyInvocation(OperationDescription axisop) throws AxisFault{
if(axisop == null){
throw new AxisFault("OperationDescription can not be null");
}
+
+ if(mep.equals(axisop.getMessageExchangePattern() )){
+ throw new AxisFault("This mepClient supports only "+ mep + " And the Axis Operations suppiled supports "+ axisop.getMessageExchangePattern());
+ }
}
+
+ protected MessageContext prepareTheSystem(OMElement toSend) throws AxisFault {
+ MessageContext msgctx =
+ new MessageContext(null, null, null, serviceContext.getEngineContext());
+
+ SOAPEnvelope envelope = null;
+ SOAPFactory omfac = OMAbstractFactory.getSOAP11Factory();
+ envelope = omfac.getDefaultEnvelope();
+ envelope.getBody().addChild(toSend);
+ msgctx.setEnvelope(envelope);
+ return msgctx;
+ }
}