You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2005/09/15 19:35:23 UTC

svn commit: r289283 - in /webservices/axis2/trunk/java/modules/core: src/org/apache/axis2/context/ test/org/apache/axis2/context/

Author: chamikara
Date: Thu Sep 15 10:34:02 2005
New Revision: 289283

URL: http://svn.apache.org/viewcvs?rev=289283&view=rev
Log:
A new test case was added to check the Context Hierarchy serialization-deserialization functionality.
Also did some corrections in the Context classes.

Added:
    webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/context/ContextSerializationTest.java
Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java?rev=289283&r1=289282&r2=289283&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java Thu Sep 15 10:34:02 2005
@@ -27,7 +27,11 @@
 
 import javax.xml.namespace.QName;
 import java.io.File;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 /**
@@ -76,7 +80,7 @@
         serviceContextMap.remove(name);
     }
 
-    /**
+    
     public void init(AxisConfiguration axisConfiguration) throws AxisFault {
     	this.axisConfiguration = axisConfiguration;
 
@@ -114,19 +118,6 @@
     	threadPool = new ThreadPool ();
     }
 
-    public ConfigurationContext(AxisConfiguration registry) {
-        super(null);
-        this.axisConfiguration = registry;
-        //serviceContextMap = new HashMap();
-        moduleContextMap = new HashMap();
-        sessionContextMap = new HashMap();
-
-    }
-
-    public synchronized void removeService(QName name) {
-        serviceContextMap.remove(name);
-    }
-
     /**
      */
     public AxisConfiguration getAxisConfiguration() {
@@ -296,7 +287,4 @@
         return "".equals(string) || string == null;
     }
 
-    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
-        this.axisConfiguration = axisConfiguration;
-    }
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java?rev=289283&r1=289282&r2=289283&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/MessageContext.java Thu Sep 15 10:34:02 2005
@@ -195,11 +195,22 @@
             serviceGroupDescription = axisConfiguration.getServiceGroup(serviceGroupDescId);
         if (serviceDescName != null)
             serviceDescription = axisConfiguration.getService(serviceDescName.getLocalPart());
-        if (serviceDescription != null)
+        if (operationDescName != null)
             operationDescription = serviceDescription.getOperation(operationDescName);
     }
 
     private void writeObject(ObjectOutputStream out) throws IOException {
+    	if (transportIn != null)
+            transportInName = transportIn.getName();
+        if (transportOut != null)
+            transportOutname = transportOut.getName();
+        if (serviceGroupDescription != null)
+            serviceGroupDescId = serviceGroupDescription.getServiceGroupName();
+        if (serviceDescription != null)
+            serviceDescName = serviceDescription.getName();
+        if (operationDescription != null)
+            operationDescName = operationDescription.getName();
+        
         out.defaultWriteObject();
     }
 

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java?rev=289283&r1=289282&r2=289283&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java Thu Sep 15 10:34:02 2005
@@ -86,6 +86,11 @@
     }
     
     private void writeObject(ObjectOutputStream out) throws IOException {
+    	if (axisOperation!=null)
+    		operationDescName = axisOperation.getName();
+    	if (axisOperation.getParent()!=null)
+    		serviceDescName = axisOperation.getParent().getName();
+    	
     	out.defaultWriteObject();
     }
 

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java?rev=289283&r1=289282&r2=289283&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java Thu Sep 15 10:34:02 2005
@@ -50,6 +50,9 @@
     }
     
     private void writeObject(ObjectOutputStream out) throws IOException {	
+    	if (serviceConfig!=null)
+    		this.serviceDescName = serviceConfig.getName();
+    	
     	out.defaultWriteObject();
     }
 

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java?rev=289283&r1=289282&r2=289283&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java Thu Sep 15 10:34:02 2005
@@ -48,6 +48,9 @@
 	}
 	
     private void writeObject(ObjectOutputStream out) throws IOException {
+    	if (description!=null)
+    		this.serviceGroupDescName = description.getServiceGroupName();
+    	
     	out.defaultWriteObject();    	
     }
 

