Package org.apache.hivemind.service

Examples of org.apache.hivemind.service.ClassFab


        MockControl factoryc = newControl(ClassFactory.class);
        ClassFactory factory = (ClassFactory) factoryc.getMock();

        MockControl classfabc = newControl(ClassFab.class);
        ClassFab classfab = (ClassFab) classfabc.getMock();

        factory.newClass("$BaseComponent_97", BaseComponent.class);
        factoryc.setReturnValue(classfab);

        classfab.addInterface(PageDetachListener.class);

        replayControls();

        EnhancementOperation eo = new EnhancementOperationImpl(new DefaultClassResolver(), spec,
                BaseComponent.class, factory);
View Full Code Here


        IComponentSpecification spec = newSpec();

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();

        ClassFab fab = (ClassFab) newMock(ClassFab.class);

        cf.newClass("$BaseComponent_97", BaseComponent.class);

        cfc.setReturnValue(fab);

        fab.addField("fred", String.class);

        replayControls();

        EnhancementOperation eo = new EnhancementOperationImpl(new DefaultClassResolver(), spec,
                BaseComponent.class, cf);
View Full Code Here

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();

        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        cf.newClass("$BaseComponent_97", BaseComponent.class);

        cfc.setReturnValue(fab);

        // String because "FRED_VALUE" is a String

        fab.addField("fred", String.class);

        replayControls();

        EnhancementOperationImpl eo = new EnhancementOperationImpl(new DefaultClassResolver(),
                spec, BaseComponent.class, cf);

        assertEquals("fred", eo.addInjectedField("fred", "FRED_VALUE"));

        verifyControls();

        HashMap map = new HashMap();

        fab.addField("fred$0", HashMap.class);

        replayControls();

        assertEquals("fred$0", eo.addInjectedField("fred", map));

        verifyControls();

        BodyBuilder body = new BodyBuilder();
        body.begin();
        body.addln("fred = $1;");
        body.addln("fred$0 = $2;");
        body.end();

        fab.addConstructor(new Class[]
        { String.class, HashMap.class }, null, body.toString());
        fabc.setMatcher(new ArrayMatcher());

        replayControls();
