Author: dims
Date: Thu Mar  6 07:45:18 2008
New Revision: 634314

URL: http://svn.apache.org/viewvc?rev=634314&view=rev
Log:
copy some stuff over from muse for prototyping a new explicit deploy service 
for programatically adding new web services

Added:
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/SOAPProvider.java
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/ServletDescriptor.java
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebApp.java
    
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebAppDescriptor.java

Added: 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/SOAPProvider.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/SOAPProvider.java?rev=634314&view=auto
==============================================================================
--- 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/SOAPProvider.java
 (added)
+++ 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/SOAPProvider.java
 Thu Mar  6 07:45:18 2008
@@ -0,0 +1,151 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.extensions.osgi.core;
+
+import org.apache.axis2.extensions.osgi.core.web.WebApp;
+import org.osgi.framework.Bundle;
+
+/**
+ * SOAPProvider is an interface for generic SOAP functionality.
+ * Use this interface to register SOAPProvider services with the OSGi
+ * runtime using the <code>BundleContext.registerService()</code> methods.
+ */
+
+public interface SOAPProvider {
+
+    /**
+     * The name of the SOAPProvider implementation. Use this as the key when 
constructing
+     * the service's properties for registration with the OSGi runtime.
+     */
+    public static final String PROVIDER_NAME = "Name";
+
+    /**
+     * The major version of the SOAPProvider implementation. Use this as the 
key when constructing
+     * the service's properties for registration with the OSGi runtime.
+     */
+    public static final String PROVIDER_MAJOR_VERSION = "MajorVersion";
+
+    /**
+     * The minor version of the SOAPProvider implementation. Use this as the 
key when constructing
+     * the service's properties for registration with the OSGi runtime.
+     */
+    public static final String PROVIDER_MINOR_VERSION = "MinorVersion";
+
+    /**
+     * Getter method for the implementation's provider name. This name should 
be the same
+     * as the one used during the registration of the SOAPProvider service
+     *
+     * @return the Provider Name
+     */
+    public String getProviderName();
+
+    /**
+     * Getter method for the implementation's version. This name should be 
constructed
+     * from the major and minor versions used during registration of the 
SOAPProvider service.
+     *
+     * @return the Provider Version
+     */
+    public String getProviderVersion();
+
+    public Object getProviderEngine();
+
+    public Object getProviderDeployer();
+
+    public Object getProviderDeployer(WebApp webApp);
+
+    /**
+     * Deploys an Object as a WebService using the implementation's default 
binding type.
+     * The service is deployed into the provider's default application context.
+     *
+     * @param srvName   the display name of the service
+     * @param srvClass  the class or interface that should be exposed. 
Specifying an interface
+     *                  allows only the desired methods of the service object 
to be published.
+     * @param srvObject the actual implementation
+     * @throws Exception
+     */
+    public void deployService(String srvName, Class srvClass, Object 
srvObject, String handlerChain) throws Exception;
+
+    /**
+     * Deploys an Object as a WebService using a specified binding type
+     * The service is deployed into the provider's default application context.
+     *
+     * @param srvName     the display name of the service
+     * @param bindingType the name of the desired binding type
+     * @param srvClass    the class or interface that should be exposed. 
Specifying an interface
+     *                    allows only the desired methods of the service 
object to be published.
+     * @param srvObject   the actual implementation
+     * @throws Exception
+     */
+    public void deployService(String srvName, String bindingType, Class 
srvClass, Object srvObject, String handlerChain) throws Exception;
+
+    /**
+     * Deploys an Object as a WebService using the provider's default binding 
type.
+     * The service is deployed into the specified <code>WebApp</code> context
+     *
+     * @param WebApp    the target web application context
+     * @param srvName   the display name of the service
+     * @param srvClass  the class or interface that should be exposed. 
Specifying an interface
+     *                  allows only the desired methods of the service object 
to be published.
+     * @param srvObject the actual implementation
+     * @throws Exception
+     */
+    public void deployService(WebApp webApp, String srvName, Class srvClass, 
Object srvObject, String handlerChain) throws Exception;
+
+    /**
+     * Deploys an Object as a WebService using a specified binding type
+     * The service is deployed into the specified <code>WebApp</code> context
+     *
+     * @param WebApp      the target web application context
+     * @param srvName     the display name of the service
+     * @param bindingType the name of the desired binding type
+     * @param srvClass    the class or interface that should be exposed. 
Specifying an interface
+     *                    allows only the desired methods of the service 
object to be published.
+     * @param srvObject   the actual implementation
+     * @throws Exception
+     */
+    public void deployService(WebApp webApp, String srvName, String 
bindingType, Class srvClass, Object srvObject, String handlerChain) throws 
Exception;
+
+    public void undeployService(String srvName, Class srvClass) throws 
Exception;
+
+    public void undeployService(WebApp webApp, String srvName, Class srvClass) 
throws Exception;
+
+    /**
+     * Gets a web application from the provider for the given context path.
+     *
+     * @param contextPath the context path of the desired WebApp
+     * @param create      if <code>true</code>, create the WebApp if it does 
not exits.
+     * @return return the WebApp
+     * @throws Exception
+     */
+    public WebApp getWebApp(String contextPath, boolean create) throws 
Exception;
+
+    /**
+     * Gets a web application from the provider for the given context path, 
using
+     * the provided bundle as the location for the engine's configuration 
information
+     *
+     * @param contextPath the context path of the desired WebApp
+     * @param create      if <code>true</code>, create the WebApp if it does 
not exits.
+     * @return return the WebApp
+     * @throws Exception
+     */
+       public WebApp getWebApp(Bundle bundle, String contextPath, boolean 
create) throws Exception;
+
+}

