Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2013, Red Hat, Inc., 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.as.weld.discovery;
 
 import java.util.Set;
 
 
 import  com.google.common.cache.CacheBuilder;
 import  com.google.common.cache.CacheLoader;
 import  com.google.common.cache.LoadingCache;
Implementation of ExtendedAnnotationDiscovery that uses composite Jandex index.

Author(s):
Jozef Hartinger
 
 
     private static final DotName INHERITED_NAME = DotName.createSimple(Inherited.class.getName());
 
     private class LoadAffectedClassNames extends CacheLoader<Class<? extends Annotation>, Set<String>> {
         @Override
         public Set<Stringload(Class<? extends Annotationkeythrows Exception {
             // we enumerate a set of all the annotations annotated by the given meta-annotation plus the given annotation itself
             Set<AnnotationTypefirstLevelAnnotations = new HashSet<AnnotationType>(.get(key));
             firstLevelAnnotations.add(new AnnotationType(DotName.createSimple(key.getName()), key.isAnnotationPresent(Inherited.class)));
 
             Collection<ClassInfoaffectedClasses = .getAffectedClasses(firstLevelAnnotations);
             return ImmutableSet.copyOf(Collections2.transform(affectedClasses.));
         }
     }
 
     private class LoadAnnotatedAnnotations extends CacheLoader<Class<? extends Annotation>, Set<AnnotationType>> {
         @Override
         public Set<AnnotationTypeload(Class<? extends Annotationkeythrows Exception {
             ImmutableSet.Builder<AnnotationTypebuilder = ImmutableSet.builder();
             for (AnnotationInstance instance : .getAnnotations(DotName.createSimple(key.getName()))) {
                 AnnotationTarget target = instance.target();
                 if (target instanceof ClassInfo) {
                     ClassInfo clazz = (ClassInfotarget;
                     if (Indices.isAnnotation(clazz)) {
                         builder.add(new AnnotationType(clazz.name(), clazz.annotations().containsKey()));
                     }
                 }
             }
             return builder.build();
         }
     }
 
     private final CompositeIndex index;
     private final RequiredAnnotationTargetDiscovery helper;
 
     // caching
     private final LoadingCache<Class<? extends Annotation>, Set<String>> affectedClasses = CacheBuilder.newBuilder().build(new LoadAffectedClassNames());
     private final LoadingCache<Class<? extends Annotation>, Set<AnnotationType>> annotatedAnnotations = CacheBuilder.newBuilder().build(new LoadAnnotatedAnnotations());
 
     public WeldAnnotationDiscovery(CompositeIndex index) {
         this. = index;
         this. = new RequiredAnnotationTargetDiscovery(IndexAdapter.forCompositeIndex(index));
     }
 
     @Override
     public boolean containsAnnotation(Class<?> javaClassClass<? extends Annotationannotation) {
         try {
             return .get(annotation).contains(javaClass.getName());
         } catch (ExecutionException e) {
             throw new RuntimeException(e);
         }
     }
    @Override
    public Set<StringgetAnnotationsAnnotatedWith(Class<? extends Annotationannotation) {
        try {
            return ImmutableSet.copyOf(Collections2.transform(.get(annotation), .));
        } catch (ExecutionException e) {
            throw new RuntimeException(e);
        }
    }
    @Override
    public void cleanupAfterBoot() {
        .cleanUp();
        .cleanUp();
    }
    @Override
    public void cleanup() {
        cleanupAfterBoot();
    }
New to GrepCode? Check out our FAQ X