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 2012/02/22 09:12:46 UTC
svn commit: r1292174 - in /openejb/trunk/openejb: ./ container/openejb-core/
examples/webapps/rest-example/ server/openejb-common-cli/
server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/
server/openejb-common-cli/src/main/resources/M...
Author: rmannibucau
Date: Wed Feb 22 08:12:45 2012
New Revision: 1292174
URL: http://svn.apache.org/viewvc?rev=1292174&view=rev
Log:
using scan.xml (renamed commands.xml for this usage) to get cli commands
Added:
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/
openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/commands.xml
Modified:
openejb/trunk/openejb/container/openejb-core/pom.xml
openejb/trunk/openejb/examples/webapps/rest-example/pom.xml
openejb/trunk/openejb/pom.xml
openejb/trunk/openejb/server/openejb-common-cli/pom.xml
openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java
Modified: openejb/trunk/openejb/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/pom.xml?rev=1292174&r1=1292173&r2=1292174&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/pom.xml (original)
+++ openejb/trunk/openejb/container/openejb-core/pom.xml Wed Feb 22 08:12:45 2012
@@ -517,7 +517,6 @@
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
- <version>0.0.1-SNAPSHOT</version>
<artifactId>xbean-xml</artifactId>
</dependency>
<dependency>
Modified: openejb/trunk/openejb/examples/webapps/rest-example/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/rest-example/pom.xml?rev=1292174&r1=1292173&r2=1292174&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/webapps/rest-example/pom.xml (original)
+++ openejb/trunk/openejb/examples/webapps/rest-example/pom.xml Wed Feb 22 08:12:45 2012
@@ -113,7 +113,7 @@
<artifactId>openjpa</artifactId>
<version>2.2.0</version>
</dependency>
- <dependency> <!-- to get the jee6 profile -->
+ <dependency> <!-- to get the jee6 profile without configuration -->
<groupId>org.apache.openejb</groupId>
<version>0.0.1-SNAPSHOT</version>
<artifactId>spi-helper-jee6-profile</artifactId>
Modified: openejb/trunk/openejb/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/pom.xml?rev=1292174&r1=1292173&r2=1292174&view=diff
==============================================================================
--- openejb/trunk/openejb/pom.xml (original)
+++ openejb/trunk/openejb/pom.xml Wed Feb 22 08:12:45 2012
@@ -499,6 +499,11 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>xbean-xml</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>${javaee-api.version}</version>
Modified: openejb/trunk/openejb/server/openejb-common-cli/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-common-cli/pom.xml?rev=1292174&r1=1292173&r2=1292174&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-common-cli/pom.xml (original)
+++ openejb/trunk/openejb/server/openejb-common-cli/pom.xml Wed Feb 22 08:12:45 2012
@@ -19,6 +19,10 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>xbean-xml</artifactId>
+ </dependency>
+ <dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>0.9.94</version>
Modified: openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java?rev=1292174&r1=1292173&r2=1292174&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java (original)
+++ openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java Wed Feb 22 08:12:45 2012
@@ -19,26 +19,34 @@ package org.apache.openejb.server.cli;
import jline.ConsoleReader;
import jline.FileNameCompletor;
import jline.SimpleCompletor;
-import org.apache.openejb.config.NewLoaderLogic;
import org.apache.openejb.server.cli.command.AbstractCommand;
import org.apache.openejb.server.cli.command.Command;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import org.apache.openejb.util.OpenEjbVersion;
-import org.apache.openejb.util.URLs;
-
+import org.apache.openejb.xbean.xml.XMLAnnotationFinderHelper;
import org.apache.xbean.finder.Annotated;
-import org.apache.xbean.finder.ClassFinder;
-import org.apache.xbean.finder.UrlSet;
+import org.apache.xbean.finder.IAnnotationFinder;
+import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.recipe.ObjectRecipe;
import org.apache.xbean.recipe.Option;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.net.URL;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
public class CliRunnable implements Runnable {
+ private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB_SERVER, CliRunnable.class);
+
+ public static final String SERVICE_FOLDER = "META-INF/org/apache/openejb/server";
+ public static final String SERVICE_FILE = "commands.xml";
+
private static final String BRANDING_FILE = "branding.properties";
private static final String WELCOME_KEY_PREFIX = "welcome_";
private static final String WELCOME_COMMON_KEY = WELCOME_KEY_PREFIX + "common";
@@ -77,24 +85,40 @@ public class CliRunnable implements Runn
// no-op
}
+ final ClassLoader loader = CliRunnable.class.getClassLoader();
try {
- final UrlSet forceCommonCli = new UrlSet(CliRunnable.class.getClassLoader()).matching(".*openejb-common-cli.*");
- UrlSet urls = new UrlSet(CliRunnable.class.getClassLoader());
- urls = NewLoaderLogic.applyBuiltinExcludes(urls);
- urls = URLs.cullSystemAndOpenEJBJars(urls);
- urls = urls.include(forceCommonCli);
+ final ResourceFinder finder = new ResourceFinder(SERVICE_FOLDER, loader);
+ final List<URL> urls = finder.findAll(SERVICE_FILE);
- final ClassFinder finder = new ClassFinder(CliRunnable.class.getClassLoader(), urls.getUrls());
- for (Annotated<Class<?>> cmd : finder.findMetaAnnotatedClasses(Command.class)) {
+ for (URL url : urls) {
+ final IAnnotationFinder commandFinder;
+ final String ext = url.toExternalForm();
try {
- final Command annotation = cmd.getAnnotation(Command.class);
- COMMANDS.put(annotation.name(), cmd.get());
+ final String jar = ext.substring(0, ext.length() - SERVICE_FILE.length() - SERVICE_FOLDER.length() - 1);
+ commandFinder = XMLAnnotationFinderHelper.finderFromXml(url.openStream(), loader, Arrays.asList(new URL(jar)));
} catch (Exception e) {
- // command ignored
+ LOGGER.error("can't parse command list in " + url.toExternalForm());
+ continue;
+ }
+
+ for (Annotated<Class<?>> cmd : commandFinder.findMetaAnnotatedClasses(Command.class)) {
+ try {
+ final Command annotation = cmd.getAnnotation(Command.class);
+ final String key = annotation.name();
+ if (!COMMANDS.containsKey(key)) {
+ COMMANDS.put(key, cmd.get());
+ } else {
+ LOGGER.warning("command " + key + " already exists, this one will be ignored (from " + url.toExternalForm() + ")");
+ }
+ } catch (Exception e) {
+ // command ignored
+ }
}
}
- } catch (Exception e) {
- // ignored
+ } catch (RuntimeException e) {
+ LOGGER.error("an error occured while getting commands", e);
+ } catch (IOException e) {
+ LOGGER.error("can't get commands");
}
}
Added: openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/commands.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/commands.xml?rev=1292174&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/commands.xml (added)
+++ openejb/trunk/openejb/server/openejb-common-cli/src/main/resources/META-INF/org/apache/openejb/server/commands.xml Wed Feb 22 08:12:45 2012
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scan>
+ <packages>
+ <package>org.apache.openejb.server.cli.command</package>
+ </packages>
+</scan>