Examples of AspectWerkzDefinition


Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

    private File m_input = new File("src/test/newdef.xml");

    public void testIntroductionTag() {
        try {
            AspectWerkzDefinition aspectwerkz = (AspectWerkzDefinition)XmlParser.parseNoCache(m_input.toURL()).get(0);
            Iterator it = aspectwerkz.getIntroductionDefinitions().iterator();
            it.next();//skip "loggable"
            IntroductionDefinition introduction2 = (IntroductionDefinition)it.next();
            assertEquals("mixin", introduction2.getName());
            assertEquals("mixins.Mixin", introduction2.getInterface());
            assertEquals("mixins.MixinImpl", introduction2.getImplementation());
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

        }
    }

    public void testAdviceTag() {
        try {
            AspectWerkzDefinition aspectwerkz = (AspectWerkzDefinition)XmlParser.parseNoCache(m_input.toURL()).get(0);
            Iterator it = aspectwerkz.getAdviceDefinitions().iterator();
            AdviceDefinition advice1 = (AdviceDefinition)it.next();
            assertEquals("logging", advice1.getName());
            assertEquals("examples.logging.LoggingAdvice", advice1.getAdviceClassName());
            assertEquals("perClass", advice1.getDeploymentModel());
            assertEquals("log", advice1.getAttribute());
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

        }
    }

    public void testAspectTag() {
        try {
            AspectWerkzDefinition aspectwerkz = (AspectWerkzDefinition)XmlParser.parseNoCache(m_input.toURL()).get(0);
            Iterator it1 = aspectwerkz.getAspectDefinitions().iterator();
            it1.next();// SystemAspect @todo check this with Jonas (side effect of precedence fix)
            AspectDefinition aspect = (AspectDefinition)it1.next();
            assertEquals("Logger", aspect.getName());
            assertEquals("Service", aspect.getExtends());
            assertEquals("services.*", ((BindIntroductionRule)aspect.getBindIntroductionRules().get(0)).getExpression().getExpression());
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

        }
    }

    public void testPointcutTag() {
        try {
            final AspectWerkzDefinition aspectwerkz = (AspectWerkzDefinition)XmlParser.parseNoCache(m_input.toURL()).get(0);
            Iterator itl = aspectwerkz.getAspectDefinitions().iterator();
            itl.next(); // SystemAspect @todo validate with Jonas (side effect of precedence fix)
            Iterator it = ((AspectDefinition)itl.next()).getPointcutDefs().iterator();
            it.next();//skip "start"
            PointcutDefinition pointcut2 = (PointcutDefinition)it.next();
            assertEquals("method", pointcut2.getType());
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

     * Only to be used when ONE definition is used per JVM.
     *
     * @return the default system
     */
    public synchronized static System getDefaultSystem() {
        final AspectWerkzDefinition definition = DefinitionLoader.getDefinition(System.DEFAULT_SYSTEM);

        System system = null;
        try {
            system = (System)s_systems.get(System.DEFAULT_SYSTEM);
            if (system == null) {
                if (definition.isXmlDef()) {
                    //TODO: remove the sync bloc - unsafe see AW-98
                    synchronized (s_systems) {
//                        system = (System)XML_DEF_SYSTEM_CONSTRUCTOR.newInstance(
//                                new Object[]{System.DEFAULT_SYSTEM, definition}
//                        );
                        system = new org.codehaus.aspectwerkz.xmldef.XmlDefSystem(System.DEFAULT_SYSTEM, definition);
                        s_systems.put(System.DEFAULT_SYSTEM, system);
                    }
                }
                else if (definition.isAttribDef()) {
                    //TODO: remove the sync bloc - unsafe see AW-98
                    synchronized (s_systems) {
//                        system = (System)ATTRIB_DEF_SYSTEM_CONSTRUCTOR.newInstance(
//                                new Object[]{System.DEFAULT_SYSTEM, definition}
//                        );
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

     * @return the system for the UUID specified
     */
    public synchronized static System getSystem(final String uuid) {
        if (uuid == null) throw new IllegalArgumentException("uuid can not be null");

        final AspectWerkzDefinition definition = DefinitionLoader.getDefinition(uuid);

        System system = null;
        try {
            system = (System)s_systems.get(uuid);
            if (system == null) {
                if (definition.isXmlDef()) {
                    //TODO: remove the sync bloc - unsafe see AW-98
                    synchronized (s_systems) {
//                        system = (System)XML_DEF_SYSTEM_CONSTRUCTOR.newInstance(
//                                new Object[]{uuid, definition}
//                        );
                        system = new org.codehaus.aspectwerkz.xmldef.XmlDefSystem(uuid, definition);
                        s_systems.put(uuid, system);
                    }
                }
                else if (definition.isAttribDef()) {
                    //TODO: remove the sync bloc - unsafe see AW-98
                    synchronized (s_systems) {
//                        system = (System)ATTRIB_DEF_SYSTEM_CONSTRUCTOR.newInstance(
//                                new Object[]{uuid, definition}
//                        );
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

     */
    public void transformCode(final Context context, final Klass klass) {

        // loop over all the definitions
        for (Iterator it = m_definitions.iterator(); it.hasNext();) {
            AspectWerkzDefinition definition = (AspectWerkzDefinition)it.next();

            definition.loadAspects(context.getLoader());

            final ClassGen cg = klass.getClassGen();
            ClassMetaData classMetaData = BcelMetaDataMaker.
                    createClassMetaData(context.getJavaClass(cg));

            if (classFilter(definition, classMetaData, cg)) {
                return;
            }

            final InstructionFactory factory = new InstructionFactory(cg);
            final ConstantPoolGen cpg = cg.getConstantPool();
            final Method[] methods = cg.getMethods();

            // get the index for the <clinit> method (if there is one)
            boolean noClinitMethod = true;
            int indexClinit = -1;
            for (int i = 0; i < methods.length; i++) {
                if (methods[i].getName().equals("<clinit>")) {
                    indexClinit = i;
                    noClinitMethod = false;
                    break;
                }
            }

            // build and sort the method lookup list
            final List methodLookupList = new ArrayList();
            for (int i = 0; i < methods.length; i++) {
                Method method = methods[i];

                MethodMetaData methodMetaData = BcelMetaDataMaker.createMethodMetaData(methods[i]);
                if (methodFilter(definition, classMetaData, methodMetaData, method)) {
                    continue;
                }
                methodLookupList.add(methods[i]);
            }

            Collections.sort(methodLookupList, BCELMethodComparator.getInstance());

            final Map methodSequences = new HashMap();
            final List newMethods = new ArrayList();
            Method clInitMethod = null;
            boolean isClassAdvised = false;

            for (int i = 0; i < methods.length; i++) {
                Method method = methods[i];
                MethodMetaData methodMetaData = BcelMetaDataMaker.createMethodMetaData(method);

                if (methodFilter(definition, classMetaData, methodMetaData, method)
                        || !method.isStatic()) {
                    continue;
                }

                isClassAdvised = true;

                final MethodGen mg = new MethodGen(method, cg.getClassName(), cpg);

                // take care of identification of overloaded methods by
                // inserting a sequence number
                if (methodSequences.containsKey(method.getName())) {
                    int sequence = ((Integer)methodSequences.get(methods[i].getName())).intValue();
                    methodSequences.remove(method.getName());
                    sequence++;
                    methodSequences.put(method.getName(), new Integer(sequence));
                }
                else {
                    methodSequences.put(method.getName(), new Integer(1));
                }

                final int methodLookupId = methodLookupList.indexOf(method);
                final int methodSequence = ((Integer)methodSequences.get(method.getName())).intValue();

                addStaticJoinPointField(cpg, cg, mg, methodSequence);

                // get the join point controller
                final String controllerClassName = definition.getJoinPointController(
                        classMetaData, methodMetaData
                );

                if (noClinitMethod) {
                    // no <clinit> method exists
                    if (clInitMethod == null) {
                        clInitMethod = createClInitMethodWithStaticJoinPointField(
                                cpg, cg,
                                method,
                                factory,
                                methodSequence
                        );
                    }
                    else {
                        clInitMethod = createStaticJoinPointField(
                                cpg, cg, clInitMethod,
                                method,
                                factory,
                                methodSequence
                        );
                    }
                }
                else {
                    // we have a <clinit> method
                    methods[indexClinit] = createStaticJoinPointField(
                            cpg, cg, methods[indexClinit],
                            method,
                            factory,
                            methodSequence
                    );
                }

                // create a proxy method for the original method
                newMethods.add(createProxyMethod(
                        cpg, cg,
                        methodMetaData.getName(),
                        mg, factory,
                        methodLookupId,
                        methodSequence,
                        method.getAccessFlags(),
                        definition.getUuid(),
                        controllerClassName
                ));

                // add a prefix to the original method
                methods[i] = addPrefixToMethod(
                        mg, method, methodSequence, definition.getUuid()
                );

                mg.setMaxLocals();
                mg.setMaxStack();
            }
View Full Code Here

Examples of org.codehaus.aspectwerkz.definition.AspectWerkzDefinition

     */
    public void transformInterface(final Context context, final Klass klass) {

        // loop over all the definitions
        for (Iterator it = m_definitions.iterator(); it.hasNext();) {
            AspectWerkzDefinition definition = (AspectWerkzDefinition)it.next();

            definition.loadAspects(context.getLoader());

            final ClassGen cg = klass.getClassGen();
            ClassMetaData classMetaData = BcelMetaDataMaker.createClassMetaData(context.getJavaClass(cg));
            if (classFilter(cg, classMetaData, definition)) {
                return;
            }
            //todo: what is this cache for ? not compliant for 0.10
            //if (m_transformed.contains(cg.getClassName())) {
            //    return;
            //}
            //m_transformed.add(cg.getClassName());

            ConstantPoolGen cpg = cg.getConstantPool();
            InstructionFactory factory = new InstructionFactory(cg);

            if (definition.isAttribDef()) {
                org.codehaus.aspectwerkz.attribdef.transform.IntroductionTransformer.addMethodIntroductions(
                        definition, context, classMetaData, cg, cpg, factory, this
                );
            }
            else if (definition.isXmlDef()) {
                org.codehaus.aspectwerkz.xmldef.transform.IntroductionTransformer.addMethodIntroductions(
                        definition, context, cg, cpg, factory, this
                );
            }
        }
View Full Code Here
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.