You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2012/04/03 17:11:07 UTC

svn commit: r1308973 - in /karaf/trunk: ./ assemblies/features/standard/src/main/feature/ http/ http/command/ http/command/src/main/java/org/apache/karaf/http/ http/command/src/main/java/org/apache/karaf/http/command/ http/command/src/main/java/org/apa...

Author: cschneider
Date: Tue Apr  3 15:11:05 2012
New Revision: 1308973

URL: http://svn.apache.org/viewvc?rev=1308973&view=rev
Log:
KARAF-1307 Refactor http commands and mbeans

Added:
    karaf/trunk/http/   (with props)
    karaf/trunk/http/command/
      - copied from r1308788, karaf/trunk/shell/http/
    karaf/trunk/http/command/src/main/java/org/apache/karaf/http/
    karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/
      - copied from r1308788, karaf/trunk/shell/http/src/main/java/org/apache/karaf/shell/http/
    karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml
      - copied, changed from r1308788, karaf/trunk/shell/http/src/main/resources/OSGI-INF/blueprint/shell-http.xml
    karaf/trunk/http/core/
      - copied from r1308788, karaf/trunk/management/mbeans/http/
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/
      - copied from r1308788, karaf/trunk/management/mbeans/http/src/main/java/org/apache/karaf/management/mbeans/http/
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletInfo.java
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletService.java
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/Http.java
      - copied, changed from r1308788, karaf/trunk/management/mbeans/http/src/main/java/org/apache/karaf/management/mbeans/http/internal/HttpMBeanImpl.java
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletServiceImpl.java
    karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml
      - copied, changed from r1308788, karaf/trunk/management/mbeans/http/src/main/resources/OSGI-INF/blueprint/http-management.xml
    karaf/trunk/http/core/src/test/
    karaf/trunk/http/core/src/test/java/
    karaf/trunk/http/core/src/test/java/org/
    karaf/trunk/http/core/src/test/java/org/apache/
    karaf/trunk/http/core/src/test/java/org/apache/karaf/
    karaf/trunk/http/core/src/test/java/org/apache/karaf/http/
    karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/
    karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/
    karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/HttpTest.java
    karaf/trunk/http/pom.xml
Removed:
    karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletEventHandler.java
    karaf/trunk/http/command/src/main/java/org/apache/karaf/shell/
    karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/shell-http.xml
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/HttpMBeanImpl.java
    karaf/trunk/http/core/src/main/java/org/apache/karaf/management/
    karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/http-management.xml
    karaf/trunk/management/mbeans/http/
    karaf/trunk/shell/http/
Modified:
    karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
    karaf/trunk/http/command/pom.xml
    karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
    karaf/trunk/http/core/pom.xml
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/HttpMBean.java
    karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletEventHandler.java
    karaf/trunk/management/mbeans/pom.xml
    karaf/trunk/pom.xml
    karaf/trunk/shell/pom.xml

Modified: karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml?rev=1308973&r1=1308972&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml (original)
+++ karaf/trunk/assemblies/features/standard/src/main/feature/feature.xml Tue Apr  3 15:11:05 2012
@@ -109,8 +109,8 @@
         <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-spi/${pax.web.version}</bundle>
         <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-runtime/${pax.web.version}</bundle>
         <bundle start-level="30">mvn:org.ops4j.pax.web/pax-web-jetty/${pax.web.version}</bundle>
-        <bundle start-level="30">mvn:org.apache.karaf.shell/org.apache.karaf.shell.http/${project.version}</bundle>
-        <bundle start-level="30">mvn:org.apache.karaf.management.mbeans/org.apache.karaf.management.mbeans.http/${project.version}</bundle>
+        <bundle start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.core/${project.version}</bundle>
+        <bundle start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.command/${project.version}</bundle>
     </feature>
 
     <feature name="http-whiteboard" description="Provide HTTP Whiteboard pattern support" version="${project.version}" resolver="(obr)">

Propchange: karaf/trunk/http/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Apr  3 15:11:05 2012
@@ -0,0 +1,3 @@
+.project
+.settings
+target

Modified: karaf/trunk/http/command/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/http/command/pom.xml?rev=1308973&r1=1308788&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/http/command/pom.xml (original)
+++ karaf/trunk/http/command/pom.xml Tue Apr  3 15:11:05 2012
@@ -22,15 +22,15 @@
 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
