Package javassist

Examples of javassist.CtBehavior


         {
            Object[] annotations = forceAnnotations ? member.getAnnotations() : member.getAvailableAnnotations();
            handleAnnotations(type, member, annotations, resource);
            if (member instanceof CtBehavior)
            {
               CtBehavior behavior = (CtBehavior)member;
               Object[][] paramAnnotations = forceAnnotations ? behavior.getParameterAnnotations() : behavior.getAvailableParameterAnnotations();
               for (int index = 0; index < paramAnnotations.length; index++)
               {
                  handleAnnotations(ElementType.PARAMETER, getBehaviorSignature(behavior, index), paramAnnotations[index], resource);                 
               }
            }
View Full Code Here


         {
            Object[] annotations = forceAnnotations ? member.getAnnotations() : member.getAvailableAnnotations();
            handleAnnotations(type, member, annotations, resource);
            if (member instanceof CtBehavior)
            {
               CtBehavior behavior = (CtBehavior)member;
               Object[][] paramAnnotations = forceAnnotations ? behavior.getParameterAnnotations() : behavior.getAvailableParameterAnnotations();
               for (int index = 0; index < paramAnnotations.length; index++)
               {
                  handleAnnotations(ElementType.PARAMETER, getBehaviorSignature(behavior, index), paramAnnotations[index], resource);                 
               }
            }
View Full Code Here

            )
            {
               return;
            }

            CtBehavior behavior = call.where();

            boolean hasPointcut = false;

            DeclareChecker.checkDeclares(manager, call, advisor);
           
View Full Code Here

                  }
               }
            }
            if (hasPointcut)
            {
               CtBehavior behavior = call.where();
               if (behavior instanceof CtMethod)
                  modifyMethod(call, classname);
               else if (behavior instanceof CtConstructor) modifyConstructor(call, classname);
            }
         }
View Full Code Here

/* 327 */         if ((ClassAdvisor.isWithoutAdvisement(methodName)) || (methodName.startsWith("_")) || (classname.startsWith("org.jboss.aop")) || (call.getMethodName().equals("class$")) || (!Instrumentor.isTransformable(this.callingClass)))
/*     */         {
/* 334 */           return;
/*     */         }
/*     */
/* 337 */         CtBehavior behavior = call.where();
/*     */
/* 339 */         boolean hasPointcut = false;
/*     */
/* 341 */         DeclareChecker.checkDeclares(CallerTransformer.this.manager, call, this.advisor);
/*     */
View Full Code Here

/*     */             }
/*     */           }
/*     */         }
/* 461 */         if (hasPointcut)
/*     */         {
/* 463 */           CtBehavior behavior = call.where();
/* 464 */           if ((behavior instanceof CtMethod))
/* 465 */             modifyMethod(call, classname);
/* 466 */           else if ((behavior instanceof CtConstructor)) modifyConstructor(call, classname);
/*     */         }
/*     */       }
View Full Code Here

