/** * Filters the classes to be transformed. * * @param definition the definition * @param classMetaData the meta-data for the class * @param cg the class to filter * @return boolean true if the method should be filtered away */ private boolean classFilter( final AspectWerkzDefinition definition, final ClassMetaData classMetaData, final ClassGen cg) { if (cg.isInterface() || TransformationUtil.hasSuperClass( classMetaData, "org.codehaus.aspectwerkz.attribdef.aspect.Aspect") || TransformationUtil.hasSuperClass( classMetaData, "org.codehaus.aspectwerkz.xmldef.advice.AroundAdvice") || TransformationUtil.hasSuperClass( classMetaData, "org.codehaus.aspectwerkz.xmldef.advice.PreAdvice") || TransformationUtil.hasSuperClass( classMetaData, "org.codehaus.aspectwerkz.xmldef.advice.PostAdvice")) { return true; } String className = cg.getClassName(); if (definition.inExcludePackage(className)) { return true; } if (!definition.inIncludePackage(className)) { return true; } if (definition.hasExecutionPointcut(classMetaData) || definition.hasThrowsPointcut(classMetaData)) { return false; } return true; }
/** * Filters the methods to be transformed. * * @param definition the definition * @param classMetaData the class meta-data * @param method the method to filter * @return boolean */ private boolean methodFilter( final AspectWerkzDefinition definition, final ClassMetaData classMetaData, final MethodMetaData methodMetaData, final Method method) { if (method.isAbstract() || method.isNative() || method.getName().equals("<init>") || method.getName().equals("<clinit>") || method.getName().startsWith(TransformationUtil.ORIGINAL_METHOD_PREFIX) || method.getName().equals(TransformationUtil.GET_META_DATA_METHOD) || method.getName().equals(TransformationUtil.SET_META_DATA_METHOD) || method.getName().equals(TransformationUtil.CLASS_LOOKUP_METHOD) || method.getName().equals(TransformationUtil.GET_UUID_METHOD)) { return true; } else if (definition.hasExecutionPointcut(classMetaData, methodMetaData)) { return false; } else if (definition.hasThrowsPointcut(classMetaData, methodMetaData)) { return false; } else { return true; } }