-		<groupId>org.apache.karaf.shell</groupId>
-		<artifactId>shell</artifactId>
+		<groupId>org.apache.karaf.http</groupId>
+		<artifactId>http</artifactId>
 		<version>3.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>org.apache.karaf.shell.http</artifactId>
+	<artifactId>org.apache.karaf.http.command</artifactId>
 	<packaging>bundle</packaging>
-	<name>Apache Karaf :: Shell :: Http Commands</name>
+	<name>Apache Karaf :: HTTP :: Commands</name>
 	<description>This bundle provides Karaf shell commands to list details of the http service.</description>
 
 	<properties>
@@ -42,6 +42,10 @@
 			<groupId>org.apache.karaf.shell</groupId>
 			<artifactId>org.apache.karaf.shell.console</artifactId>
 		</dependency>
+        <dependency>
+            <groupId>org.apache.karaf.http</groupId>
+            <artifactId>org.apache.karaf.http.core</artifactId>
+        </dependency>
 		
 		<dependency>
             <groupId>org.apache.karaf</groupId>

Modified: karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java?rev=1308973&r1=1308788&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java (original)
+++ karaf/trunk/http/command/src/main/java/org/apache/karaf/http/command/ServletListCommand.java Tue Apr  3 15:11:05 2012
@@ -14,88 +14,42 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.karaf.shell.http;
+package org.apache.karaf.http.command;
 
 import java.util.Arrays;
 
