use of org.apache.xbean.finder.filter.Filter in project tomee by apache.
the class DeploymentLoader method checkAnnotations.
private Class<? extends DeploymentModule> checkAnnotations(final URL urls, final ClassLoader classLoader, final boolean scanPotentialEjbModules, final boolean scanPotentialClientModules) {
Class<? extends DeploymentModule> cls = null;
if (scanPotentialEjbModules || scanPotentialClientModules) {
final AnnotationFinder classFinder = new AnnotationFinder(classLoader, urls);
final Set<Class<? extends DeploymentModule>> otherTypes = new LinkedHashSet<>();
final AnnotationFinder.Filter filter = new AnnotationFinder.Filter() {
final String packageName = LocalClient.class.getName().replace("LocalClient", "");
@Override
public boolean accept(final String annotationName) {
if (scanPotentialClientModules && annotationName.startsWith(packageName)) {
if (LocalClient.class.getName().equals(annotationName)) {
otherTypes.add(ClientModule.class);
}
if (RemoteClient.class.getName().equals(annotationName)) {
otherTypes.add(ClientModule.class);
}
} else if (scanPotentialEjbModules) {
if (annotationName.startsWith("javax.ejb.")) {
if ("javax.ejb.Stateful".equals(annotationName)) {
return true;
}
if ("javax.ejb.Stateless".equals(annotationName)) {
return true;
}
if ("javax.ejb.Singleton".equals(annotationName)) {
return true;
}
if ("javax.ejb.MessageDriven".equals(annotationName)) {
return true;
}
} else if (scanManagedBeans && "javax.annotation.ManagedBean".equals(annotationName)) {
return true;
}
}
return false;
}
};
if (classFinder.find(filter)) {
cls = EjbModule.class;
// if it is a war just throw an error
try {
if (LOGGER.isWarningEnabled()) {
final File ar = URLs.toFile(urls);
if (!ar.isDirectory() && !ar.getName().endsWith("ar")) {
// guess no archive extension, check it is not a hidden war
try (JarFile war = new JarFile(ar)) {
final ZipEntry entry = war.getEntry("WEB-INF/");
if (entry != null) {
LOGGER.warning("you deployed " + urls.toExternalForm() + ", it seems it is a war with no extension, please rename it");
}
}
}
}
} catch (final Exception ignored) {
// no-op
}
}
if (otherTypes.size() > 0) {
// We may want some ordering/sorting if we add more type scanning
cls = otherTypes.iterator().next();
}
}
return cls;
}
use of org.apache.xbean.finder.filter.Filter in project tomee by apache.
the class DeploymentLoader method filterWebappUrls.
public static List<URL> filterWebappUrls(final URL[] webUrls, final Filter filter, final URL exclusions) {
Filter excludeFilter = null;
if (exclusions != null) {
try {
final String[] prefixes = NewLoaderLogic.readInputStreamList(exclusions.openStream());
excludeFilter = Filters.prefixes(prefixes);
} catch (final IOException e) {
LOGGER.warning("can't read " + exclusions.toExternalForm());
}
}
UrlSet urls = new UrlSet(webUrls);
try {
urls = NewLoaderLogic.applyBuiltinExcludes(urls, filter, excludeFilter);
} catch (final MalformedURLException e) {
return Arrays.asList(webUrls);
}
return urls.getUrls();
}
use of org.apache.xbean.finder.filter.Filter in project tomee by apache.
the class NewLoaderLogic method addAdditionalCustomFilter.
/**
* @param excluded a filter returning true for filtered jars.
* @param included a filter returning true for included jars.
*/
public static void addAdditionalCustomFilter(final Filter excluded, final Filter included) {
getExclusions();
// reinit the filter, we synchronized for consistency but there it should be thread safe anyway
if (excluded != null && included != null) {
synchronized (NewLoaderLogic.class) {
final Filter builtIn = new OptimizedExclusionFilter(getExclusions());
NewLoaderLogic.filter = new Filter() {
@Override
public boolean accept(final String name) {
return !included.accept(name) && (builtIn.accept(name) || excluded.accept(name));
}
};
}
} else if (excluded != null) {
synchronized (NewLoaderLogic.class) {
final Filter builtIn = new OptimizedExclusionFilter(getExclusions());
NewLoaderLogic.filter = new Filter() {
@Override
public boolean accept(final String name) {
return builtIn.accept(name) || excluded.accept(name);
}
};
}
} else if (included != null) {
synchronized (NewLoaderLogic.class) {
final Filter builtIn = new OptimizedExclusionFilter(getExclusions());
NewLoaderLogic.filter = new Filter() {
@Override
public boolean accept(final String name) {
return !included.accept(name) && builtIn.accept(name);
}
};
}
}
logExclusions(exclusions);
}
use of org.apache.xbean.finder.filter.Filter in project geronimo-xbean by apache.
the class FiltersTest method testIncludeExclude.
public void testIncludeExclude() {
Filter filter = new IncludeExcludeFilter(Filters.packages("org.foo", "org.bar"), Filters.packages("org.foo.util"));
assertTrue(filter.accept("org.foo.Red"));
assertTrue(filter.accept("org.bar.Red"));
assertFalse(filter.accept("com.bar.Red"));
assertFalse(filter.accept("org.foo.util.Blue"));
}
use of org.apache.xbean.finder.filter.Filter in project geronimo-xbean by apache.
the class FiltersTest method testPatterns.
public void testPatterns() throws Exception {
Filter filter = Filters.patterns("org\\.foo\\..*", ".*\\.Blue");
assertTrue(filter.accept("org.foo.Red"));
assertTrue(filter.accept("org.foo.Blue"));
assertTrue(filter.accept("org.bar.Blue"));
assertFalse(filter.accept("com.foo.Orange"));
assertFalse(filter.accept("net.foo.Redd"));
assertFalse(filter.accept(""));
}
Aggregations