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 sa...@apache.org on 2008/06/19 22:58:20 UTC

svn commit: r669690 - in /webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment: OSGiAxis2Constants.java OSGiServiceBuilder.java OSGiServiceGroupBuilder.java ServiceRegistry.java

Author: saminda
Date: Thu Jun 19 13:58:20 2008
New Revision: 669690

URL: http://svn.apache.org/viewvc?rev=669690&view=rev
Log:
More compensation for Builders are not pluggable and extensible.
Cleaning up the code a lot.
Finally working prototype of the OSGi bundle. 
I'll send a mail regarding deployment and operation. 
Need to remove TODOs and include  log service 

Modified:
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiAxis2Constants.java
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceBuilder.java
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceGroupBuilder.java
    webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/ServiceRegistry.java

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiAxis2Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiAxis2Constants.java?rev=669690&r1=669689&r2=669690&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiAxis2Constants.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiAxis2Constants.java Thu Jun 19 13:58:20 2008
@@ -20,5 +20,5 @@
  */
 public final class OSGiAxis2Constants {
 
-    public static String MODULE_NOT_FOUND_ERROR = "Error 1: Required module is not found";
+    public static String MODULE_NOT_FOUND_ERROR = "Error 1: Required module is not found. Module name : ";
 }

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceBuilder.java?rev=669690&r1=669689&r2=669690&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceBuilder.java Thu Jun 19 13:58:20 2008
@@ -15,16 +15,13 @@
  */
 package org.apache.axis2.osgi.deployment;
 
-import org.apache.axis2.deployment.ServiceBuilder;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.DeploymentErrorMsgs;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.description.AxisService;
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.ServiceBuilder;
 import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMAttribute;
-
+import org.apache.axis2.description.AxisService;
 import static org.apache.axis2.osgi.deployment.OSGiAxis2Constants.MODULE_NOT_FOUND_ERROR;
 
 import javax.xml.namespace.QName;
@@ -99,7 +96,7 @@
                 String refName = moduleRefAttribute.getAttributeValue();
 
                 if (axisConfig.getModule(refName) == null) {
-                    throw new DeploymentException(MODULE_NOT_FOUND_ERROR);
+                    throw new DeploymentException(MODULE_NOT_FOUND_ERROR + refName);
                 } else {
                     operation.addModule(refName);
                 }

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceGroupBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceGroupBuilder.java?rev=669690&r1=669689&r2=669690&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceGroupBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/OSGiServiceGroupBuilder.java Thu Jun 19 13:58:20 2008
@@ -17,15 +17,22 @@
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.deployment.DeploymentErrorMsgs;
 import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.ServiceBuilder;
 import org.apache.axis2.deployment.ServiceGroupBuilder;