Added: webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/context/ContextSerializationTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/context/ContextSerializationTest.java?rev=289283&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/context/ContextSerializationTest.java (added)
+++ webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/context/ContextSerializationTest.java Thu Sep 15 10:34:02 2005
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.axis2.context;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.miheaders.RelatesTo;
+import org.apache.axis2.description.OperationDescription;
+import org.apache.axis2.description.ServiceDescription;
+import org.apache.axis2.description.ServiceGroupDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisConfigurationImpl;
+import org.apache.axis2.util.Utils;
+import org.apache.axis2.wsdl.builder.WSDLComponentFactory;
+import org.apache.wsdl.WSDLConstants;
+
+import junit.framework.TestCase;
+
+/**
+ * This TestCase check weather the context serialization and deserialization happens correctly.
+ */
+public class ContextSerializationTest extends TestCase {
+
+	final String SERVICE_NAME = "service1";
+	final String OPERATION_NAME = "operation1";
+	final String SERVICE_GROUP_NAME = "serviceGroupName";
+	final String SERVICE_GROUP_CONTEXT_ID = "serviceGroupCtxId";
+	final String MSG1_ID = "msgid1";
+	final String MSG2_ID = "msgid2";
+	
+	File file = new File ("target/tempfile.tmp");
+	
+	AxisConfiguration axisConfiguration;
+	ServiceGroupDescription serviceGroupDescription;
+	ServiceDescription serviceDescription;
+	OperationDescription operationDescription;
+	
+	QName serviceDescQName = new QName (SERVICE_NAME);
+	QName operationDescName = new QName (OPERATION_NAME);
+	
+	
+	protected void setUp() throws Exception {
+		//Initializing descriptions
+		axisConfiguration = new AxisConfigurationImpl ();
+		serviceGroupDescription = new ServiceGroupDescription (axisConfiguration);
+		serviceGroupDescription.setServiceGroupName(SERVICE_GROUP_NAME);
+		serviceDescription = new ServiceDescription (serviceDescQName);
+		operationDescription = new OperationDescription (operationDescName);
+		
+		//Creating links
+		axisConfiguration.addServiceGroup(serviceGroupDescription);
+		axisConfiguration.addService(serviceDescription);
+		serviceGroupDescription.addService(serviceDescription);
+		serviceDescription.addOperation(operationDescription);
+		
+		if (file.exists()) {
+			file.delete();
+		}
+		
+		//creating a temp file to serialize
+		File dir = new File ("target");
+		if (!dir.isDirectory())
+			throw new AxisFault ("Target diractory is not found");
+		
+		file.createNewFile();
+	}
+	
+	public void testSerialization ()throws AxisFault,IOException, ClassNotFoundException{
+		
+		//Setting contexts.
+		ConfigurationContext configurationContext = new ConfigurationContext(axisConfiguration);
+        ServiceGroupContext serviceGroupContext = serviceDescription.getParent().getServiceGroupContext(configurationContext);
+        serviceGroupContext.setId(SERVICE_GROUP_CONTEXT_ID);
+        configurationContext.registerServiceGroupContext(serviceGroupContext);
+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(serviceDescription.getName().getLocalPart());
+        
+        //setting message contexts
+        MessageContext inMessage = new MessageContext(configurationContext);
+        MessageContext outMessage = new MessageContext(configurationContext);
+        inMessage.setMessageID(MSG1_ID);
+        outMessage.setMessageID(MSG2_ID);
+        outMessage.setRelatesTo(new RelatesTo (MSG1_ID));
+        inMessage.setServiceGroupContextId(SERVICE_GROUP_CONTEXT_ID);
+        outMessage.setServiceGroupContextId(SERVICE_GROUP_CONTEXT_ID);
+        inMessage.setServiceGroupContext(serviceGroupContext);
+        outMessage.setServiceGroupContext(serviceGroupContext);
+        inMessage.setServiceContext(serviceContext);
+        outMessage.setServiceContext(serviceContext);
+        inMessage.setOperationDescription(operationDescription);
+        outMessage.setOperationDescription(operationDescription);
+       
+        OperationContext operationContext = operationDescription.findOperationContext(inMessage,serviceContext);
+        operationContext.addMessageContext(outMessage);
+        outMessage.setOperationContext(operationContext);
+    
+        configurationContext.registerOperationContext(inMessage.getMessageID(),operationContext);
+        configurationContext.registerOperationContext(outMessage.getMessageID(),operationContext);
+      
+        
+        //serializing
+		ObjectOutputStream out = new ObjectOutputStream (
+				new FileOutputStream (file));
+		
+		if (configurationContext==null) 
+			throw new AxisFault ("Configuration Context is null");
+		
+		out.writeObject(configurationContext);
+		out.close();
+		
+		
+		
+		//deserializing
+		ObjectInputStream in = new ObjectInputStream (
+				new FileInputStream (file));
+		
+		Object obj = in.readObject();
+		if (!(obj instanceof ConfigurationContext))
+			throw new AxisFault ("Invalid read");
+		
+		configurationContext = null;
+		configurationContext = (ConfigurationContext) obj;
+		
+		//calling 'init' to set descriptions
+		configurationContext.init(axisConfiguration);
+		
+		
+		//Assertions to check weather context hierarchy is set correctly.
+		assertFalse(configurationContext.getOperationContextMap().isEmpty());
+		
+		ServiceGroupContext serviceGroupcontext1 = configurationContext.fillServiceContextAndServiceGroupContext(inMessage);
+		assertNotNull (serviceGroupcontext1);
+		
+		serviceGroupcontext1 = configurationContext.fillServiceContextAndServiceGroupContext(outMessage);
+		assertNotNull (serviceGroupcontext1);
+		
+		ServiceContext serviceContext1 = serviceGroupContext.getServiceContext(SERVICE_NAME);
+		assertNotNull(serviceContext1);
+		
+		OperationContext operationContext1 = configurationContext.getOperationContext(MSG1_ID);
+		assertNotNull(operationContext1);
+		
+		assertNotNull(operationContext1.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN));
+		assertNotNull(operationContext1.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT));
+		
+		
+		//Assertions to check weather description hierarchy is set correctly.
+		AxisConfiguration axisConfiguration1 = configurationContext.getAxisConfiguration();
+		assertNotNull(axisConfiguration1);
+		
+		assertNotNull(operationContext1.getAxisOperation());
+		assertNotNull(serviceGroupcontext1.getDescription());
+		assertNotNull(serviceContext1.getServiceConfig());
+			
+	}
+	
+	
+	protected void tearDown() throws Exception {
+		if (file.exists()) 
+			file.delete();
+	}
+	
+	
+}