Package org.apache.commons.weaver.model

Examples of org.apache.commons.weaver.model.ScanResult


        final ScanRequest scanRequest =
            new ScanRequest().add(WeaveInterest.of(TestAnnotation.class, ElementType.TYPE))
                .add(WeaveInterest.of(TestAnnotation.class, ElementType.METHOD))
                .addSupertypes(AbstractTestBean.class, TestBeanInterface.class);

        final ScanResult scanResult = scanner.scan(scanRequest);

        for (WeavableClass<?> weavableClass : scanResult.getClasses().with(TestAnnotation.class)) {
            if (wovenClasses.add(weavableClass.getTarget())) {
                result = true;
            }
        }
        for (WeavableMethod<?> weavableMethod : scanResult.getMethods().with(TestAnnotation.class)) {
            if (wovenMethods.add(weavableMethod.getTarget())) {
                result = true;
            }
        }
        for (WeavableClass<?> weavableClass : scanResult.getClassesAssignableTo(TestBeanInterface.class)) {
            if (implementors.add(weavableClass.getTarget())) {
                result = true;
            }
        }
        for (WeavableClass<?> weavableClass : scanResult.getClassesAssignableTo(AbstractTestBean.class)) {
            if (subclasses.add(weavableClass.getTarget())) {
                result = true;
            }
        }
        return result;
View Full Code Here


    /**
     * {@inheritDoc}
     */
    @Override
    public ScanResult scan(final ScanRequest request) {
        final ScanResult result = new ScanResult();

        for (final WeaveInterest interest : request.getInterests()) {
            switch (interest.target) {
            case PACKAGE:
                for (final Annotated<Package> pkg : this.withAnnotations().findAnnotatedPackages(
                    interest.annotationType)) {
                    result.getWeavable(pkg.get()).addAnnotations(pkg.getAnnotations());
                }
                break;
            case TYPE:
                for (final Annotated<Class<?>> type : this.withAnnotations().findAnnotatedClasses(
                    interest.annotationType)) {
                    result.getWeavable(type.get()).addAnnotations(type.getAnnotations());
                }
                break;
            case METHOD:
                for (final Annotated<Method> method : this.withAnnotations().findAnnotatedMethods(
                    interest.annotationType)) {
                    result.getWeavable(method.get()).addAnnotations(method.getAnnotations());
                }
                break;
            case CONSTRUCTOR:
                for (final Annotated<Constructor<?>> ctor : this.withAnnotations().findAnnotatedConstructors(
                    interest.annotationType)) {
                    result.getWeavable(ctor.get()).addAnnotations(ctor.getAnnotations());
                }
                break;
            case FIELD:
                for (final Annotated<Field> fld : this.withAnnotations().findAnnotatedFields(interest.annotationType)) {
                    result.getWeavable(fld.get()).addAnnotations(fld.getAnnotations());
                }
                break;
            case PARAMETER:
                for (final Annotated<Parameter<Method>> parameter : this.withAnnotations()
                    .findAnnotatedMethodParameters(interest.annotationType)) {
                    result.getWeavable(parameter.get().getDeclaringExecutable())
                        .getWeavableParameter(parameter.get().getIndex()).addAnnotations(parameter.getAnnotations());
                }
                for (final Annotated<Parameter<Constructor<?>>> parameter : this.withAnnotations()
                    .findAnnotatedConstructorParameters(interest.annotationType)) {
                    result.getWeavable(parameter.get().getDeclaringExecutable())
                        .getWeavableParameter(parameter.get().getIndex()).addAnnotations(parameter.getAnnotations());
                }
                break;
            default:
                // should we log something?
                break;
            }
        }
        for (final Class<?> supertype : request.getSupertypes()) {
            for (final Annotated<Class<?>> type : this.withAnnotations().findAssignableTypes(supertype)) {
                result.getWeavable(type.get()).addAnnotations(type.getAnnotations());
            }
        }
        return inflater.inflate(result);
    }
View Full Code Here

     * @param scanner to use
     * @return {@link Set} of {@link Class}
     * @see #segregate(Iterable)
     */
    private Set<Class<?>> getBroadlyEligibleSubclasses(final Class<?> supertype, final Scanner scanner) {
        final ScanResult scanResult = scanner.scan(new ScanRequest().addSupertypes(supertype));
        final Set<Class<?>> result = new LinkedHashSet<Class<?>>();
        for (final WeavableClass<?> cls : scanResult.getClasses()) {
            final Class<?> subtype = cls.getTarget();
            final IneligibilityReason reason;
            if (!subtype.isAnonymousClass()) {
                reason = IneligibilityReason.NOT_ANONYMOUS;
            } else if (subtype.getDeclaredConstructors().length != 1) {
View Full Code Here

TOP

Related Classes of org.apache.commons.weaver.model.ScanResult

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.