Package org.apache.camel.spi

Examples of org.apache.camel.spi.PackageScanFilter


        if (log.isDebugEnabled()) {
            log.debug("Searching for implementations of {} in packages: {}", parent.getName(), Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AssignableToPackageScanFilter(parent));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here


            Loader() {
                super(null);
            }

            public void load(TypeConverterRegistry registry) throws TypeConverterLoaderException {
                PackageScanFilter test = new AnnotatedWithPackageScanFilter(Converter.class, true);
                Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
                Set<String> packages = getConverterPackages(bundle.getEntry(META_INF_TYPE_CONVERTER));

                if (LOG.isTraceEnabled()) {
                    LOG.trace("Found {} {} packages: {}", new Object[]{packages.size(), META_INF_TYPE_CONVERTER, packages});
                }
                // if we only have camel-core on the classpath then we have already pre-loaded all its type converters
                // but we exposed the "org.apache.camel.core" package in camel-core. This ensures there is at least one
                // packageName to scan, which triggers the scanning process. That allows us to ensure that we look for
                // META-INF/services in all the JARs.
                if (packages.size() == 1 && "org.apache.camel.core".equals(packages.iterator().next())) {
                    LOG.debug("No additional package names found in classpath for annotated type converters.");
                    // no additional package names found to load type converters so break out
                    return;
                }

                // now filter out org.apache.camel.core as its not needed anymore (it was just a dummy)
                packages.remove("org.apache.camel.core");

                for (String pkg : packages) {

                    if (StringHelper.hasUpperCase(pkg)) {
                        // its a FQN class name so load it directly
                        LOG.trace("Loading {} class", pkg);
                        try {
                            Class<?> clazz = bundle.loadClass(pkg);
                            if (test.matches(clazz)) {
                                classes.add(clazz);
                            }
                            // the class could be found and loaded so continue to next
                            continue;
                        } catch (Throwable t) {
                            // Ignore
                            LOG.trace("Failed to load " + pkg + " class due " + t.getMessage() + ". This exception will be ignored.", t);
                        }
                    }

                    // its not a FQN but a package name so scan for classes in the bundle
                    Enumeration<URL> e = bundle.findEntries("/" + pkg.replace('.', '/'), "*.class", true);
                    while (e != null && e.hasMoreElements()) {
                        String path = e.nextElement().getPath();
                        String externalName = path.substring(path.charAt(0) == '/' ? 1 : 0, path.indexOf('.')).replace('/', '.');
                        LOG.trace("Loading {} class", externalName);
                        try {
                            Class<?> clazz = bundle.loadClass(externalName);
                            if (test.matches(clazz)) {
                                classes.add(clazz);
                            }
                        } catch (Throwable t) {
                            // Ignore
                            LOG.trace("Failed to load " + externalName + " class due " + t.getMessage() + ". This exception will be ignored.", t);
View Full Code Here

    @Override
    protected BindyAbstractFactory createModelFactory(PackageScanClassResolver resolver) throws Exception {
       
        // Initialize the primary (body) model factory ignoring header and footer model classes
        PackageScanFilter defaultRecordScanFilter = new PackageScanFilter() {
            @Override
            public boolean matches(Class<?> type) {
                FixedLengthRecord record = type.getAnnotation(FixedLengthRecord.class);
                return record != null && !record.isFooter() && !record.isHeader();
            }
        };

        BindyFixedLengthFactory factory;
        if (getClassType() != null) {
            factory = new BindyFixedLengthFactory(resolver, defaultRecordScanFilter, getClassType());
        } else {
            factory = new BindyFixedLengthFactory(resolver, defaultRecordScanFilter, getPackages());
        }
       
        // Optionally initialize the header factory... using header model classes
        if (factory.hasHeader()) {
            PackageScanFilter headerScanFilter = new PackageScanFilter() {
                @Override
                public boolean matches(Class<?> type) {
                    FixedLengthRecord record = type.getAnnotation(FixedLengthRecord.class);
                    return record != null && record.isHeader();
                }
            };
           
            if (getClassType() != null) {
                this.headerFactory = new BindyFixedLengthFactory(resolver, headerScanFilter, getClassType());
            } else {
                this.headerFactory = new BindyFixedLengthFactory(resolver, headerScanFilter, getPackages());
            }
        }
       
        // Optionally initialize the footer factory... using footer model classes
        if (factory.hasFooter()) {
           
            PackageScanFilter footerScanFilter = new PackageScanFilter() {
                @Override
                public boolean matches(Class<?> type) {
                    FixedLengthRecord record = type.getAnnotation(FixedLengthRecord.class);
                    return record != null && record.isFooter();
                }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for annotations of {} in packages: {}", annotation.getName(), Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AnnotatedWithPackageScanFilter(annotation, true));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for annotations of {} in packages: {}", annotations, Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AnnotatedWithAnyPackageScanFilter(annotations, true));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for implementations of {} in packages: {}", parent.getName(), Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AssignableToPackageScanFilter(parent));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

                super(null);
            }

            @SuppressWarnings("unchecked")
            public void load(TypeConverterRegistry registry) throws Exception {
                PackageScanFilter test = new AnnotatedWithPackageScanFilter(Converter.class, true);
                Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
                Set<String> packages = getConverterPackages(bundle.getEntry(META_INF_TYPE_CONVERTER));
                for (String pkg : packages) {
                    Enumeration<URL> e = bundle.findEntries("/" + pkg.replace('.', '/'), "*.class", true);
                    while (e.hasMoreElements()) {
                        String path = e.nextElement().getPath();
                        String externalName = path.substring(path.charAt(0) == '/' ? 1 : 0, path.indexOf('.')).replace('/', '.');
                        try {
                            Class clazz = bundle.loadClass(externalName);
                            if (test.matches(clazz)) {
                                classes.add(bundle.loadClass(externalName));
                            }
                        } catch (Throwable t) {
                            // Ignore
                        }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for annotations of " + annotation.getName() + " in packages: " + Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AnnotatedWithPackageScanFilter(annotation, true));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for annotations of " + annotations + " in packages: " + Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AnnotatedWithAnyPackageScanFilter(annotations, true));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

        if (log.isDebugEnabled()) {
            log.debug("Searching for implementations of " + parent.getName() + " in packages: " + Arrays.asList(packageNames));
        }

        PackageScanFilter test = getCompositeFilter(new AssignableToPackageScanFilter(parent));
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        for (String pkg : packageNames) {
            find(test, pkg, classes);
        }
View Full Code Here

TOP

Related Classes of org.apache.camel.spi.PackageScanFilter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.