-import javax.servlet.Servlet;
-
+import org.apache.karaf.http.core.ServletInfo;
+import org.apache.karaf.http.core.ServletService;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
-import org.apache.karaf.util.CommandUtils;
-import org.ops4j.pax.web.service.spi.ServletEvent;
-import org.ops4j.pax.web.service.spi.WebEvent;
-
+import org.apache.karaf.shell.console.table.Col;
+import org.apache.karaf.shell.console.table.ShellTable;
 
 @Command(scope = "http", name = "list", description = "Lists details for servlets.")
 public class ServletListCommand extends OsgiCommandSupport {
 
-	private ServletEventHandler eventHandler;
-	
-	@Override
-	protected Object doExecute() throws Exception {
-		
-		String headers = " ID   Servlet                        Servlet-Name              State         Alias              Url             ";
-		System.out.println(headers);
-		for (ServletEvent event : eventHandler.getServletEvents()) {
-			Servlet servlet = event.getServlet();
-			String servletClassName = " ";
-			if (servlet != null) {
-				servletClassName = servlet.getClass().getName();
-				servletClassName = servletClassName.substring(servletClassName.lastIndexOf(".")+1, servletClassName.length());
-			} 
-			servletClassName = CommandUtils.trimToSize(servletClassName, 28);
-			String servletName = event.getServletName() != null ? event.getServletName() : " ";
-			if (servletName.contains(".")) {
-				servletName = servletName.substring(servletName.lastIndexOf(".")+1, servletName.length());
-			}
-			
-			servletName = CommandUtils.trimToSize(servletName, 23);
-			
-			String alias = event.getAlias() != null ? event.getAlias() : " ";
-			
-			alias = CommandUtils.trimToSize(alias, 16);
-			
-			String[] urls = (String[]) (event.getUrlParameter() != null ? event.getUrlParameter() : new String[] {""});
-			String line = "[" + event.getBundle().getBundleId() + "] [" + servletClassName + "] [" + servletName +"] [" 
-			+ getStateString(event.getType())+ "] [" + alias + "] [" + Arrays.toString(urls) + "]";
-			System.out.println(line);
-		}
-		return null;
-	}
-	
-	public String getStateString(int type)
-    {
-        switch(type) {
-		case WebEvent.DEPLOYING:
-			return "Deploying  ";
-		case WebEvent.DEPLOYED:
-			return "Deployed   ";
-		case WebEvent.UNDEPLOYING:
-			return "Undeploying";
-		case WebEvent.UNDEPLOYED:
-			return "Undeployed ";
-		case WebEvent.FAILED:
-			return "Failed     ";
-		case WebEvent.WAITING:
-			return "Waiting    ";
-		default:
-			return "Failed     ";
-		}
+    private ServletService servletService;
+    
+    public ServletListCommand(ServletService servletService) {
+        this.servletService = servletService;
     }
 
-	/**
-	 * @return the eventHandler
-	 */
-	public ServletEventHandler getEventHandler() {
-		return eventHandler;
-	}
-
-	/**
-	 * @param eventHandler the eventHandler to set
-	 */
-	public void setEventHandler(ServletEventHandler eventHandler) {
-		this.eventHandler = eventHandler;
-	}
+    @Override
+    protected Object doExecute() throws Exception {
+        ShellTable table = new ShellTable();
+        table.column(new Col("ID"));
+        table.column(new Col("Servlet"));
+        table.column(new Col("Servlet-Name"));
+        table.column(new Col("State"));
+        table.column(new Col("Alias"));
+        table.column(new Col("Url"));
+
+        for (ServletInfo info : servletService.getServlets()) {
+            table.addRow().addContent(info.getBundle().getBundleId(), info.getClassName(), info.getName(),
+                                      info.getStateString(), info.getAlias(), Arrays.toString(info.getUrls()));
+        }
+        table.print(System.out);
+        return null;
+    }
 
 }

Copied: karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml (from r1308788, karaf/trunk/shell/http/src/main/resources/OSGI-INF/blueprint/shell-http.xml)
URL: http://svn.apache.org/viewvc/karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml?p2=karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml&p1=karaf/trunk/shell/http/src/main/resources/OSGI-INF/blueprint/shell-http.xml&r1=1308788&r2=1308973&rev=1308973&view=diff
==============================================================================
--- karaf/trunk/shell/http/src/main/resources/OSGI-INF/blueprint/shell-http.xml (original)
+++ karaf/trunk/http/command/src/main/resources/OSGI-INF/blueprint/blueprint.xml Tue Apr  3 15:11:05 2012
@@ -19,16 +19,12 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-	<bean id="eaHandler" class="org.apache.karaf.shell.http.ServletEventHandler" />
-	
-	<service id="servletListener"
-		interface="org.ops4j.pax.web.service.spi.ServletListener"
-		ref="eaHandler" />
+    <reference id="servletService" interface="org.apache.karaf.http.core.ServletService" />
 
 	<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
         <command>
-            <action class="org.apache.karaf.shell.http.ServletListCommand">
-            	<property name="eventHandler" ref="eaHandler" />
+            <action class="org.apache.karaf.http.command.ServletListCommand">
+            	<argument ref="servletService" />
             </action>
         </command>
     </command-bundle>

Modified: karaf/trunk/http/core/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/pom.xml?rev=1308973&r1=1308788&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/http/core/pom.xml (original)
+++ karaf/trunk/http/core/pom.xml Tue Apr  3 15:11:05 2012
@@ -22,16 +22,16 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.karaf.management.mbeans</groupId>
-        <artifactId>mbeans</artifactId>
+        <groupId>org.apache.karaf.http</groupId>
+        <artifactId>http</artifactId>
         <version>3.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>org.apache.karaf.management.mbeans.http</artifactId>
+    <artifactId>org.apache.karaf.http.core</artifactId>
     <packaging>bundle</packaging>
-    <name>Apache Karaf :: Management :: MBeans :: HTTP</name>
-    <description>This bundle provides a JMX MBean to get information about the HTTP servlets.</description>
+    <name>Apache Karaf :: HTTP :: Core</name>
+    <description>This bundle provides HTTP core services</description>
 
     <properties>
         <appendedResourcesDirectory>${basedir}/../../../etc/appended-resources/</appendedResourcesDirectory>
@@ -78,21 +78,10 @@
                 <configuration>
                     <instructions>
                         <Export-Package>
-                            org.apache.karaf.management.mbeans.http;version=${project.version}
+                            org.apache.karaf.http.core
                         </Export-Package>
-                        <Import-Package>
-                            !org.apache.karaf.management.mbeans.http,
-                            javax.management,
-                            javax.management.loading,
-                            org.apache.aries.blueprint,
-                            org.osgi.service.blueprint.container,
-                            org.osgi.service.blueprint.reflect,
-                            org.apache.karaf.management;version=${project.version},
-                            *
-                        </Import-Package>
                         <Private-Package>
-                            org.apache.karaf.management.mbeans.http.internal,
-                            !*
+                            org.apache.karaf.http.core.internal
                         </Private-Package>
                     </instructions>
                 </configuration>

Modified: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/HttpMBean.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/HttpMBean.java?rev=1308973&r1=1308788&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/HttpMBean.java (original)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/HttpMBean.java Tue Apr  3 15:11:05 2012
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.karaf.management.mbeans.http;
+package org.apache.karaf.http.core;
 
 import javax.management.openmbean.TabularData;
 
@@ -29,6 +29,6 @@ public interface HttpMBean {
      * @return a tabular view of the servlets information.
      * @throws Exception
      */
-    TabularData getServlets() throws Exception;
+    TabularData getServlets();
 
 }

Added: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletInfo.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletInfo.java?rev=1308973&view=auto
==============================================================================
--- karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletInfo.java (added)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletInfo.java Tue Apr  3 15:11:05 2012
@@ -0,0 +1,69 @@
+package org.apache.karaf.http.core;
+
+import org.ops4j.pax.web.service.spi.WebEvent;
+import org.osgi.framework.Bundle;
+
+public class ServletInfo {
+    private String name;
+    private Bundle bundle;
+    private String className;
+    private String alias;
+    private int state;
+    private String[] urls;
+
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Bundle getBundle() {
+        return bundle;
+    }
+    public void setBundle(Bundle bundle) {
+        this.bundle = bundle;
+    }
+    public String getClassName() {
+        return className;
+    }
+    public void setClassName(String className) {
+        this.className = className;
+    }
+    public int getState() {
+        return state;
+    }
+    public void setState(int state) {
+        this.state = state;
+    }
+    public String getAlias() {
+        return alias;
+    }
+    public void setAlias(String alias) {
+        this.alias = alias;
+    }
+    public String[] getUrls() {
+        return urls;
+    }
+    public void setUrls(String[] urls) {
+        this.urls = urls;
+    }
+    
+    public String getStateString() {
+        switch (state) {
+            case WebEvent.DEPLOYING:
+                return "Deploying  ";
+            case WebEvent.DEPLOYED:
+                return "Deployed   ";
+            case WebEvent.UNDEPLOYING:
+                return "Undeploying";
+            case WebEvent.UNDEPLOYED:
+                return "Undeployed ";
+            case WebEvent.FAILED:
+                return "Failed     ";
+            case WebEvent.WAITING:
+                return "Waiting    ";
+            default:
+                return "Failed     ";
+        }
+    }
+}

Added: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletService.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletService.java?rev=1308973&view=auto
==============================================================================
--- karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletService.java (added)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/ServletService.java Tue Apr  3 15:11:05 2012
@@ -0,0 +1,7 @@
+package org.apache.karaf.http.core;
+
+import java.util.List;
+
+public interface ServletService {
+    List<ServletInfo> getServlets();
+}

Copied: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/Http.java (from r1308788, karaf/trunk/management/mbeans/http/src/main/java/org/apache/karaf/management/mbeans/http/internal/HttpMBeanImpl.java)
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/Http.java?p2=karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/Http.java&p1=karaf/trunk/management/mbeans/http/src/main/java/org/apache/karaf/management/mbeans/http/internal/HttpMBeanImpl.java&r1=1308788&r2=1308973&rev=1308973&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/http/src/main/java/org/apache/karaf/management/mbeans/http/internal/HttpMBeanImpl.java (original)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/Http.java Tue Apr  3 15:11:05 2012
@@ -14,92 +14,58 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.karaf.management.mbeans.http.internal;
+package org.apache.karaf.http.core.internal;
 
-import org.apache.karaf.management.mbeans.http.HttpMBean;
-import org.ops4j.pax.web.service.spi.ServletEvent;
-import org.ops4j.pax.web.service.spi.WebEvent;
+import java.util.Arrays;
+import java.util.List;
 
 import javax.management.NotCompliantMBeanException;
 import javax.management.StandardMBean;
-import javax.management.openmbean.*;
-import javax.servlet.Servlet;
-import java.util.Arrays;
-import java.util.Collection;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+import org.apache.karaf.http.core.HttpMBean;
+import org.apache.karaf.http.core.ServletInfo;
+import org.apache.karaf.http.core.ServletService;
 
 /**
  * Implementation of the HTTP MBean.
  */
-public class HttpMBeanImpl extends StandardMBean implements HttpMBean {
+public class Http extends StandardMBean implements HttpMBean {
+    private ServletService servletService;
 
-    private ServletEventHandler servletEventHandler;
-
-    public HttpMBeanImpl() throws NotCompliantMBeanException {
+    public Http(ServletService servletService) throws NotCompliantMBeanException {
         super(HttpMBean.class);
+        this.servletService = servletService;
     }
 
-    public TabularData getServlets() throws Exception {
-        Collection<ServletEvent> events = servletEventHandler.getServletEvents();
-        CompositeType servletType = new CompositeType("Servlet", "HTTP Servlet",
+    public TabularData getServlets() {
+        try {
+            CompositeType servletType = new CompositeType("Servlet", "HTTP Servlet",
                 new String[]{"ID", "Servlet", "Servlet Name", "State", "Alias", "URL"},
                 new String[]{"ID of the servlet", "Class name of the servlet", "Servlet Name", "Current state of the servlet", "Aliases of the servlet", "URL of the servlet"},
-                new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
-        TabularType tableType = new TabularType("Servlets", "Table of all HTTP servlets", servletType, new String[]{"ID"});
-        TabularData table = new TabularDataSupport(tableType);
-
-        for (ServletEvent event : events) {
-            try {
-                Servlet servlet = event.getServlet();
-                String servletClassName = " ";
-                if (servlet != null) {
-                    servletClassName = servlet.getClass().getName();
-                    servletClassName = servletClassName.substring(servletClassName.lastIndexOf(".") + 1, servletClassName.length());
-                }
-                String servletName = event.getServletName() != null ? event.getServletName() : " ";
-                if (servletName.contains(".")) {
-                    servletName = servletName.substring(servletName.lastIndexOf(".") + 1, servletName.length());
-                }
-
-                String alias = event.getAlias() != null ? event.getAlias() : " ";
-
-                String[] urls = (String[]) (event.getUrlParameter() != null ? event.getUrlParameter() : new String[]{""});
-
+                new OpenType[]{SimpleType.LONG, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+            TabularType tableType = new TabularType("Servlets", "Table of all HTTP servlets", servletType, new String[]{"ID"});
+            TabularData table = new TabularDataSupport(tableType);
+            List<ServletInfo> servletInfos = servletService.getServlets();
+            for (ServletInfo info : servletInfos) {
+            
                 CompositeData data = new CompositeDataSupport(servletType,
                         new String[]{"ID", "Servlet", "Servlet Name", "State", "Alias", "URL"},
-                        new Object[]{event.getBundle().getBundleId(), servletClassName, servletName, getStateString(event.getType()), alias, Arrays.toString(urls)});
+                        new Object[]{info.getBundle().getBundleId(), info.getClassName(), info.getName(), info.getStateString(), info.getAlias(), Arrays.toString(info.getUrls())});
                 table.put(data);
-            } catch (Exception e) {
-                e.printStackTrace();
+            
             }
+            return table;
+        } catch (Exception e) {
+            throw new RuntimeException(e.getMessage(), e);
         }
-        return table;
-    }
-
-    private String getStateString(int type) {
-        switch (type) {
-            case WebEvent.DEPLOYING:
-                return "Deploying  ";
-            case WebEvent.DEPLOYED:
-                return "Deployed   ";
-            case WebEvent.UNDEPLOYING:
-                return "Undeploying";
-            case WebEvent.UNDEPLOYED:
-                return "Undeployed ";
-            case WebEvent.FAILED:
-                return "Failed     ";
-            case WebEvent.WAITING:
-                return "Waiting    ";
-            default:
-                return "Failed     ";
-        }
-    }
-
-    public ServletEventHandler getServletEventHandler() {
-        return this.servletEventHandler;
-    }
-
-    public void setServletEventHandler(ServletEventHandler servletEventHandler) {
-        this.servletEventHandler = servletEventHandler;
     }
 
 }

Modified: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletEventHandler.java?rev=1308973&r1=1308788&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletEventHandler.java (original)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletEventHandler.java Tue Apr  3 15:11:05 2012
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.karaf.management.mbeans.http.internal;
+package org.apache.karaf.http.core.internal;
 
 import java.util.Collection;
 import java.util.HashMap;

Added: karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletServiceImpl.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletServiceImpl.java?rev=1308973&view=auto
==============================================================================
--- karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletServiceImpl.java (added)
+++ karaf/trunk/http/core/src/main/java/org/apache/karaf/http/core/internal/ServletServiceImpl.java Tue Apr  3 15:11:05 2012
@@ -0,0 +1,52 @@
+package org.apache.karaf.http.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.servlet.Servlet;
+
+import org.apache.karaf.http.core.ServletInfo;
+import org.apache.karaf.http.core.ServletService;
+import org.ops4j.pax.web.service.spi.ServletEvent;
+
+public class ServletServiceImpl implements ServletService {
+    private ServletEventHandler servletEventHandler;
+
+    public ServletServiceImpl(ServletEventHandler servletEventHandler) {
+        this.servletEventHandler = servletEventHandler;
+    }
+
+    @Override
+    public List<ServletInfo> getServlets() {
+        List<ServletInfo> servletInfos = new ArrayList<ServletInfo>();
+        Collection<ServletEvent> events = servletEventHandler.getServletEvents();
+        for (ServletEvent event : events) {
+            Servlet servlet = event.getServlet();
+            String servletClassName = " ";
+            if (servlet != null) {
+                servletClassName = servlet.getClass().getName();
+                servletClassName = servletClassName.substring(servletClassName.lastIndexOf(".") + 1,
+                                                              servletClassName.length());
+            }
+            String servletName = event.getServletName() != null ? event.getServletName() : " ";
+            if (servletName.contains(".")) {
+                servletName = servletName.substring(servletName.lastIndexOf(".") + 1, servletName.length());
+            }
+
+            String alias = event.getAlias() != null ? event.getAlias() : " ";
+
+            String[] urls = (String[])(event.getUrlParameter() != null ? event.getUrlParameter() : new String[] {""});
+            ServletInfo info = new ServletInfo();
+            info.setBundle(event.getBundle());
+            info.setName(servletName);
+            info.setClassName(servletClassName);
+            info.setState(event.getType());
+            info.setAlias(alias);
+            info.setUrls(urls);
+            servletInfos.add(info);
+        }
+        return servletInfos;
+    }
+
+}

Copied: karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml (from r1308788, karaf/trunk/management/mbeans/http/src/main/resources/OSGI-INF/blueprint/http-management.xml)
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml?p2=karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml&p1=karaf/trunk/management/mbeans/http/src/main/resources/OSGI-INF/blueprint/http-management.xml&r1=1308788&r2=1308973&rev=1308973&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/http/src/main/resources/OSGI-INF/blueprint/http-management.xml (original)
+++ karaf/trunk/http/core/src/main/resources/OSGI-INF/blueprint/blueprint.xml Tue Apr  3 15:11:05 2012
@@ -12,31 +12,29 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 -->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+    xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">
 
-    <!-- Servlet Event Handler -->
-    <bean id="servletEventHandler" class="org.apache.karaf.management.mbeans.http.internal.ServletEventHandler"/>
+    <ext:property-placeholder/>
 
-    <!-- Servlet Listener service -->
-    <service id="servletListener" interface="org.ops4j.pax.web.service.spi.ServletListener" ref="servletEventHandler"/>
-
-    <!-- Reference to the MBean server -->
-    <reference id="mbeanServer" interface="javax.management.MBeanServer">
-        <reference-listener ref="mbeanRegistrer" bind-method="registerMBeanServer" unbind-method="unregisterMBeanServer"/>
-    </reference>
+    <bean id="servletEventHandler" class="org.apache.karaf.http.core.internal.ServletEventHandler"/>
 
-    <!-- HTTP MBean -->
-    <bean id="httpMBean" class="org.apache.karaf.management.mbeans.http.internal.HttpMBeanImpl">
-        <property name="servletEventHandler" ref="servletEventHandler"/>
+    <service id="servletListener" interface="org.ops4j.pax.web.service.spi.ServletListener" ref="servletEventHandler"/>
+    
+    <bean id="servletService" class="org.apache.karaf.http.core.internal.ServletServiceImpl">
+        <argument ref="servletEventHandler"/>
     </bean>
+    
+    <service interface="org.apache.karaf.http.core.ServletService" ref="servletService"/>
 
-    <!-- Register Dev MBean in the MBean Server -->
-    <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
-        <property name="mbeans">
-            <map>
-                <entry value="org.apache.karaf:type=http,name=${karaf.name}" key-ref="httpMBean"/>
-            </map>
-        </property>
+    <bean id="httpMBean" class="org.apache.karaf.http.core.internal.Http">
+        <argument ref="servletService"/>
     </bean>
+    
+    <service ref="httpMBean" auto-export="interfaces">
+        <service-properties>
+            <entry key="jmx.objectname" value="org.apache.karaf:type=http,name=${karaf.name}"/>
+        </service-properties>
+    </service>
 
 </blueprint>
\ No newline at end of file

Added: karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/HttpTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/HttpTest.java?rev=1308973&view=auto
==============================================================================
--- karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/HttpTest.java (added)
+++ karaf/trunk/http/core/src/test/java/org/apache/karaf/http/core/internal/HttpTest.java Tue Apr  3 15:11:05 2012
@@ -0,0 +1,21 @@
+package org.apache.karaf.http.core.internal;
+
+import java.lang.management.ManagementFactory;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+
+import org.junit.Test;
+
+public class HttpTest {
+
+    @Test
+    public void testRegisterMBean() throws Exception {
+        Http httpMBean = new Http(new ServletServiceImpl(new ServletEventHandler()));
+        MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
+        mbeanServer.registerMBean(httpMBean, new ObjectName("org.apache.karaf:type=http,name=root"));
+        
+        TabularData data = httpMBean.getServlets();
+    }
+}

Added: karaf/trunk/http/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/http/pom.xml?rev=1308973&view=auto
==============================================================================
--- karaf/trunk/http/pom.xml (added)
+++ karaf/trunk/http/pom.xml Tue Apr  3 15:11:05 2012
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.karaf</groupId>
+        <artifactId>karaf</artifactId>
+        <version>3.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.karaf.http</groupId>
+    <artifactId>http</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache Karaf :: HTTP</name>
+
+    <modules>
+        <module>core</module>
+        <module>command</module>
+    </modules>
+
+</project>

Modified: karaf/trunk/management/mbeans/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/management/mbeans/pom.xml?rev=1308973&r1=1308972&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/management/mbeans/pom.xml (original)
+++ karaf/trunk/management/mbeans/pom.xml Tue Apr  3 15:11:05 2012
@@ -36,7 +36,6 @@
     <modules>
         <module>services</module>
         <module>dev</module>
-        <module>http</module>
         <module>log</module>
         <module>obr</module>
     </modules>

Modified: karaf/trunk/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/pom.xml?rev=1308973&r1=1308972&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/pom.xml (original)
+++ karaf/trunk/pom.xml Tue Apr  3 15:11:05 2012
@@ -44,6 +44,7 @@
         <module>config</module>
         <module>instance</module>
         <module>package</module>
+		<module>http</module>
         <module>deployer</module>
         <module>shell</module>
         <module>jaas</module>
@@ -165,7 +166,7 @@
         <aries.blueprint.core.compatibility.version>0.4.1-SNAPSHOT</aries.blueprint.core.compatibility.version>
         <aries.blueprint.core.version>0.4.1-SNAPSHOT</aries.blueprint.core.version>
         <aries.blueprint.jexl.evaluator.version>0.1.1-SNAPSHOT</aries.blueprint.jexl.evaluator.version>
-        <aries.jmx.version>0.3</aries.jmx.version>
+        <aries.jmx.version>0.3.1-SNAPSHOT</aries.jmx.version>
         <aries.jpa.version>0.3</aries.jpa.version>
         <aries.jndi.api.version>0.3</aries.jndi.api.version>
         <aries.jndi.version>0.3.2-SNAPSHOT</aries.jndi.version>
@@ -366,6 +367,17 @@
             </dependency>
 
             <dependency>
+                <groupId>org.apache.karaf.http</groupId>
+                <artifactId>org.apache.karaf.http.core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.karaf.http</groupId>
+                <artifactId>org.apache.karaf.http.command</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
                 <groupId>org.apache.karaf.config</groupId>
                 <artifactId>org.apache.karaf.config.core</artifactId>
                 <version>${project.version}</version>
@@ -430,11 +442,6 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.karaf.management.mbeans</groupId>
-                <artifactId>org.apache.karaf.management.mbeans.http</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.karaf.management.mbeans</groupId>
                 <artifactId>org.apache.karaf.management.mbeans.log</artifactId>
                 <version>${project.version}</version>
             </dependency>

Modified: karaf/trunk/shell/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/pom.xml?rev=1308973&r1=1308972&r2=1308973&view=diff
==============================================================================
--- karaf/trunk/shell/pom.xml (original)
+++ karaf/trunk/shell/pom.xml Tue Apr  3 15:11:05 2012
@@ -37,7 +37,6 @@
         <module>commands</module>
         <module>console</module>
         <module>dev</module>
-        <module>http</module>
         <module>log</module>
         <module>obr</module>
         <module>services</module>