Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
   * contributors by the @authors tag. See the copyright.txt in the
   * distribution for a full listing of individual contributors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
  * http://www.apache.org/licenses/LICENSE-2.0
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.jboss.weld.environment.deployment.discovery.jandex;
 
 import java.util.List;
 import java.util.Set;
 
 import  org.jboss.jandex.AnnotationInstance;
 import  org.jboss.jandex.ClassInfo;
 import  org.jboss.jandex.CompositeIndex;
 import  org.jboss.jandex.DotName;
 import  org.jboss.jandex.IndexView;
 
An implementation of DiscoveryStrategy that is used when the jandex is available.

Author(s):
Matej Briškár
Martin Kouba
 
 
     static final String INDEX_ATTRIBUTE_NAME = JandexDiscoveryStrategy.class.getPackage().getName() + ".index";
 
     private static final int ANNOTATION= 0x00002000;
 
 
     private Set<DotName> beanDefiningAnnotations;
 
     private CompositeIndex cindex;
 
 
     public JandexDiscoveryStrategy(ResourceLoader resourceLoaderBootstrap bootstrapTypeDiscoveryConfiguration typeDiscoveryConfiguration) {
         super(resourceLoaderbootstrap);
         this. = typeDiscoveryConfiguration;
     }
 
     @Override
         return ;
     }
 
     @Override
     protected void beforeDiscovery(Collection<BeanArchiveBuilderbuilders) {
         List<IndexView> indexes = new ArrayList<IndexView>();
         for (BeanArchiveBuilder builder : builders) {
             IndexView index = (IndexView) builder.getAttribute();
             indexes.add(index);
         }
          = CompositeIndex.create(indexes);
          = new JandexClassFileServices(this);
     }
 
     @Override
         Iterator<StringclassIterator = builder.getClassIterator();
         while (classIterator.hasNext()) {
             String className = classIterator.next();
             ClassInfo cinfo = .getClassByName(DotName.createSimple(className));
             if (!containsBeanDefiningAnnotation(cinfo.annotations().keySet())) {
                 classIterator.remove();
             }
         }
         return builder.build();
     }
    private Set<DotName> buildBeanDefiningAnnotationSet(TypeDiscoveryConfiguration typeDiscoveryConfiguration, CompositeIndex index) {
        ImmutableSet.Builder<DotName> beanDefiningAnnotations = ImmutableSet.builder();
        for (Class<? extends Annotationannotation : typeDiscoveryConfiguration.getKnownBeanDefiningAnnotations()) {
            final DotName annotationDotName = DotName.createSimple(annotation.getName());
            if (isMetaAnnotation(annotation)) {
                // find annotations annotated with this meta-annotation
                for (AnnotationInstance instance : index.getAnnotations(annotationDotName)) {
                    if (instance.target() instanceof ClassInfo) {
                        ClassInfo classInfo = (ClassInfo) instance.target();
                        if ((classInfo.flags() & ) != 0) {
                            beanDefiningAnnotations.add(classInfo.name());
                        }
                    }
                }
            } else {
                beanDefiningAnnotations.add(annotationDotName);
            }
        }
        return beanDefiningAnnotations.build();
    }
    private boolean isMetaAnnotation(Class<? extends Annotationannotation) {
        Target target = annotation.getAnnotation(Target.class);
        if (target == null) {
            return false;
        }
        if (target.value() == null) {
            return false;
        }
        for (ElementType elementType : target.value()) {
            if (..equals(elementType)) {
                return true;
            }
        }
        return false;
    }
    private boolean containsBeanDefiningAnnotation(Set<DotName> annotations) {
        for (DotName name : annotations) {
            if (.contains(name)) {
                return true;
            }
        }
        return false;
    }
    public CompositeIndex getCompositeJandexIndex() {
        return ;
    }
New to GrepCode? Check out our FAQ X