View Full Code Here

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();

        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        // We force the uid to 97 in setUp()

        cf.newClass("$Insert_97", baseClass);

        cfc.setReturnValue(fab);

        fab.addMethod(Modifier.PUBLIC, sig, "method body");
        fabc.setReturnValue(null);

        replayControls();

        EnhancementOperation eo = new EnhancementOperationImpl(new DefaultClassResolver(), spec,
View Full Code Here

        IComponentSpecification spec = (IComponentSpecification) specc.getMock();

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();
        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        fab.addInterface(PageDetachListener.class);

        cf.newClass("$BaseComponent_97", BaseComponent.class);
        cfc.setReturnValue(fab);

        replayControls();

        EnhancementOperationImpl eo = new EnhancementOperationImpl(cr, spec, BaseComponent.class,
                cf);

        MethodSignature sig = EnhanceUtils.PAGE_DETACHED_SIGNATURE;

        eo.extendMethodImplementation(PageDetachListener.class, sig, "some-code();");

        verifyControls();

        replayControls();

        // Check that repeated calls do not
        // keep adding methods.

        eo.extendMethodImplementation(PageDetachListener.class, sig, "more-code();");

        verifyControls();

        fab.addMethod(Modifier.PUBLIC, sig, "{\n  some-code();\n  more-code();\n}\n");
        fabc.setReturnValue(null);

        fab.createClass();
        fabc.setReturnValue(BaseComponent.class);

        spec.getLocation();
        specc.setReturnValue(null);
View Full Code Here

        IComponentSpecification spec = (IComponentSpecification) specc.getMock();

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();
        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        cf.newClass("$BaseComponent_97", BaseComponent.class);
        cfc.setReturnValue(fab);

        replayControls();

        EnhancementOperationImpl eo = new EnhancementOperationImpl(cr, spec, BaseComponent.class,
                cf);

        MethodSignature sig = EnhanceUtils.FINISH_LOAD_SIGNATURE;

        eo.extendMethodImplementation(IComponent.class, sig, "some-code();");

        verifyControls();

        fab.addMethod(Modifier.PUBLIC, sig, "{\n  super.finishLoad($$);\n  some-code();\n}\n");
        fabc.setReturnValue(null);

        fab.createClass();
        fabc.setReturnValue(BaseComponent.class);

        spec.getLocation();
        specc.setReturnValue(null);
View Full Code Here

        IComponentSpecification spec = (IComponentSpecification) specc.getMock();

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();
        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        cf.newClass("$BaseComponent_97", BaseComponent.class);
        cfc.setReturnValue(fab);

        replayControls();

        EnhancementOperationImpl eo = new EnhancementOperationImpl(cr, spec, BaseComponent.class,
                cf);

        // A protected method
        MethodSignature sig = EnhanceUtils.CLEANUP_AFTER_RENDER_SIGNATURE;

        eo.extendMethodImplementation(IComponent.class, sig, "some-code();");

        verifyControls();

        fab.addMethod(
                Modifier.PUBLIC,
                sig,
                "{\n  super.cleanupAfterRender($$);\n  some-code();\n}\n");
        fabc.setReturnValue(null);

        fab.createClass();
        fabc.setReturnValue(BaseComponent.class);

        spec.getLocation();
        specc.setReturnValue(null);
View Full Code Here

        IComponentSpecification spec = (IComponentSpecification) specc.getMock();

        MockControl cfc = newControl(ClassFactory.class);
        ClassFactory cf = (ClassFactory) cfc.getMock();
        MockControl fabc = newControl(ClassFab.class);
        ClassFab fab = (ClassFab) fabc.getMock();

        cf.newClass("$ExitingAbstractMethodFixture_97", ExistingAbstractMethodFixture.class);
        cfc.setReturnValue(fab);

        replayControls();

        EnhancementOperationImpl eo = new EnhancementOperationImpl(cr, spec,
                ExistingAbstractMethodFixture.class, cf);

        MethodSignature sig = EnhanceUtils.PAGE_DETACHED_SIGNATURE;

        eo.extendMethodImplementation(PageDetachListener.class, sig, "some-code();");

        verifyControls();

        fab.addMethod(Modifier.PUBLIC, sig, "{\n  some-code();\n}\n");
        fabc.setReturnValue(null);

        fab.createClass();
        fabc.setReturnValue(BaseComponent.class);

        spec.getLocation();
        specc.setReturnValue(null);
View Full Code Here

                return;

            String getBody = null;
            String setBody;

            ClassFab classFab = _classFactory.newClass(ClassFabUtils.generateClassName(expression.getClass()), Object.class);
            classFab.addInterface(ExpressionAccessor.class);

            MethodSignature valueGetter = new MethodSignature(Object.class, "get", new Class[]{OgnlContext.class, Object.class}, null);
            MethodSignature valueSetter = new MethodSignature(void.class, "set", new Class[]{OgnlContext.class, Object.class, Object.class}, null);

            MethodSignature expressionSetter = new MethodSignature(void.class, "setExpression", new Class[]{Node.class}, null);

            // must evaluate expression value at least once if object isn't null

            if (root != null)
                Ognl.getValue(expression, context, root);

            try {

                getBody = generateGetter(context, classFab, valueGetter, expression, root);

            } catch (UnsupportedCompilationException uc) {

                // uc.printStackTrace();
                // The target object may not fully resolve yet because of a partial tree with a null somewhere, we
                // don't want to bail out forever because it might be enhancable on another pass eventually
                return;
            } catch (javassist.CannotCompileException e) {

                _log.error("Error generating OGNL getter for expression " + expression + " with root " + root + " and body:\n" + getBody, e);

                e.printStackTrace();

                generateFailSafe(context, expression, root);
                return;
            }

            try {

                classFab.addMethod(Modifier.PUBLIC, valueGetter, getBody);

            } catch (Throwable t) {

                _log.error("Error generating OGNL getter for expression " + expression + " with root " + root + " and body:\n" + getBody, t);

                t.printStackTrace();

                generateFailSafe(context, expression, root);
                return;
            }

            try {

                setBody = generateSetter(context, classFab, valueSetter, expression, root);

            } catch (UnsupportedCompilationException uc) {
               
                //_log.warn("Unsupported setter compilation caught: " + uc.getMessage() + " for expression: " + expression.toString(), uc);

                setBody = generateOgnlSetter(classFab, valueSetter);

                if (!classFab.containsMethod(expressionSetter)) {

                    classFab.addField("_node", Node.class);
                    classFab.addMethod(Modifier.PUBLIC, expressionSetter, "{ _node = $1; }");
                }
            }

            try {

                if (setBody == null) {
                    setBody = generateOgnlSetter(classFab, valueSetter);

                    if (!classFab.containsMethod(expressionSetter)) {

                        classFab.addField("_node", Node.class);
                        classFab.addMethod(Modifier.PUBLIC, expressionSetter, "{ _node = $1; }");
                    }
                }

                if (setBody != null)
                    classFab.addMethod(Modifier.PUBLIC, valueSetter, setBody);

                classFab.addConstructor(new Class[0], new Class[0], "{}");

                Class clazz = ((AbstractFab) classFab).createClass(true);

                expression.setAccessor((ExpressionAccessor) clazz.newInstance());

            catch (Throwable t) {

                _log.error("Error generating OGNL statements for expression " + expression + " with root " + root, t);
                t.printStackTrace();

                generateFailSafe(context, expression, root);
                return;
            }

            // need to set expression on node if the field was just defined.

            if (classFab.containsMethod(expressionSetter)) {

                expression.getAccessor().setExpression(expression);
            }

        }
View Full Code Here

    {
        if (expression.getAccessor() != null)
            return;
       
        try {
            ClassFab classFab = _classFactory.newClass(expression.getClass().getName() + expression.hashCode() + "Accessor", Object.class);
            classFab.addInterface(ExpressionAccessor.class);

            MethodSignature valueGetter = new MethodSignature(Object.class, "get", new Class[]{OgnlContext.class, Object.class}, null);
            MethodSignature valueSetter = new MethodSignature(void.class, "set", new Class[]{OgnlContext.class, Object.class, Object.class}, null);

            MethodSignature expressionSetter = new MethodSignature(void.class, "setExpression", new Class[]{Node.class}, null);

            if (!classFab.containsMethod(expressionSetter)) {

                classFab.addField("_node", Node.class);
                classFab.addMethod(Modifier.PUBLIC, expressionSetter, "{ _node = $1; }");
            }

            classFab.addMethod(Modifier.PUBLIC, valueGetter, generateOgnlGetter(classFab, valueGetter));
            classFab.addMethod(Modifier.PUBLIC, valueSetter, generateOgnlSetter(classFab, valueSetter));
           
            classFab.addConstructor(new Class[0], new Class[0], "{}");

            Class clazz = ((AbstractFab) classFab).createClass(true);

            expression.setAccessor((ExpressionAccessor) clazz.newInstance());

            // need to set expression on node if the field was just defined.

            if (classFab.containsMethod(expressionSetter)) {

                expression.getAccessor().setExpression(expression);
            }

        } catch (Throwable t) {
View Full Code Here

TOP

Related Classes of org.apache.hivemind.service.ClassFab

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.