You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by an...@apache.org on 2011/01/11 21:35:32 UTC
svn commit: r1057856 - in /karaf/trunk/shell/web/src/main: ./ java/
java/org/ java/org/apache/ java/org/apache/karaf/
java/org/apache/karaf/shell/ java/org/apache/karaf/shell/web/
Author: anierbeck
Date: Tue Jan 11 20:35:32 2011
New Revision: 1057856
URL: http://svn.apache.org/viewvc?rev=1057856&view=rev
Log:
[KARAF-211] - osgi:list to other command to display context-path for web applications or a new war command for that
web:list implementation
Added:
karaf/trunk/shell/web/src/main/
karaf/trunk/shell/web/src/main/java/
karaf/trunk/shell/web/src/main/java/org/
karaf/trunk/shell/web/src/main/java/org/apache/
karaf/trunk/shell/web/src/main/java/org/apache/karaf/
karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/
karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/
karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java (with props)
karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java (with props)
Added: karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java?rev=1057856&view=auto
==============================================================================
--- karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java (added)
+++ karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java Tue Jan 11 20:35:32 2011
@@ -0,0 +1,36 @@
+/**
+ *
+ */
+package org.apache.karaf.shell.web;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+/**
+ * @author Achim
+ *
+ */
+public class WebEventHandler implements EventHandler {
+
+ private final Map<Long, String> bundleEvents = new HashMap<Long, String>();
+
+ /* (non-Javadoc)
+ * @see org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
+ */
+ public void handleEvent(Event event) {
+ String topic = event.getTopic();
+ Long bundleID = (Long) event.getProperty("bundle.id");
+ getBundleEvents().put(bundleID, topic);
+ }
+
+ /**
+ * @return the bundleEvents
+ */
+ public Map<Long, String> getBundleEvents() {
+ return bundleEvents;
+ }
+
+}
Propchange: karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebEventHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java?rev=1057856&view=auto
==============================================================================
--- karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java (added)
+++ karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java Tue Jan 11 20:35:32 2011
@@ -0,0 +1,156 @@
+/**
+ *
+ */
+package org.apache.karaf.shell.web;
+
+import java.util.Map;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+import org.osgi.service.startlevel.StartLevel;
+
+@Command(scope = "web", name = "list", description = "Lists details for war bundles")
+public class WebListCommand extends OsgiCommandSupport {
+
+ private StartLevel startLevelService;
+
+ private WebEventHandler eventHandler;
+
+ /* (non-Javadoc)
+ * @see org.apache.karaf.shell.war.WarCommandSupport#doExecute(org.osgi.service.packageadmin.PackageAdmin)
+ */
+ @Override
+ protected Object doExecute() {
+ Bundle[] bundles = getBundleContext().getBundles();
+ Map<Long, String> bundleEvents = eventHandler.getBundleEvents();
+ if (bundles != null) {
+ String level = (startLevelService == null) ? "" : " Level ";
+ String webState = (bundleEvents == null || bundleEvents.isEmpty()) ? "" : " Web-State ";
+ String headers = " ID State ";
+ headers += webState + level + " Web-ContextPath Name";
+ System.out.println(headers);
+ for (int i = 0; i < bundles.length; i++) {
+ //First check if this bundle contains a webapp ctxt
+ String webappctxt = (String) bundles[i].getHeaders().get("Web-ContextPath");
+ if (webappctxt == null)
+ webappctxt = (String) bundles[i].getHeaders().get("Webapp-Context");//this one is used by pax-web but is deprecated.
+
+ if (webappctxt == null)
+ continue; //only list war archives.
+
+ webappctxt.trim();
+
+ // Get the bundle name or location.
+ String name = (String) bundles[i].getHeaders().get(Constants.BUNDLE_NAME);
+ // If there is no name, then default to symbolic name.
+ name = (name == null) ? bundles[i].getSymbolicName() : name;
+ // If there is no symbolic name, resort to location.
+ name = (name == null) ? bundles[i].getLocation() : name;
+ // Show bundle version if not showing location.
+ String version = (String) bundles[i].getHeaders().get(Constants.BUNDLE_VERSION);
+ name = ((version != null)) ? name + " (" + version + ")" : name;
+ long l = bundles[i].getBundleId();
+ String id = String.valueOf(l);
+ if (startLevelService == null) {
+ level = "";
+ }
+ else {
+ level = String.valueOf(startLevelService.getBundleStartLevel(bundles[i]));
+ }
+ while (level.length() < 5) {
+ level = " " + level;
+ }
+ while (id.length() < 4) {
+ id = " " + id;
+ }
+
+ //prepend ctxt with slash (looks better)
+ if (!webappctxt.startsWith("/"))
+ webappctxt = "/" + webappctxt;
+
+ while (webappctxt.length() < 24) {
+ webappctxt += " ";
+ }
+
+ String line = "[" + id + "] [" + getStateString(bundles[i]) + "]";
+ if (bundleEvents != null && !bundleEvents.isEmpty())
+ line += " ["+ getWebStateString(bundles[i]) +"] ";
+ line += " [" + level + "] [" + webappctxt + "] " + name;
+ System.out.println(line);
+ }
+ }
+ return null;
+
+ }
+
+ public String getStateString(Bundle bundle)
+ {
+ int state = bundle.getState();
+ if (state == Bundle.ACTIVE) {
+ return "Active ";
+ } else if (state == Bundle.INSTALLED) {
+ return "Installed ";
+ } else if (state == Bundle.RESOLVED) {
+ return "Resolved ";
+ } else if (state == Bundle.STARTING) {
+ return "Starting ";
+ } else if (state == Bundle.STOPPING) {
+ return "Stopping ";
+ } else {
+ return "Unknown ";
+ }
+ }
+
+ public String getWebStateString(Bundle bundle) {
+
+ long bundleId = bundle.getBundleId();
+ Map<Long, String> bundleEvents = eventHandler.getBundleEvents();
+ if (bundleEvents.containsKey(bundleId)) {
+ String topic = bundleEvents.get(bundleId);
+ topic = topic.substring(21);
+ if ("UNDEPLOYING".equalsIgnoreCase(topic))
+ return "Undeploying ";
+ else if ("DEPLOYING".equalsIgnoreCase(topic))
+ return "Deploying ";
+ else if ("DEPLOYED".equalsIgnoreCase(topic))
+ return "Deployed ";
+ else if ("FAILED".equalsIgnoreCase(topic))
+ return "Failed ";
+ else if ("UNDEPLOYED".equalsIgnoreCase(topic))
+ return "Undeployed ";
+ }
+
+ return "Unknown ";
+ }
+
+ /**
+ * @param startLevelService the startLevelService to set
+ */
+ public void setStartLevelService(StartLevel startLevelService) {
+ this.startLevelService = startLevelService;
+ }
+
+ /**
+ * @return the startLevelService
+ */
+ public StartLevel getStartLevelService() {
+ return startLevelService;
+ }
+
+ /**
+ * @param eventHandler the eventHandler to set
+ */
+ public void setEventHandler(WebEventHandler eventHandler) {
+ this.eventHandler = eventHandler;
+ }
+
+ /**
+ * @return the eventHandler
+ */
+ public WebEventHandler getEventHandler() {
+ return eventHandler;
+ }
+
+}
Propchange: karaf/trunk/shell/web/src/main/java/org/apache/karaf/shell/web/WebListCommand.java
------------------------------------------------------------------------------
svn:mime-type = text/plain