Changed the API of the publication client to take the publication and a service as a parameter.
Fixed the test cases.
git-svn-id: https://svn.apache.org/repos/asf/webservices/savan/trunk/java@537486 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/savan/publication/client/PublicationClient.java b/src/main/java/org/apache/savan/publication/client/PublicationClient.java
index 52976f0..db77841 100644
--- a/src/main/java/org/apache/savan/publication/client/PublicationClient.java
+++ b/src/main/java/org/apache/savan/publication/client/PublicationClient.java
@@ -19,7 +19,10 @@
import javax.xml.namespace.QName;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.OperationClient;
@@ -27,10 +30,12 @@
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.savan.SavanConstants;
import org.apache.savan.SavanException;
import org.apache.savan.storage.SubscriberStore;
+import org.apache.savan.util.CommonUtil;
/**
* This can be used to make the Publication Process easy.
@@ -40,24 +45,27 @@
public class PublicationClient {
public static final String TEMP_PUBLICATION_ACTION = "UUID:TempPublicationAction";
+ private ConfigurationContext configurationContext = null;
- public static void sendPublication (SOAPEnvelope publication,ConfigurationContext configurationContext, SubscriberStore store) throws SavanException {
-
- try {
- Options options = new Options ();
- sendPublication(publication,configurationContext,options,store);
-
- } catch (AxisFault e) {
- String message = "Could not send the publication";
- throw new SavanException (message,e);
- }
+ public PublicationClient (ConfigurationContext configurationContext) {
+ this.configurationContext = configurationContext;
}
- public static void sendPublication (SOAPEnvelope publication,ConfigurationContext configurationContext, Options options, SubscriberStore store) throws SavanException {
+ /**
+ * This can be used by the Publishers in the same JVM (e.g. a service deployed in the same Axis2 instance).
+ *
+ * @param publication - the XML message to be published
+ * @param service - The service to which this publication is bound to (i.e. this will be only sent to the subscribers of this service)
+ * @throws SavanException
+ */
+ public void sendPublication (OMElement publication, AxisService service) throws SavanException {
try {
ServiceClient sc = new ServiceClient (configurationContext,null);
+ Options options = new Options ();
+ sc.setOptions(options);
+ //Just a matter of getting it to the SavanOutHandler
options.setTo(new EndpointReference ("http://temp.publication.URI"));
if (options.getAction()==null)
@@ -68,6 +76,7 @@
//this will not be required when the
Parameter parameter = new Parameter ();
parameter.setName(SavanConstants.SUBSCRIBER_STORE);
+ SubscriberStore store = CommonUtil.getSubscriberStore(service);
parameter.setValue(store);
sc.getAxisService().addParameter(parameter);
@@ -75,7 +84,7 @@
sc.engageModule( new QName("savan"));
MessageContext mc = new MessageContext ();
- mc.setEnvelope(publication);
+ mc.setEnvelope(getEnvelopeFromPublication (publication));
OperationClient client = sc.createClient(ServiceClient.ANON_OUT_ONLY_OP);
client.addMessageContext(mc);
client.execute(true);
@@ -85,7 +94,14 @@
}
}
- public static void endSubscription (String subscriberID) {
+
+ private SOAPEnvelope getEnvelopeFromPublication (OMElement element) {
+ //for now we are sending SOAP 1.1
+ SOAPEnvelope envelope = OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
+ envelope.getBody().addChild(element);
+
+ return envelope;
}
+
}
diff --git a/src/main/java/org/apache/savan/util/CommonUtil.java b/src/main/java/org/apache/savan/util/CommonUtil.java
index 59c5e44..9c61277 100644
--- a/src/main/java/org/apache/savan/util/CommonUtil.java
+++ b/src/main/java/org/apache/savan/util/CommonUtil.java
@@ -29,6 +29,7 @@
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axis2.databinding.types.Duration;
import org.apache.axis2.description.AxisService;
@@ -60,14 +61,14 @@
* @param name
* @return
*/
- public static SOAPEnvelope getTestEnvelopeFromFile (String path, String name) throws IOException {
+ public static SOAPEnvelope getTestEnvelopeFromFile (String path, String name, SOAPFactory factory) throws IOException {
try {
String fullName = path + File.separator + name;
FileReader reader = new FileReader(fullName);
XMLStreamReader streamReader = XMLInputFactory.newInstance().createXMLStreamReader(
reader);
StAXSOAPModelBuilder builder = OMXMLBuilderFactory.createStAXSOAPModelBuilder(
- OMAbstractFactory.getSOAP11Factory(), streamReader);
+ factory, streamReader);
return builder.getSOAPEnvelope();
} catch (XMLStreamException e) {
throw new RuntimeException(e);
diff --git a/src/test/java/org/apache/axis2/savan/EventingExpirationTypesTest.java b/src/test/java/org/apache/axis2/savan/EventingExpirationTypesTest.java
index f25c0c7..7c1b019 100644
--- a/src/test/java/org/apache/axis2/savan/EventingExpirationTypesTest.java
+++ b/src/test/java/org/apache/axis2/savan/EventingExpirationTypesTest.java
@@ -21,6 +21,8 @@
import java.util.Date;
import javax.xml.namespace.QName;
import junit.framework.TestCase;
+
+import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
@@ -58,9 +60,9 @@
private SavanMessageContext getRenewMessage (String name) throws IOException {
File baseDir = new File("");
- String testRource = baseDir.getAbsolutePath() + File.separator + "src" + File.separator + "test" + File.separator + "resources";
+ String testRource = baseDir.getAbsolutePath() + File.separator + "src" + File.separator + "test" + File.separator + "resources";
- SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,name);
+ SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,name, OMAbstractFactory.getSOAP12Factory());
MessageContext mc = new MessageContext ();
SavanMessageContext smc = new SavanMessageContext (mc);
diff --git a/src/test/java/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java b/src/test/java/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
index 46563d5..1be93b8 100644
--- a/src/test/java/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
+++ b/src/test/java/org/apache/axis2/savan/EventingSubscripitonProcessorTest.java
@@ -16,6 +16,7 @@
package org.apache.axis2.savan;
+import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
@@ -98,7 +99,7 @@
File baseDir = new File("");
String testRource = baseDir.getAbsolutePath() + File.separator + "src" + File.separator + "test" + File.separator + "resources";
- SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-subscription.xml");
+ SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-subscription.xml", OMAbstractFactory.getSOAP12Factory());
AxisConfiguration axisConfiguration = new AxisConfiguration ();
ConfigurationContext configurationContext = new ConfigurationContext (axisConfiguration);
@@ -141,7 +142,7 @@
File baseDir = new File("");
String testRource = baseDir.getAbsolutePath() + File.separator + "src" + File.separator + "test" + File.separator + "resources";
- SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-renew-datetime.xml");
+ SOAPEnvelope envelope = CommonUtil.getTestEnvelopeFromFile(testRource,"eventing-renew-datetime.xml", OMAbstractFactory.getSOAP12Factory());
MessageContext mc = new MessageContext ();
SavanMessageContext smc = new SavanMessageContext (mc);