You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/12/24 11:37:11 UTC

svn commit: r1222955 - in /openejb/trunk/openejb/osgi: ./ openejb-core-osgi/ openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/ openejb-feature/src/main/feature/ openejb-karaf-commands/ openejb-karaf-commands/src/ openejb-karaf-commands...

Author: rmannibucau
Date: Sat Dec 24 10:37:10 2011
New Revision: 1222955

URL: http://svn.apache.org/viewvc?rev=1222955&view=rev
Log:
adding openejb:list and openejb:bundles karaf commands

Added:
    openejb/trunk/openejb/osgi/openejb-karaf-commands/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/pom.xml
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/DeployedBundles.java
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/ListEJBs.java
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Line.java
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Lines.java
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/
    openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml
Modified:
    openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
    openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
    openejb/trunk/openejb/osgi/openejb-feature/src/main/feature/feature.xml
    openejb/trunk/openejb/osgi/pom.xml

Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml?rev=1222955&r1=1222954&r2=1222955&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml Sat Dec 24 10:37:10 2011
@@ -55,7 +55,7 @@
         <configuration>
           <instructions>
             <Bundle-Activator>org.apache.openejb.core.osgi.impl.Activator</Bundle-Activator>
-            <Export-Package>org.apache.openejb.core.osgi.*</Export-Package>
+            <Export-Package>org.apache.openejb.core.osgi.*;version=${openejb.osgi.export.version}</Export-Package>
             <Import-Package>
               '=META-INF.org^.apache^.openejb',
               javax.annotation;version="[1.1.0,2.0.0)";resolution:=optional,

Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java?rev=1222955&r1=1222954&r2=1222955&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java Sat Dec 24 10:37:10 2011
@@ -51,6 +51,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Properties;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -58,8 +59,7 @@ import java.util.concurrent.ConcurrentHa
  */
 public class Deployer implements BundleListener {
     private static final Logger LOGGER = LoggerFactory.getLogger(Deployer.class);
-    public static final String META_INF_NAME = "META-INF.";
-    public static final String SERVICES_NAME = "services.";
+    private static Deployer INSTANCE = null;
 
     private final Map<Bundle, List<ServiceRegistration>> registrations = new ConcurrentHashMap<Bundle, List<ServiceRegistration>>();
     private final Map<Bundle, String> paths = new ConcurrentHashMap<Bundle, String>();
@@ -68,6 +68,11 @@ public class Deployer implements BundleL
 
     public Deployer(Activator activator) {
         openejbActivator = activator;
+        INSTANCE = this;
+    }
+
+    public static Deployer instance() {
+        return INSTANCE;
     }
 
     public void bundleChanged(BundleEvent event) {
@@ -244,6 +249,10 @@ public class Deployer implements BundleL
         }
     }
 