Added: 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/ServletDescriptor.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/ServletDescriptor.java?rev=634314&view=auto
==============================================================================
--- 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/ServletDescriptor.java
 (added)
+++ 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/ServletDescriptor.java
 Thu Mar  6 07:45:18 2008
@@ -0,0 +1,66 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.extensions.osgi.core.web;
+
+import javax.servlet.http.HttpServlet;
+import java.util.Hashtable;
+
+/**
+ *
+ * ServletDescriptor a utility class for describing Servlets to be deployed 
into a WebApp
+ */
+
+public class ServletDescriptor {
+       protected Hashtable initParameters;
+
+       protected HttpServlet servlet;
+
+       protected String subContext;
+
+       public ServletDescriptor(String subContext, HttpServlet servlet) {
+               this.subContext = subContext;
+               this.servlet = servlet;
+       }
+
+    public Hashtable getInitParameters() {
+        return initParameters;
+    }
+
+    public void setInitParameters(Hashtable initParameters) {
+        this.initParameters = initParameters;
+    }
+
+    public HttpServlet getServlet() {
+        return servlet;
+    }
+
+    public void setServlet(HttpServlet servlet) {
+        this.servlet = servlet;
+    }
+
+    public String getSubContext() {
+        return subContext;
+    }
+
+    public void setSubContext(String subContext) {
+        this.subContext = subContext;
+    }
+}

Added: 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebApp.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebApp.java?rev=634314&view=auto
==============================================================================
--- 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebApp.java
 (added)
+++ 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebApp.java
 Thu Mar  6 07:45:18 2008
