Package br.com.caelum.vraptor.ioc.cdi.extensions

Source Code of br.com.caelum.vraptor.ioc.cdi.extensions.ModifyComponentExtension

package br.com.caelum.vraptor.ioc.cdi.extensions;

import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;

import org.apache.deltaspike.core.util.metadata.builder.AnnotatedTypeBuilder;

@SuppressWarnings("rawtypes")
public class ModifyComponentExtension implements Extension {

  @SuppressWarnings("unchecked")
  public void processAnnotatedType(@Observes final ProcessAnnotatedType pat) {
    if(accept(pat)){
      AnnotatedTypeBuilder builder = new AnnotatedTypeBuilder();   
      builder.readFromType(pat.getAnnotatedType());
      AddInjectToConstructorExtension addInjectToConstructorExtension = new AddInjectToConstructorExtension(builder);
      ComponentExtension componentExtension = new ComponentExtension(builder);
      ComponentFactoryExtension componentFactoryExtension = new ComponentFactoryExtension(builder);
      addInjectToConstructorExtension.processAnnotatedType(pat);
      componentExtension.processAnnotatedType(pat);
      componentFactoryExtension.addProducesToComponentFactory(pat);
      pat.setAnnotatedType(builder.create());
    }
  }

  private boolean accept(ProcessAnnotatedType pat) {
    Class type = pat.getAnnotatedType().getJavaClass();
    return !type.isEnum() && !type.isInterface() && !type.isAnnotation();
  }

}
TOP

Related Classes of br.com.caelum.vraptor.ioc.cdi.extensions.ModifyComponentExtension

TOP
Copyright © 2018 www.massapi.com. 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.