+    public Set<Bundle> deployedBundles() {
+        return paths.keySet();
+    }
+
     private static String[] str(Class<?>[] itfs) {
         String[] itfsStr = new String[itfs.length];
         for (int i = 0; i < itfs.length; i++) {

Modified: openejb/trunk/openejb/osgi/openejb-feature/src/main/feature/feature.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-feature/src/main/feature/feature.xml?rev=1222955&r1=1222954&r2=1222955&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-feature/src/main/feature/feature.xml (original)
+++ openejb/trunk/openejb/osgi/openejb-feature/src/main/feature/feature.xml Sat Dec 24 10:37:10 2011
@@ -111,6 +111,7 @@
     <bundle>mvn:org.apache.openejb/openejb-jee/${project.version}</bundle>
     <bundle>mvn:org.apache.openejb/openejb-loader/${project.version}</bundle>
     <bundle>mvn:org.apache.openejb/openejb-core-osgi/${project.version}</bundle>
+    <bundle>mvn:org.apache.openejb/openejb-karaf-commands/${project.version}</bundle>
   </feature>
 
   <feature name="openejb-core" version="${project.version}">

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/pom.xml?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/pom.xml (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/pom.xml Sat Dec 24 10:37:10 2011
@@ -0,0 +1,62 @@
+<?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">
+  <parent>
+    <artifactId>osgi</artifactId>
+    <groupId>org.apache.openejb</groupId>
+    <version>4.0.0-beta-2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>openejb-karaf-commands</artifactId>
+  <name>OpenEJB :: OSGi :: Karaf Commands</name>
+  <packaging>bundle</packaging>
+
+  <properties>
+    <karaf.version>2.2.4</karaf.version>
+
+    <openejb.osgi.private.pkg>!*</openejb.osgi.private.pkg>
+    <openejb.osgi.export>org.apache.openejb.karaf*;version=${openejb.osgi.export.version}</openejb.osgi.export>
+    <openejb.osgi.import>
+      javax.management,
+      javax.management.loading,
+      org.apache.felix.gogo.commands;version="[0.10,1)",
+      org.apache.felix.gogo.commands.basic;version="[0.10,1)",
+      org.osgi.service.blueprint;version="[1.0.0,2.0.0)",
+      org.apache.karaf.shell.console;version="[2.2,3)",
+      org.apache.karaf.shell.console.completer;version="[2.2,3)",
+      org.apache.openejb.loader;version="[4.0,5.0)",
+      org.apache.openejb.spi;version="[4.0,5.0)",
+      org.apache.openejb.core.osgi.impl;version="[4.0,5.0)",
+      *
+    </openejb.osgi.import>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-core-osgi</artifactId>
+      <version>${project.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.karaf.shell</groupId>
+      <artifactId>org.apache.karaf.shell.console</artifactId>
+      <version>${karaf.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <version>${osgi.framework.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+      <version>${osgi.framework.version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/DeployedBundles.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/DeployedBundles.java?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/DeployedBundles.java (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/DeployedBundles.java Sat Dec 24 10:37:10 2011
@@ -0,0 +1,23 @@
+package org.apache.openejb.karaf;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.openejb.core.osgi.impl.Deployer;
+import org.apache.openejb.karaf.table.Line;
+import org.apache.openejb.karaf.table.Lines;
+import org.osgi.framework.Bundle;
+
+@Command(scope = "openejb", name = "bundles", description = "Lists all deployed bundles")
+public class DeployedBundles extends OsgiCommandSupport {
+    @Override
+    protected Object doExecute() throws Exception {
+        Lines lines = new Lines();
+        lines.add(new Line("Id", "Symbolic name", "Version"));
+        for (Bundle bundle : Deployer.instance().deployedBundles()) {
+            lines.add(new Line(Long.toString(bundle.getBundleId()), bundle.getSymbolicName(), bundle.getVersion().toString()));
+        }
+
+        lines.print(System.out);
+        return null;
+    }
+}

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/ListEJBs.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/ListEJBs.java?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/ListEJBs.java (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/ListEJBs.java Sat Dec 24 10:37:10 2011
@@ -0,0 +1,55 @@
+package org.apache.openejb.karaf;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.karaf.table.Line;
+import org.apache.openejb.karaf.table.Lines;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+import java.util.Arrays;
+
+@Command(scope = "openejb", name = "list", description = "Lists all EJBs.")
+public class ListEJBs extends OsgiCommandSupport {
+    @Override
+    protected Object doExecute() throws Exception {
+        final ContainerSystem cs = SystemInstance.get().getComponent(ContainerSystem.class);
+        Lines lines = new Lines();
+        lines.add(new Line("Name", "Class", "Type"));
+        for (BeanContext bc : cs.deployments()) {
+            if (BeanContext.Comp.class.equals(bc.getBeanClass())) {
+                continue;
+            }
+
+            lines.add(new Line(bc.getEjbName(), bc.getBeanClass().getName(), getType(bc)));
+        }
+
+        lines.print(System.out);
+
+        return null;
+    }
+
+    private static String getType(final BeanContext bc) {
+        boolean empty = true;
+        final StringBuilder sb = new StringBuilder();
+        if (bc.isLocalbean()) {
+            sb.append("LocalBean[").append(bc.getBeanClass()).append("]");
+            empty = false;
+        }
+        if (bc.getBusinessLocalInterface() != null) {
+            if (!empty) {
+                sb.append(", ");
+            }
+            sb.append("Local").append(Arrays.asList(bc.getBusinessLocalInterfaces()));
+            empty = false;
+        }
+        if (bc.getBusinessRemoteInterface() != null) {
+            if (!empty) {
+                sb.append(", ");
+            }
+            sb.append("Remote").append(Arrays.asList(bc.getBusinessRemoteInterfaces()));
+        }
+        return sb.toString();
+    }
+}

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Line.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Line.java?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Line.java (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Line.java Sat Dec 24 10:37:10 2011
@@ -0,0 +1,64 @@
+package org.apache.openejb.karaf.table;
+
+import java.io.PrintStream;
+
+public class Line {
+    public static final String COL_SEP = "|";
+    public static final String HEADER_CHAR = "=";
+    public static final String LINE_CHAR = "-";
+    public static final char EMPTY_CHAR = ' ';
+
+    private String[] columns;
+
+    public Line(String... columns) {
+        this.columns = columns;
+    }
+
+    public String[] getColumns() {
+        return columns;
+    }
+
+    public void print(final int[] max, final PrintStream out) {
+        print(max, out, false);
+    }
+
+    public void print(final int[] max, final PrintStream out, boolean header) {
+        final StringBuilder sb = new StringBuilder("");
+        for (int i = 0; i < max.length; i++) {
+            sb.append(EMPTY_CHAR);
+            int spaces = max[i] - columns[i].length();
+            for (int k = 0; k < spaces / 2; k++) {
+                sb.append(EMPTY_CHAR);
+            }
+            sb.append(columns[i]);
+            for (int k = 0; k < spaces - (spaces / 2); k++) {
+                sb.append(EMPTY_CHAR);
+            }
+            sb.append(EMPTY_CHAR).append(COL_SEP);
+        }
+
+        final String lineStr = sb.toString();
+
+        final StringBuilder sep = new StringBuilder("");
+        final String s;
+        if (header) {
+            s = HEADER_CHAR;
+        } else {
+            s = LINE_CHAR;
+        }
+        for (int i = 0; i < lineStr.length(); i++) {
+            sep.append(s);
+        }
+
+        if (header) {
+            printLine(out, sep.toString());
+        }
+
+        printLine(out, lineStr);
+        printLine(out, sep.toString());
+    }
+
+    private static void printLine(final PrintStream out, final String s) {
+        out.println(s);
+    }
+}

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Lines.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Lines.java?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Lines.java (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/table/Lines.java Sat Dec 24 10:37:10 2011
@@ -0,0 +1,49 @@
+package org.apache.openejb.karaf.table;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class Lines {
+    private List<Line> lines = new ArrayList<Line>();
+
+    public void add(Line line) {
+        if (!lines.isEmpty() && lines.iterator().next().getColumns().length != line.getColumns().length) {
+            throw new IllegalArgumentException("columns should have all the same size");
+        }
+        lines.add(line);
+    }
+
+    public void print(final PrintStream out) {
+        print(out, true);
+    }
+
+    public void print(final PrintStream out, boolean headers) {
+        final Iterator<Line> it = lines.iterator();
+        if (!it.hasNext()) {
+            return;
+        }
+
+        int[] max = max(lines);
+        it.next().print(max, out, headers);
+        while (it.hasNext()) {
+            it.next().print(max, out);
+        }
+    }
+
+    private static int[] max(final List<Line> lines) {
+        int[] max = new int[lines.iterator().next().getColumns().length];
+        for (Line line : lines) {
+            for (int i = 0; i < max.length; i++) {
+                int ll = line.getColumns()[i].length();
+                if (max[i] == 0) { // init
+                    max[i] = ll;
+                } else if (max[i] < ll) {
+                    max[i] = ll;
+                }
+            }
+        }
+        return max;
+    }
+}

Added: openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml?rev=1222955&view=auto
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml (added)
+++ openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml Sat Dec 24 10:37:10 2011
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
+  <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.0.0">
+    <command name="openejb/list">
+      <action class="org.apache.openejb.karaf.ListEJBs"/>
+    </command>
+    <command name="openejb/bundles">
+      <action class="org.apache.openejb.karaf.DeployedBundles"/>
+    </command>
+  </command-bundle>
+</blueprint>
\ No newline at end of file

Modified: openejb/trunk/openejb/osgi/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/pom.xml?rev=1222955&r1=1222954&r2=1222955&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/pom.xml (original)
+++ openejb/trunk/openejb/osgi/pom.xml Sat Dec 24 10:37:10 2011
@@ -16,5 +16,6 @@
   <modules>
     <module>openejb-core-osgi</module>
     <module>openejb-feature</module>
+    <module>openejb-karaf-commands</module>
   </modules>
 </project>