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);