Package org.apache.shale.clay.component.chain

Examples of org.apache.shale.clay.component.chain.ClayContext


            // this callback will give a hook to override
            // or alter the root display element by
            // using the getter and setter for the displayElementRoot
            if (this.getShapeValidator() != null) {

                ClayContext clayContext = new ClayContext();

                Map symbolTable = new TreeMap();
                symbolTable.putAll(getSymbols());
                clayContext.setSymbols(symbolTable);
                //evaluate nested symbols
                AbstractCommand.realizeSymbols(clayContext);

                //resolve the literal "@managed-bean-name"
                String expr = AbstractCommand.replaceMnemonic(clayContext, getShapeValidator());
                Class[] methodSignature = {
                        javax.faces.context.FacesContext.class,
                        javax.faces.component.UIComponent.class,
                        java.lang.Object.class };

                MethodBinding binding = getFacesContext().getApplication()
                    .createMethodBinding(expr, methodSignature);

                if (log.isDebugEnabled()) {
                    log
                    .debug(messages
                            .getMessage("clay.invoke.shapeValidator"));
                }

                Object[] args = { context, this, displayElementRoot };
                binding.invoke(context, args);

            }
        }

        // Recursively build the subtree and fixup references. The root
        // of the subview will be assigned to the child private property.

        ClayContext clayContext = new ClayContext();
        clayContext.setChild(null);
        clayContext.setDisplayElement(getDisplayElementRoot());
        clayContext.setJsfid(getJsfid());
        clayContext.setFacesContext(getFacesContext());
        clayContext.setJspIds(new TreeSet());

        Map symbolTable = new TreeMap();
        symbolTable.putAll(getDisplayElementRoot().getSymbols());
        symbolTable.putAll(getSymbols());
        clayContext.setSymbols(symbolTable);

        //evaluate nested symbols
        AbstractCommand.realizeSymbols(clayContext);

        clayContext.setRootElement(getDisplayElementRoot());
        clayContext.setParent(this);

        Catalog catalog = null;
        try {
            catalog = getCatalog();
        } catch (Exception e) {
View Full Code Here


    public void testNestedSymbolReplacement() {
       
       
        Map symbols = new TreeMap();
       
        ClayContext clayContext = new ClayContext();
        clayContext.setFacesContext(facesContext);
        clayContext.setSymbols(symbols);
       
        SymbolBean symbol = this.createSymbol("@a", "@b");
        symbols.put(symbol.getName(), symbol);
       
        symbol = this.createSymbol("@b", "@c");
View Full Code Here

       displayElement.setId("testId");
       displayElement.addAttribute(attr);
      
       assertNotNull("attribute case insensitive", displayElement.getAttribute("VaLue"));
      
       ClayContext clayContext = new ClayContext();
       clayContext.setFacesContext(facesContext);
       clayContext.setChild(child);
       clayContext.setAttribute(attr);
       clayContext.setDisplayElement(displayElement);
             
       Command command = new PropertyValueCommand();
       boolean isFinal = command.execute(clayContext);
       assertEquals("command finished", true, isFinal);      
       assertEquals("value = 10", child.getValue(), "10");

      
       child = (javax.faces.component.html.HtmlOutputText)
                               facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
       assertNotNull("javax.faces.HtmlOutputText", child);
       clayContext.setChild(child);
      
       servletContext.setAttribute("goodYear", "1969");
       attr.setBindingType(AttributeBean.BINDING_TYPE_VALUE);
       attr.setValue("#{goodYear}");

       isFinal = command.execute(clayContext);
       assertEquals("command finished", true, isFinal);      
       assertEquals("value = 1969", "1969", child.getValue());
      
       child = (javax.faces.component.html.HtmlOutputText)
                             facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
       assertNotNull("javax.faces.HtmlOutputText", child);
       clayContext.setChild(child);
      
       servletContext.setAttribute("ping", "pong");
       attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY);
       attr.setValue("#{ping}");

       isFinal = command.execute(clayContext);
       assertEquals("command finished", true, isFinal);      
       assertEquals("value = pong", child.getValue(), "pong");


       child = (javax.faces.component.html.HtmlOutputText)
                               facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
       assertNotNull("javax.faces.HtmlOutputText", child);
       clayContext.setChild(child);
      
       attr.setBindingType(AttributeBean.BINDING_TYPE_NONE);
       attr.setValue("#{forManfred}");

       isFinal = command.execute(clayContext);
View Full Code Here

           displayElement.setComponentType("javax.faces.HtmlOutputText");
           displayElement.setId("testId");
           displayElement.addAttribute(attr);
           displayElement.addSymbol(createSymbol("@value", "10"));
                     
           ClayContext clayContext = new ClayContext();
           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
           clayContext.setSymbols(displayElement.getSymbols());
          
           Command command = new PropertyValueCommand();
           boolean isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = 10", "10", child.getValue());

          
           // test a symbol value of an el value
           child = (javax.faces.component.html.HtmlOutputText)
                        facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
           assertNotNull("javax.faces.HtmlOutputText", child);

           displayElement.addSymbol(createSymbol("@value", "#{value}"));
           attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY);
           servletContext.setAttribute("value", "10");
         
           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
           clayContext.setSymbols(displayElement.getSymbols());
          
           isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = 10", "10", child.getValue());

          
           // test a symbol value with a null value symbol replacement
           child = (javax.faces.component.html.HtmlOutputText)
                 facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
           assertNotNull("javax.faces.HtmlOutputText", child);

           displayElement.addSymbol(createSymbol("@value", null));
           attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY);
         
           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
           clayContext.setSymbols(displayElement.getSymbols());
          
           isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = null", null, child.getValue());


           // test a symbol value with an empty String value. 
           // this will evaluate to null since it is a symbol replacement.
           child = (javax.faces.component.html.HtmlOutputText)
                     facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
           assertNotNull("javax.faces.HtmlOutputText", child);

           displayElement.addSymbol(createSymbol("@value", ""));
           attr.setBindingType(AttributeBean.BINDING_TYPE_EARLY);
         
           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
           clayContext.setSymbols(displayElement.getSymbols());
          
           isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = null", null, child.getValue());

           //no symbol replacement for a empty string - should return
           //an empty string.  This allows components like the selectItem
           //to create an empty select list pick.
           attr.setValue("")//empty string          
           child = (javax.faces.component.html.HtmlOutputText)
                        facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
           assertNotNull("javax.faces.HtmlOutputText", child);

           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
          
           isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = \"\"", "", child.getValue());

           //Case insensitive and reoccurring replacement
           attr.setValue("@TeSt1, @tEst1 never @test2; @test1, @teSt1 till ya @tesT3")//test multiple symbols          
           child = (javax.faces.component.html.HtmlOutputText)
                     facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
           assertNotNull("javax.faces.HtmlOutputText", child);

           displayElement.addSymbol(createSymbol("@test1", "rock"));
           displayElement.addSymbol(createSymbol("@test2", "stop"));
           displayElement.addSymbol(createSymbol("@test3", "drop"));

           clayContext.setFacesContext(facesContext);
           clayContext.setChild(child);
           clayContext.setAttribute(attr);
           clayContext.setDisplayElement(displayElement);
           // normally done in the AssignChildrenCommand
           clayContext.setSymbols(displayElement.getSymbols());
          
           isFinal = command.execute(clayContext);
           assertEquals("command finished", true, isFinal);      
           assertEquals("value = \"rock, rock never stop; rock, rock till ya drop\"",
                   "rock, rock never stop; rock, rock till ya drop", child.getValue());