+import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.i18n.Messages;
 import static org.apache.axis2.osgi.deployment.OSGiAxis2Constants.MODULE_NOT_FOUND_ERROR;
 
 import javax.xml.namespace.QName;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
 
 /**
  * @see org.apache.axis2.deployment.ServiceGroupBuilder
@@ -35,9 +42,77 @@
  */
 public class OSGiServiceGroupBuilder extends ServiceGroupBuilder {
 
-    public OSGiServiceGroupBuilder(OMElement service, HashMap wsdlServices,
+    private OMElement serviceElement;
+
+    private Map wsdlServices;
+
+    public OSGiServiceGroupBuilder(OMElement serviceElement, HashMap wsdlServices,
                                    ConfigurationContext configCtx) {
-        super(service, wsdlServices, configCtx);
+        super(serviceElement, wsdlServices, configCtx);
+        this.serviceElement = serviceElement;
+        this.wsdlServices = wsdlServices;
+    }
+
+    public ArrayList populateServiceGroup(AxisServiceGroup axisServiceGroup)
+            throws DeploymentException {
+        ArrayList serviceList = new ArrayList();
+
+        try {
+
+            // Processing service level parameters
+            Iterator itr = serviceElement.getChildrenWithName(new QName(TAG_PARAMETER));
+
+            processParameters(itr, axisServiceGroup, axisServiceGroup.getParent());
+
+            Iterator moduleConfigs =
+                    serviceElement.getChildrenWithName(new QName(TAG_MODULE_CONFIG));
+
+            processServiceModuleConfig(moduleConfigs, axisServiceGroup.getParent(),
+                                       axisServiceGroup);
+
+            // processing service-wide modules which required to engage globally
+            Iterator moduleRefs = serviceElement.getChildrenWithName(new QName(TAG_MODULE));
+
+            processModuleRefs(moduleRefs, axisServiceGroup);
+
+            Iterator serviceitr = serviceElement.getChildrenWithName(new QName(TAG_SERVICE));
+
+            while (serviceitr.hasNext()) {
+                OMElement service = (OMElement) serviceitr.next();
+                OMAttribute serviceNameatt = service.getAttribute(new QName(ATTRIBUTE_NAME));
+                if (serviceNameatt == null) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.SERVICE_NAME_ERROR));
+                }
+                String serviceName = serviceNameatt.getAttributeValue();
+
+                if (serviceName == null || "".equals(serviceName)) {
+                    throw new DeploymentException(
+                            Messages.getMessage(DeploymentErrorMsgs.SERVICE_NAME_ERROR));
+                } else {
+                    AxisService axisService = (AxisService) wsdlServices.get(serviceName);
+
+                    if (axisService == null) {
+                        axisService = new AxisService(serviceName);
+                    } else {
+                        axisService.setWsdlFound(true);
+                        axisService.setCustomWsdl(true);
+                    }
+
+                    // the service that has to be deployed
+                    axisService.setParent(axisServiceGroup);
+                    axisService.setClassLoader(axisServiceGroup.getServiceGroupClassLoader());
+
+                    ServiceBuilder serviceBuilder = new OSGiServiceBuilder(configCtx, axisService);
+                    AxisService as = serviceBuilder.populateService(service);
+                    serviceList.add(as);
+                }
+            }
+        } catch (AxisFault e) {
+            throw new DeploymentException(e);
+        }
+
+        return serviceList;
     }
 
     /**
@@ -59,7 +134,7 @@
                 String refName = moduleRefAttribute.getAttributeValue();
 
                 if (axisConfig.getModule(refName) == null) {
-                    throw new DeploymentException(MODULE_NOT_FOUND_ERROR);
+                    throw new DeploymentException(MODULE_NOT_FOUND_ERROR + refName);
                 } else {
                     axisServiceGroup.addModuleref(refName);
                 }

Modified: webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/ServiceRegistry.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/ServiceRegistry.java?rev=669690&r1=669689&r2=669690&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/ServiceRegistry.java (original)
+++ webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/osgi/deployment/ServiceRegistry.java Thu Jun 19 13:58:20 2008
@@ -15,22 +15,19 @@
  */
 package org.apache.axis2.osgi.deployment;
 
-import org.apache.axis2.description.AxisServiceGroup;
-import org.apache.axis2.description.AxisService;
+import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
-import org.apache.axis2.deployment.*;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axiom.om.OMElement;
+import org.apache.axis2.deployment.*;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import static org.apache.axis2.osgi.deployment.OSGiAxis2Constants.MODULE_NOT_FOUND_ERROR;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
-import javax.xml.stream.XMLStreamException;
-import java.util.*;
-import java.net.URL;
 import java.io.InputStream;
-import java.io.IOException;
-
-import static org.apache.axis2.osgi.deployment.OSGiAxis2Constants.MODULE_NOT_FOUND_ERROR;
+import java.net.URL;
+import java.util.*;
 
 /**
  * Creates proper AxisServiceGroup/AxisService looking into bundles
@@ -72,7 +69,7 @@
                     AxisService axisService = new AxisService(bundleSymbolicName);
                     axisService.setParent(serviceGroup);
                     axisService.setClassLoader(loader);
-                    ServiceBuilder serviceBuilder = new ServiceBuilder(configCtx, axisService);
+                    ServiceBuilder serviceBuilder = new OSGiServiceBuilder(configCtx, axisService);
                     serviceBuilder.setWsdlServiceMap(wsdlServicesMap);
                     AxisService service = serviceBuilder.populateService(rootElement);
                     configCtx.getAxisConfiguration().addService(service);
@@ -82,8 +79,8 @@
                                        bundle.getSymbolicName());
                 } else if (DeploymentConstants.TAG_SERVICE_GROUP.equals(elementName)) {
                     ServiceGroupBuilder groupBuilder =
-                            new ServiceGroupBuilder(rootElement, wsdlServicesMap,
-                                                    configCtx);
+                            new OSGiServiceGroupBuilder(rootElement, wsdlServicesMap,
+                                                        configCtx);
                     ArrayList serviceList = groupBuilder.populateServiceGroup(serviceGroup);
                     DeploymentEngine.addServiceGroup(serviceGroup,
                                                      serviceList,
@@ -95,6 +92,10 @@
                                        bundle.getSymbolicName());
                 }
                 resolvedBundles.put(bundle, serviceGroup);
+                //marked as resolved.
+                if (unreslovedBundles.contains(bundle)) {
+                    unreslovedBundles.remove(bundle);
+                }
             }
         } catch (Throwable e) {
             //TODO: TBD log