Author: rmannibucau
Date: Sat Dec 24 13:00:23 2011
New Revision: 1222965
URL: http://svn.apache.org/viewvc?rev=1222965&view=rev
Log:
OPENEJB-1719 adding deploy and undeploy karaf commands
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Deploy.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeployedBundles.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeploymentCommand.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/JndiOsgiCommand.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/ListEJBs.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Undeploy.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Line.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Lines.java
Removed:
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/
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
openejb/trunk/openejb/osgi/openejb-core-osgi/src/main/java/org/apache/openejb/core/osgi/impl/Deployer.java
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java?rev=1222965&r1=1222964&r2=1222965&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
Sat Dec 24 13:00:23 2011
@@ -19,7 +19,6 @@ package org.apache.openejb.assembler;
import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
-import java.net.URL;
import java.security.SecureRandom;
import java.util.Collection;
import java.util.Map;
@@ -40,14 +39,14 @@ import org.apache.openejb.config.AppModu
import org.apache.openejb.config.ConfigurationFactory;
import org.apache.openejb.config.DeploymentLoader;
import org.apache.openejb.config.DeploymentModule;
-import org.apache.openejb.config.ValidationException;
import org.apache.openejb.loader.SystemInstance;
-import org.apache.xbean.finder.ResourceFinder;
@Stateless(name = "openejb/Deployer")
@Remote(Deployer.class)
@TransactionManagement(BEAN)
public class DeployerEjb implements Deployer {
+ public static final String OPENEJB_DEPLOYER_FORCED_APP_ID_PROP =
"openejb.deployer.forced.appId";
+
private final static File uniqueFile;
static {
@@ -147,6 +146,9 @@ public class DeployerEjb implements Depl
}
AppInfo appInfo =
configurationFactory.configureApplication(appModule);
+ if (properties != null &&
properties.containsKey(OPENEJB_DEPLOYER_FORCED_APP_ID_PROP)) {
+ appInfo.appId =
properties.getProperty(OPENEJB_DEPLOYER_FORCED_APP_ID_PROP);
+ }
assembler.createApplication(appInfo);
return appInfo;
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=1222965&r1=1222964&r2=1222965&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 13:00:23 2011
@@ -126,6 +126,7 @@ public class Deployer implements BundleL
final ConfigurationFactory configurationFactory = new
ConfigurationFactory();
final AppInfo appInfo =
configurationFactory.configureApplication(appModule);
+ appInfo.appId = "bundle_" + bundle.getBundleId();
final Assembler assembler =
SystemInstance.get().getComponent(Assembler.class);
final AppContext appContext =
assembler.createApplication(appInfo, osgiCl);
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Deploy.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Deploy.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Deploy.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Deploy.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,25 @@
+package org.apache.openejb.karaf.command;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.openejb.assembler.Deployer;
+
+import java.io.File;
+
+@Command(scope = "openejb", name = "deploy", description = "deploy a JEE
file/directory")
+public class Deploy extends DeploymentCommand {
+ @Argument(index = 0, name = "path", description = "location of the archive
file/directory", required = true, multiValued = false)
+ private String path;
+
+ @Override
+ protected Object doExecute() throws Exception {
+ if (!new File(path).exists()) {
+ System.out.println(path + " doesn't exist");
+ return null;
+ }
+
+ lookup(Deployer.class, "openejb/DeployerBusinessRemote").deploy(path,
properties(path));
+
+ return null;
+ }
+}
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeployedBundles.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeployedBundles.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeployedBundles.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeployedBundles.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,23 @@
+package org.apache.openejb.karaf.command;
+
+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.console.table.Line;
+import org.apache.openejb.karaf.console.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/command/DeploymentCommand.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeploymentCommand.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeploymentCommand.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/DeploymentCommand.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,18 @@
+package org.apache.openejb.karaf.command;
+
+import org.apache.openejb.assembler.DeployerEjb;
+
+import java.io.File;
+import java.util.Properties;
+
+public abstract class DeploymentCommand extends JndiOsgiCommand {
+ protected Properties properties(final String path) {
+ final Properties properties = new Properties();
+
properties.setProperty(DeployerEjb.OPENEJB_DEPLOYER_FORCED_APP_ID_PROP,
moduleId(path));
+ return properties;
+ }
+
+ protected final String moduleId(String path) {
+ return path.replace("/", "_").replace(File.pathSeparatorChar, '_');
+ }
+}
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/JndiOsgiCommand.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/JndiOsgiCommand.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/JndiOsgiCommand.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/JndiOsgiCommand.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,24 @@
+package org.apache.openejb.karaf.command;
+
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.openejb.localclient.LocalInitialContextFactory;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.Properties;
+
+public abstract class JndiOsgiCommand extends OsgiCommandSupport {
+ public <T> T lookup(final Class<T> clazz, final String jndiName) throws
NamingException {
+ Properties p = new Properties();
+ p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
LocalInitialContextFactory.class.getName());
+
+ ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
+
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ try {
+ return (T) new InitialContext(p).lookup(jndiName);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCl);
+ }
+ }
+}
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/ListEJBs.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/ListEJBs.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/ListEJBs.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/ListEJBs.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,55 @@
+package org.apache.openejb.karaf.command;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.karaf.console.table.Line;
+import org.apache.openejb.karaf.console.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/command/Undeploy.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Undeploy.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Undeploy.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/command/Undeploy.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,29 @@
+package org.apache.openejb.karaf.command;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.openejb.AppContext;
+import org.apache.openejb.assembler.Deployer;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+
+@Command(scope = "openejb", name = "undeploy", description = "undeploy a JEE
file/directory")
+public class Undeploy extends DeploymentCommand {
+ @Argument(index = 0, name = "path", description = "location of the archive
file/directory", required = true, multiValued = false)
+ private String path;
+
+ @Override
+ protected Object doExecute() throws Exception {
+ final String moduleId = moduleId(path);
+ for (AppContext app :
SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts()) {
+ if (moduleId.equals(app.getId())) { // module id is used only to
check the correct app is deployed
+ lookup(Deployer.class,
"openejb/DeployerBusinessRemote").undeploy(path);
+ return null;
+ }
+ }
+
+ System.out.println(path + " application not found");
+
+ return null;
+ }
+}
Added:
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Line.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Line.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Line.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Line.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,64 @@
+package org.apache.openejb.karaf.console.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/console/table/Lines.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Lines.java?rev=1222965&view=auto
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Lines.java
(added)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/java/org/apache/openejb/karaf/console/table/Lines.java
Sat Dec 24 13:00:23 2011
@@ -0,0 +1,49 @@
+package org.apache.openejb.karaf.console.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;
+ }
+}
Modified:
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=1222965&r1=1222964&r2=1222965&view=diff
==============================================================================
---
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml
(original)
+++
openejb/trunk/openejb/osgi/openejb-karaf-commands/src/main/resources/OSGI-INF/blueprint/openejb-commands.xml
Sat Dec 24 13:00:23 2011
@@ -2,10 +2,16 @@
<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"/>
+ <action class="org.apache.openejb.karaf.command.ListEJBs"/>
</command>
<command name="openejb/bundles">
- <action class="org.apache.openejb.karaf.DeployedBundles"/>
+ <action class="org.apache.openejb.karaf.command.DeployedBundles"/>
+ </command>
+ <command name="openejb/deploy">
+ <action class="org.apache.openejb.karaf.command.Deploy"/>
+ </command>
+ <command name="openejb/undeploy">
+ <action class="org.apache.openejb.karaf.command.Undeploy"/>
</command>
</command-bundle>
</blueprint>
\ No newline at end of file