/*  88 */       if (((newcall != null) && (declare.matchesCall(advisor, newcall))) || ((mcall != null) && (declare.matchesCall(advisor, mcall))))
/*     */       {
/*  90 */         if (mcall != null)
/*     */         {
/*  92 */           sb.append("method call:");
/*  93 */           CtBehavior caller = mcall.where();
/*  94 */           if ((caller instanceof CtConstructor))
/*     */           {
/*  96 */             CtConstructor con = (CtConstructor)caller;
/*  97 */             addConstructor(sb, con);
/*  98 */             sb.append(" calls ");
/*  99 */             addMethod(sb, mcall.getMethod());
/*     */           }
/* 101 */           else if ((caller instanceof CtMethod))
/*     */           {
/* 103 */             CtMethod met = (CtMethod)caller;
/* 104 */             addMethod(sb, met);
/* 105 */             sb.append(" calls ");
/* 106 */             addMethod(sb, mcall.getMethod());
/*     */           }
/*     */         }
/* 109 */         else if (newcall != null)
/*     */         {
/* 111 */           sb.append("constructor call: ");
/* 112 */           CtBehavior caller = newcall.where();
/* 113 */           if ((caller instanceof CtConstructor))
/*     */           {
/* 115 */             CtConstructor con = (CtConstructor)caller;
/* 116 */             addConstructor(sb, con);
/* 117 */             sb.append(" calls ");
View Full Code Here

                                }
                                catch (NullPointerException e) {
                                    return;
                                }

                                CtBehavior where = null;
                                try {
                                    where = handlerExpr.where();
                                }
                                catch (RuntimeException e) {
                                    // <clinit> access leads to a bug in Javassist
                                    where = ctClass.getClassInitializer();
                                }

                                MethodMetaData methodMetaData = null; //JavassistMetaDataMaker.createMethodMetaData(...);

                                ClassMetaData exceptionClassMetaData = JavassistMetaDataMaker.createClassMetaData(
                                        exceptionClass
                                );


                                // TODO: NO filtering on class and method is done (only exception class), needs to be implemented
                                if (!definition.hasHandlerPointcut(
                                        classMetaData, methodMetaData, exceptionClassMetaData
                                )) {
                                    return;
                                }

                                // call the wrapper method instead of the callee method
                                StringBuffer body = new StringBuffer();
                                body.append(TransformationUtil.JOIN_POINT_MANAGER_FIELD);
                                body.append('.');
                                body.append(TransformationUtil.PROCEED_WITH_HANDLER_JOIN_POINT_METHOD);
                                body.append('(');

                                // TODO: unique hash is needed, based on: executing class, executing method, catch clause (and sequence number?)
                                body.append(TransformationUtil.calculateHash(exceptionClass));
                                body.append(',');
                                body.append(m_joinPointIndex);
                                if (Modifier.isStatic(where.getModifiers())) {
                                    body.append(", $1, (Object)null, \"");
                                }
                                else {
                                    body.append(", $1, this, \"");
                                }
View Full Code Here

            ctClass.instrument(
                    new ExprEditor() {
                        public void edit(NewExpr newExpr) throws CannotCompileException {
                            try {
                                CtBehavior where = null;
                                try {
                                    where = newExpr.where();
                                }
                                catch (RuntimeException e) {
                                    // <clinit> access leads to a bug in Javassist
                                    where = ctClass.getClassInitializer();
                                }

                                // filter caller methods
                                if (methodFilterCaller(where)) {
                                    return;
                                }

                                CtConstructor ctConstructor = newExpr.getConstructor();
                                String calleeClassName = newExpr.getClassName();

                                // filter callee classes
                                if (!definition.inIncludePackage(calleeClassName)) {
                                    return;
                                }
                                // filter the constructors
                                if (constructorFilter(ctConstructor)) {
                                    return;
                                }

                                // create the class meta-data
                                ClassMetaData calleeSideClassMetaData;
                                try {
                                    calleeSideClassMetaData =
                                    JavassistMetaDataMaker.createClassMetaData(
                                            context.getClassPool().get(calleeClassName)
                                    );
                                }
                                catch (NotFoundException e) {
                                    throw new WrappedRuntimeException(e);
                                }

                                // create the method meta-data
                                ConstructorMetaData constructorMetaData =
                                        JavassistMetaDataMaker.createConstructorMetaData(newExpr.getConstructor());

                                // is this a caller side method pointcut?
                                if (definition.isPickedOutByCallPointcut(calleeSideClassMetaData, constructorMetaData)) {

                                    // check the callee class is not the same as target class, if that is the case
                                    // then we have have class loaded and set in the ___AW_clazz already
                                    String declaringClassMethodName = TransformationUtil.STATIC_CLASS_FIELD;

                                    CtClass declaringClass = ctConstructor.getDeclaringClass();
                                    if (!declaringClass.getName().equals(where.getDeclaringClass().getName())) {
                                        declaringClassMethodName =
                                        addCalleeMethodDeclaringClassField(ctClass, ctConstructor);
                                    }

                                    // call the wrapper method instead of the callee method
                                    StringBuffer body = new StringBuffer();
                                    body.append('{');
                                    if (ctConstructor.getParameterTypes().length > 0) {
                                        body.append("Object[] args = $args; ");
                                    }
                                    else {
                                        body.append("Object[] args = null; ");
                                    }
                                    body.append("Class declaringClassMethodName = ");
                                    body.append(declaringClassMethodName);
                                    body.append("; ");
                                    if (Modifier.isStatic(where.getModifiers())) {
                                        body.append("Object nullObject = null;");
                                    }

                                    body.append("$_ = ($r)");
                                    body.append(TransformationUtil.JOIN_POINT_MANAGER_FIELD);
                                    body.append('.');
                                    body.append(TransformationUtil.PROCEED_WITH_CALL_JOIN_POINT_METHOD);
                                    body.append('(');
                                    body.append(TransformationUtil.calculateHash(ctConstructor));
                                    body.append(',');
                                    body.append(m_joinPointIndex);
                                    body.append(", args, ");
                                    if (Modifier.isStatic(where.getModifiers())) {
                                        body.append("nullObject");
                                    }
                                    else {
                                        body.append("this");
                                    }
View Full Code Here

            )
            {
               return;
            }

            CtBehavior behavior = call.where();

            boolean hasPointcut = false;

            DeclareChecker.checkDeclares(manager, call, advisor);
           
View Full Code Here

TOP

Related Classes of javassist.CtBehavior

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.