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