View Full Code Here

        displayElement.setJsfid("inputText");
        displayElement.setComponentType("javax.faces.HtmlOutputText");
        displayElement.setId("@wynn");
        displayElement.addSymbol(createSymbol("@wynn", "test"));
       
        ClayContext clayContext = new ClayContext();
        clayContext.setFacesContext(facesContext);
        clayContext.setParent(parent);
        clayContext.setDisplayElement(displayElement);
        clayContext.setSymbols(displayElement.getSymbols());
        clayContext.setJspIds(new TreeSet());
               
        Command command = new CreateComponentCommand();
        boolean isFinal = command.execute(clayContext);
        assertEquals("command finished", false, isFinal);
       
        UIComponent child = (UIComponent) clayContext.getChild();
        assertNotNull("child", child);
       
        assertEquals("id = test", "test", child.getId());
       
       
        //null component id symbol replacement
        parent = (UIComponent)
             facesContext.getApplication().createComponent("javax.faces.NamingContainer");
        assertNotNull("javax.faces.NamingContainer", parent);
        parent.setId("parent");
       
        displayElement = new ComponentBean();
        displayElement.setJsfid("inputText");
        displayElement.setComponentType("javax.faces.HtmlOutputText");
        displayElement.setId("@wynn");
        displayElement.addSymbol(createSymbol("@wynn", null));
       
        clayContext = new ClayContext();
        clayContext.setFacesContext(facesContext);
        clayContext.setParent(parent);
        clayContext.setDisplayElement(displayElement);
        clayContext.setSymbols(displayElement.getSymbols());
        clayContext.setJspIds(new TreeSet());
               
        command = new CreateComponentCommand();
        try {
            isFinal = command.execute(clayContext);
            assertTrue("id replacement failed", false);
        } catch (RuntimeException e) {
            assertTrue("null component id",
                    e.getMessage().startsWith("The component symbol substitution failed for id \"@wynn\""));   
        }
       
        //missing component id symbol replacement
        parent = (UIComponent)
             facesContext.getApplication().createComponent("javax.faces.NamingContainer");
        assertNotNull("javax.faces.NamingContainer", parent);
        parent.setId("parent");
       
        displayElement = new ComponentBean();
        displayElement.setJsfid("inputText");
        displayElement.setComponentType("javax.faces.HtmlOutputText");
        displayElement.setId("@wynn");
       
        clayContext = new ClayContext();
        clayContext.setFacesContext(facesContext);
        clayContext.setParent(parent);
        clayContext.setDisplayElement(displayElement);
        clayContext.setSymbols(displayElement.getSymbols());
        clayContext.setJspIds(new TreeSet());
               
        command = new CreateComponentCommand();
        try {
            isFinal = command.execute(clayContext);
            assertTrue("id replacement failed", false);
View Full Code Here

        displayElement.setId("testId");
        displayElement.addAttribute(attr);
        displayElement.addSymbol(createSymbol("@[ab]", "43"));
        displayElement.addSymbol(createSymbol("@[a]", "67"));
            
        ClayContext clayContext = new ClayContext();
        clayContext.setFacesContext(facesContext);
        clayContext.setChild(child);
        clayContext.setAttribute(attr);
        clayContext.setDisplayElement(displayElement);
        // normally done in the AssignChildrenCommand
        clayContext.setSymbols(displayElement.getSymbols());
               
        Command command = new PropertyValueCommand();
        boolean isFinal = command.execute(clayContext);
        assertEquals("command finished", true, isFinal);      
        assertEquals("value = 6743", "6743", child.getValue());     

   
        //create a target component
        child = (javax.faces.component.html.HtmlOutputText)
                           facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
        assertNotNull("javax.faces.HtmlOutputText", child);

        attr.setValue("@{a}@{ab}")//symbolic attribute
        displayElement.addSymbol(createSymbol("@{ab}", "43"));
        displayElement.addSymbol(createSymbol("@{a}", "67"));

        clayContext.setChild(child);

        isFinal = command.execute(clayContext);
        assertEquals("command finished", true, isFinal);      
        assertEquals("value = 6743", "6743", child.getValue());     


       
        //create a target component
        child = (javax.faces.component.html.HtmlOutputText)
                           facesContext.getApplication().createComponent("javax.faces.HtmlOutputText");
        assertNotNull("javax.faces.HtmlOutputText", child);

        attr.setValue("@(a)@(ab)")//symbolic attribute
        displayElement.addSymbol(createSymbol("@(ab)", "43"));
        displayElement.addSymbol(createSymbol("@(a)", "67"));

        clayContext.setChild(child);

        isFinal = command.execute(clayContext);
        assertEquals("command finished", true, isFinal);      
        assertEquals("value = 6743", "6743", child.getValue());     
       
View Full Code Here

TOP

Related Classes of org.apache.shale.clay.component.chain.ClayContext

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.