@@ -0,0 +1,136 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.extensions.osgi.core.web;
+
+import java.net.URL;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.http.HttpContext;
+import org.osgi.service.http.HttpService;
+
+/**
+ *
+ * WebApp is a utility class for describing a WebApplication to be deployed 
into an OSGi
+ * HTTP Service implementation. The WebApp implementation extends the OSGi 
<code>HttpContext</code>.
+ */
+public class WebApp implements HttpContext {
+       protected static WebAppDescriptor webAppDescriptor = null;
+
+       protected HttpService httpService;
+
+       protected ServiceReference sRef;
+
+       public WebApp(WebAppDescriptor descriptor) {
+               webAppDescriptor = descriptor;
+       }
+
+       // Return null and let the HTTP determine the type
+       public String getMimeType(String reqEntry) {
+               return null;
+       }
+
+       // Get the resource from the jar file, use the class loader to do it
+       public URL getResource(String name) {
+               URL url = getClass().getResource(name);
+
+               return url;
+       }
+
+       public boolean handleSecurity(HttpServletRequest request,
+                       HttpServletResponse response) throws 
java.io.IOException {
+               return true;
+       }
+
+       /**
+        * Starts the WebApp
+        * @param bc the BundleContext of the WebApp host
+        * @throws BundleException
+        */
+       public void start(BundleContext bc) throws BundleException {
+               if ((sRef = 
bc.getServiceReference("org.osgi.service.http.HttpService")) == null)
+                       throw new BundleException("Failed to get 
HttpServiceReference");
+               if ((httpService = (HttpService) bc.getService(sRef)) == null)
+                       throw new BundleException("Failed to get HttpService");
+               try {
+                       WebAppDescriptor wad = webAppDescriptor;
+
+                       for (int i = 0; i < wad.servlet.length; i++) {
+                               ServletDescriptor servlet = wad.servlet[i];
+
+                               httpService.registerServlet(wad.context + 
servlet.subContext,
+                                               servlet.servlet, 
servlet.initParameters, this);
+                       }
+               } catch (Exception e) {
+                       e.printStackTrace();
+                       throw new BundleException("Failed to register 
servlets");
+               }
+       }
+
+       /**
+        * Stops the WebApp
+        * @param bc the BundleContext of the WebApp host
+        * @throws BundleException
+        */
+       public void stop(BundleContext bc) throws BundleException {
+               try {
+                       for (int i = 0; i < webAppDescriptor.servlet.length; 
i++) {
+                               ServletDescriptor servlet = 
webAppDescriptor.servlet[i];
+
+                               httpService.unregister(webAppDescriptor.context
+                                               + servlet.subContext);
+                       }
+                       bc.ungetService(sRef);
+                       httpService = null;
+                       webAppDescriptor = null;
+               } catch (Exception e) {
+                       throw new BundleException("Failed to unregister 
resources", e);
+               }
+       }
+
+    public static WebAppDescriptor getWebAppDescriptor() {
+        return webAppDescriptor;
+    }
+
+    public static void setWebAppDescriptor(WebAppDescriptor webAppDescriptor) {
+        WebApp.webAppDescriptor = webAppDescriptor;
+    }
+
+    public HttpService getHttpService() {
+        return httpService;
+    }
+
+    public void setHttpService(HttpService httpService) {
+        this.httpService = httpService;
+    }
+
+    public ServiceReference getSRef() {
+        return sRef;
+    }
+
+    public void setSRef(ServiceReference sRef) {
+        this.sRef = sRef;
+    }
+}

Added: 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebAppDescriptor.java
URL: 
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebAppDescriptor.java?rev=634314&view=auto
==============================================================================
--- 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebAppDescriptor.java
 (added)
+++ 
webservices/axis2/trunk/java/modules/osgi/src/org/apache/axis2/extensions/osgi/core/web/WebAppDescriptor.java
 Thu Mar  6 07:45:18 2008
@@ -0,0 +1,49 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.extensions.osgi.core.web;
+
+/**
+ *
+ * WebAppDescriptor is a utility class for containing the static information
+ * required by the WebApp class
+ */
+
+public class WebAppDescriptor {
+       protected String context;
+
+       protected ServletDescriptor[] servlet;
+
+    public String getContext() {
+        return context;
+    }
+
+    public void setContext(String context) {
+        this.context = context;
+    }
+
+    public ServletDescriptor[] getServlet() {
+        return servlet;
+    }
+
+    public void setServlet(ServletDescriptor[] servlet) {
+        this.servlet = servlet;
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to