Converter Um Aspecto do AspectJ para java usando os annotations do Aspectj

0 respostas
Fernando_Romulo_da_S

Boa tarde galera!!!
Estou tentando converter meu “injetor” para usar as annotations do aspectj, pois criei um mini injetor de depencia ele ficou assim

public aspect InjetorObjetos {
    
    pointcut inject(Object s) :target(s) && (get(@Injetor * *.*));

    before(Object obj):inject(obj){

	try {

	    System.out.println("passei aqui");
	    
	    String nomeInstancia = null;

	    Field atributoClasse = obj.getClass().getDeclaredField(thisJoinPoint.getSignature().getName());

	    atributoClasse.setAccessible(true);

	    Object objIn = atributoClasse.get(obj);

	    if (objIn == null) {

		if (atributoClasse.isAnnotationPresent(Injetor.class)) {

		    Injetor in = atributoClasse.getAnnotation(Injetor.class);

		    if (in.instancia().equals("")) {

			nomeInstancia = atributoClasse.getName();

		    } else {

			nomeInstancia = in.instancia();
		    }

		    atributoClasse.setAccessible(true);

		    try {

	
			
			Object valor = null; // aqui eu busco de um pool de objetos
			atributoClasse.set(obj, valor);
			

		    } catch (IllegalStateException e) {

			//TODO fazer aqui seu mecanismo de Log  

		    } catch (Exception e) {

			//TODO fazer aqui seu mecanismo de Log  
		    }

		}

	    }

	} catch (Exception e) {

	    //TODO fazer aqui seu mecanismo de Log   

	    throw new RuntimeException(e);

	}
    }
}

agora estou tentando converter ele para usar apenas annotations, pois estou tendo problemas. Os outros projetos que usam o framework, nao “ativam” o aspecto na linguagem do aspectJ, entao criei um aspecto usando as annotations do aspectJ vejam:

@Aspect
public class Injetor2 {
    
 
    @Pointcut("@annotation(Injetor)")
    public void userUpdatingOperation() {
	
    }
      
    
    @Before("userUpdatingOperation()")
    public void doAccessCheck() {
	System.out.println("passei aqui 33");
    }    

}

Há uma annotation chamada “Injetor” vejam o codigo:

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Injetor {
    
    String instancia() default "";

}

Gostaria de saber como acessar o objeto que foi anotado com a anotation como no aspecto normal (com extensao “aj”) em annotations…
Obrigado e até mais.

Criado 21 de maio de 2010
Respostas 0
Participantes 1