Search in sources :

Example 1 with Filter

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;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) ZipEntry(java.util.zip.ZipEntry) LocalClient(org.apache.openejb.api.LocalClient) JarFile(java.util.jar.JarFile) OpenEJBException(org.apache.openejb.OpenEJBException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) Filter(org.apache.xbean.finder.filter.Filter) RemoteClient(org.apache.openejb.api.RemoteClient) JarFile(java.util.jar.JarFile) File(java.io.File) IAnnotationFinder(org.apache.xbean.finder.IAnnotationFinder) AnnotationFinder(org.apache.openejb.util.AnnotationFinder)

Example 2 with Filter

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();
}
Also used : MalformedURLException(java.net.MalformedURLException) Filter(org.apache.xbean.finder.filter.Filter) UrlSet(org.apache.xbean.finder.UrlSet) IOException(java.io.IOException)

Example 3 with Filter

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);
}
Also used : IncludeExcludeFilter(org.apache.xbean.finder.filter.IncludeExcludeFilter) PatternFilter(org.apache.xbean.finder.filter.PatternFilter) Filter(org.apache.xbean.finder.filter.Filter) ExcludeIncludeFilter(org.apache.xbean.finder.filter.ExcludeIncludeFilter)

Example 4 with Filter

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"));
}
Also used : ClassFilter(org.apache.xbean.finder.filter.ClassFilter) IncludeExcludeFilter(org.apache.xbean.finder.filter.IncludeExcludeFilter) Filter(org.apache.xbean.finder.filter.Filter) ExcludeIncludeFilter(org.apache.xbean.finder.filter.ExcludeIncludeFilter) IncludeExcludeFilter(org.apache.xbean.finder.filter.IncludeExcludeFilter)

Example 5 with Filter

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(""));
}
Also used : ClassFilter(org.apache.xbean.finder.filter.ClassFilter) IncludeExcludeFilter(org.apache.xbean.finder.filter.IncludeExcludeFilter) Filter(org.apache.xbean.finder.filter.Filter) ExcludeIncludeFilter(org.apache.xbean.finder.filter.ExcludeIncludeFilter)

Aggregations

Filter (org.apache.xbean.finder.filter.Filter)14 ExcludeIncludeFilter (org.apache.xbean.finder.filter.ExcludeIncludeFilter)9 IncludeExcludeFilter (org.apache.xbean.finder.filter.IncludeExcludeFilter)7 IOException (java.io.IOException)6 MalformedURLException (java.net.MalformedURLException)6 File (java.io.File)5 URL (java.net.URL)4 ArrayList (java.util.ArrayList)4 Archive (org.apache.xbean.finder.archive.Archive)4 AnnotationFinder (org.apache.xbean.finder.AnnotationFinder)3 FileArchive (org.apache.xbean.finder.archive.FileArchive)3 FilteredArchive (org.apache.xbean.finder.archive.FilteredArchive)3 ClassFilter (org.apache.xbean.finder.filter.ClassFilter)3 InputStream (java.io.InputStream)2 ObjectStreamException (java.io.ObjectStreamException)2 Serializable (java.io.Serializable)2 Annotation (java.lang.annotation.Annotation)2 ClassFileTransformer (java.lang.instrument.ClassFileTransformer)2 ManagementFactory (java.lang.management.ManagementFactory)2 AnnotatedElement (java.lang.reflect.AnnotatedElement)2