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 2016/09/26 16:24:21 UTC
tomee git commit: TOMEE-1944 --classes-filter for tomee embedded
Repository: tomee
Updated Branches:
refs/heads/master 40794d0d9 -> 920f6722a
TOMEE-1944 --classes-filter for tomee embedded
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/920f6722
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/920f6722
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/920f6722
Branch: refs/heads/master
Commit: 920f6722a2c799e754dd2876e7465f9403643d37
Parents: 40794d0
Author: rmannibucau <rm...@apache.org>
Authored: Mon Sep 26 18:24:05 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Mon Sep 26 18:24:05 2016 +0200
----------------------------------------------------------------------
.../apache/tomee/embedded/Configuration.java | 24 ++++++++++++++++++++
.../org/apache/tomee/embedded/Container.java | 8 +++++--
.../java/org/apache/tomee/embedded/Main.java | 10 ++++++++
3 files changed, 40 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/920f6722/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
index 5e6843b..e5b62fe 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
@@ -20,6 +20,7 @@ import org.apache.catalina.Realm;
import org.apache.catalina.connector.Connector;
import org.apache.openejb.loader.IO;
import org.apache.openejb.util.NetworkUtil;
+import org.apache.xbean.finder.filter.Filter;
import org.apache.xbean.recipe.ObjectRecipe;
import java.io.File;
@@ -70,6 +71,8 @@ public class Configuration {
private boolean http2;
+ private Filter classesFilter;
+
private final Collection<Connector> connectors = new ArrayList<>();
/**
@@ -175,6 +178,14 @@ public class Configuration {
if (tempDir != null) {
setTempDir(tempDir);
}
+ final String classesFilterType = config.getProperty("classesFilter");
+ if (classesFilterType != null) {
+ try {
+ setClassesFilter(Filter.class.cast(Thread.currentThread().getContextClassLoader().loadClass(classesFilterType).newInstance()));
+ } catch (final InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
final String conf = config.getProperty("conf");
if (conf != null) {
setConf(conf);
@@ -536,6 +547,19 @@ public class Configuration {
this.conf = conf;
}
+ public void setClassesFilter(final Filter filter) {
+ this.classesFilter = filter;
+ }
+
+ public Configuration classesFilter(final Filter filter) {
+ setClassesFilter(filter);
+ return this;
+ }
+
+ public Filter getClassesFilter() {
+ return classesFilter;
+ }
+
public interface ConfigurationCustomizer {
void customize(Configuration configuration);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/920f6722/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index a3c521d..d9cd483 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -85,6 +85,7 @@ import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import org.apache.xbean.finder.AnnotationFinder;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
+import org.apache.xbean.finder.filter.Filter;
import org.apache.xbean.finder.filter.Filters;
import org.apache.xbean.recipe.ObjectRecipe;
import org.codehaus.swizzle.stream.ReplaceStringsInputStream;
@@ -242,12 +243,15 @@ public class Container implements AutoCloseable {
final AnnotationFinder finder;
try {
final String filterContainerClasses = SystemInstance.get().getProperty("tomee.embedded.filter-container-classes");
+ Filter filter = configuration.getClassesFilter();
+ if (filter == null && (jarList.size() <= 4 || "true".equalsIgnoreCase(filterContainerClasses))) {
+ filter = new ContainerClassesFilter(configuration.getProperties());
+ }
finder = new FinderFactory.OpenEJBAnnotationFinder(
// skip container classes in scanning for shades
new WebappAggregatedArchive(webModule, jarList,
// see org.apache.openejb.config.DeploymentsResolver.ClasspathSearcher.cleanUpUrlSet()
- jarList.size() <= 4 || "true".equalsIgnoreCase(filterContainerClasses) ?
- new ContainerClassesFilter(configuration.getProperties()) /* shade */ : null))
+ filter))
.link();
SystemInstance.get().fireEvent(new TomEEEmbeddedScannerCreated(finder));
webModule.setFinder(finder);
http://git-wip-us.apache.org/repos/asf/tomee/blob/920f6722/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
index fc497ef..0cc7589 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
@@ -26,6 +26,7 @@ import org.apache.commons.cli.PosixParser;
import org.apache.openejb.loader.ProvisioningUtil;
import org.apache.openejb.loader.SystemInstance;
import org.apache.tomee.embedded.component.TomEEEmbeddedArgs;
+import org.apache.xbean.finder.filter.Filter;
import java.io.Closeable;
import java.io.File;
@@ -74,6 +75,7 @@ public class Main {
public static final String PRE_TASK = "pre-task";
public static final String INTERACTIVE = "interactive";
public static final String CLASSPATH_CONFIGURATION = "classpath-configuration";
+ public static final String CLASSES_FILTER = "classes-filter";
public static final String HELP = "help";
public static void main(final String[] args) {
@@ -259,6 +261,7 @@ public class Main {
options.addOption("i", INTERACTIVE, false, "should tomee start and wait for SIGTERM signal or wait for 'exit' to be entered");
options.addOption(null, CLASSPATH_CONFIGURATION, true, "a properties file containing the configuration to load");
options.addOption(null, SINGLE_CLASSLOADER, false, "if the application should use the same classloader as the boot one");
+ options.addOption(null, CLASSES_FILTER, true, "A custom implementation of a xbean filter to exclude classes to not scan");
options.addOption("h", HELP, false, "show help");
return options;
}
@@ -283,6 +286,13 @@ public class Main {
if (args.hasOption(SIMPLE_LOG)) {
config.property("openejb.jul.forceReload", "true");
}
+ if (args.hasOption(CLASSES_FILTER)) {
+ try {
+ config.classesFilter(Filter.class.cast(Thread.currentThread().getContextClassLoader().loadClass(args.getOptionValue(CLASSES_FILTER)).newInstance()));
+ } catch (final InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
if (args.hasOption(PROPERTY)) {
for (final String opt : args.getOptionValues(PROPERTY)) {
final int sep = opt.indexOf('=');