You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/08/20 06:10:48 UTC

svn commit: r806043 - in /myfaces/core/trunk: api/src/main/resources/META-INF/ impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/ impl/src/test/java/org/apache/myfaces/view/facelets/ impl/src/test/java/org/apache/myfaces/view/facelets/t...

Author: lu4242
Date: Thu Aug 20 04:10:48 2009
New Revision: 806043

URL: http://svn.apache.org/viewvc?rev=806043&view=rev
Log:
MYFACES-2310 Implement Composite Component feature

Modified:
    myfaces/core/trunk/api/src/main/resources/META-INF/componentClass12.vm
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InterfaceHandler.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/HtmlTestCase.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/SelectTestCase.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/JstlCoreTestCase.java
    myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testComposite/simpleAttribute.xhtml
    myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttribute.xhtml

Modified: myfaces/core/trunk/api/src/main/resources/META-INF/componentClass12.vm
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/resources/META-INF/componentClass12.vm?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/resources/META-INF/componentClass12.vm (original)
+++ myfaces/core/trunk/api/src/main/resources/META-INF/componentClass12.vm Thu Aug 20 04:10:48 2009
@@ -98,6 +98,7 @@
 
 ## TODO: this condition should be checked for parent components
 ## and csv implements
+#if ($component.implements)
 #if ($component.implements == "javax.faces.component.behavior.ClientBehaviorHolder")
     static private final java.util.Collection<String> CLIENT_EVENTS_LIST = 
         java.util.Collections.unmodifiableCollection(
@@ -111,6 +112,7 @@
 #end
 #end
 #end
+#end
         ));
 
     public java.util.Collection<String> getEventNames()

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InterfaceHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InterfaceHandler.java?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InterfaceHandler.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/InterfaceHandler.java Thu Aug 20 04:10:48 2009
@@ -62,9 +62,20 @@
     @JSFFaceletAttribute
     private final TagAttribute _shortDescription;
     
+    /**
+     * Check if the BeanInfo instance created by this handler
+     * can be cacheable or not. 
+     */
     private boolean _cacheable;
     
-    private volatile BeanInfo _cachedBeanInfo;
+    /**
+     * Cached instance used by this component. Note here we have a 
+     * "racy single-check".If this field is used, it is supposed 
+     * the object cached by this handler is immutable, and this is
+     * granted if all properties not saved as ValueExpression are
+     * "literal". 
+     **/
+    private BeanInfo _cachedBeanInfo;
     
     public InterfaceHandler(TagConfig config)
     {

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java Thu Aug 20 04:10:48 2009
@@ -28,6 +28,7 @@
 import javax.faces.FacesException;
 import javax.faces.FactoryFinder;
 import javax.faces.application.ApplicationFactory;
+import javax.faces.application.ProjectStage;
 import javax.faces.context.ResponseWriter;
 import javax.faces.lifecycle.LifecycleFactory;
 import javax.faces.render.RenderKitFactory;
@@ -161,6 +162,8 @@
         StateUtils.initSecret(servletContext);
         externalContext.getApplicationMap().put(StateUtils.SERIAL_FACTORY,
                 new DefaultSerialFactory());
+        
+        servletContext.addInitParameter(ProjectStage.PROJECT_STAGE_PARAM_NAME, "UnitTest");
 
         RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder
                 .getFactory(FactoryFinder.RENDER_KIT_FACTORY);

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/HtmlTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/HtmlTestCase.java?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/HtmlTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/HtmlTestCase.java Thu Aug 20 04:10:48 2009
@@ -22,6 +22,8 @@
 import javax.el.MethodExpression;
 import javax.faces.component.ActionSource2;
 import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIOutput;
 import javax.faces.component.UIParameter;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.html.HtmlCommandButton;
@@ -30,6 +32,10 @@
 import javax.faces.component.html.HtmlPanelGrid;
 import javax.faces.context.FacesContext;
 
+import org.apache.myfaces.renderkit.html.HtmlButtonRenderer;
+import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
+import org.apache.myfaces.renderkit.html.HtmlGridRenderer;
+import org.apache.myfaces.renderkit.html.HtmlTextRenderer;
 import org.apache.myfaces.view.facelets.Facelet;
 import org.apache.myfaces.view.facelets.FaceletFactory;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
@@ -61,6 +67,14 @@
     @Override
     protected void setupRenderers() throws Exception
     {
+        renderKit.addRenderer(UIOutput.COMPONENT_FAMILY,
+                "javax.faces.Text", new HtmlTextRenderer());
+        renderKit.addRenderer(UIForm.COMPONENT_FAMILY,
+                "javax.faces.Form", new HtmlFormRenderer());
+        renderKit.addRenderer(HtmlCommandButton.COMPONENT_FAMILY,
+                "javax.faces.Button", new HtmlButtonRenderer());
+        renderKit.addRenderer(HtmlPanelGrid.COMPONENT_FAMILY,
+                "javax.faces.Grid", new HtmlGridRenderer());
     }    
     
     public void testCommandComponent() throws Exception {

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/SelectTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/SelectTestCase.java?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/SelectTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/html/SelectTestCase.java Thu Aug 20 04:10:48 2009
@@ -30,7 +30,10 @@
 import javax.faces.context.FacesContext;
 import javax.faces.convert.IntegerConverter;
 
+import org.apache.myfaces.renderkit.html.HtmlButtonRenderer;
 import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
+import org.apache.myfaces.renderkit.html.HtmlMenuRenderer;
+import org.apache.myfaces.renderkit.html.HtmlMessagesRenderer;
 import org.apache.myfaces.renderkit.html.HtmlTextRenderer;
 import org.apache.myfaces.view.facelets.Facelet;
 import org.apache.myfaces.view.facelets.FaceletFactory;
@@ -67,9 +70,15 @@
     protected void setupRenderers() throws Exception
     {
         renderKit.addRenderer(UIOutput.COMPONENT_FAMILY,
-                "javax.faces.Text", new HtmlTextRenderer());
+                "javax.faces.Text", new HtmlTextRenderer());        
         renderKit.addRenderer(UIForm.COMPONENT_FAMILY,
                 "javax.faces.Form", new HtmlFormRenderer());
+        renderKit.addRenderer(HtmlSelectOneMenu.COMPONENT_FAMILY,
+                "javax.faces.Menu", new HtmlMenuRenderer());        
+        renderKit.addRenderer(HtmlCommandButton.COMPONENT_FAMILY,
+                "javax.faces.Button", new HtmlButtonRenderer());
+        renderKit.addRenderer(HtmlMessages.COMPONENT_FAMILY,
+                "javax.faces.Messages", new HtmlMessagesRenderer());
     }
     
     public void testSelectOne() throws Exception

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/JstlCoreTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/JstlCoreTestCase.java?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/JstlCoreTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/JstlCoreTestCase.java Thu Aug 20 04:10:48 2009
@@ -25,11 +25,14 @@
 import java.util.Map;
 
 import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.html.HtmlCommandButton;
 import javax.faces.component.html.HtmlForm;
 import javax.faces.context.FacesContext;
 
+import org.apache.myfaces.renderkit.html.HtmlButtonRenderer;
+import org.apache.myfaces.renderkit.html.HtmlFormRenderer;
 import org.apache.myfaces.view.facelets.Facelet;
 import org.apache.myfaces.view.facelets.FaceletFactory;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
@@ -58,6 +61,10 @@
     @Override
     protected void setupRenderers() throws Exception
     {
+        renderKit.addRenderer(UIForm.COMPONENT_FAMILY,
+                "javax.faces.Form", new HtmlFormRenderer());
+        renderKit.addRenderer(HtmlCommandButton.COMPONENT_FAMILY,
+                "javax.faces.Button", new HtmlButtonRenderer());
     }
     
     public void testIf() throws Exception {

Modified: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testComposite/simpleAttribute.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testComposite/simpleAttribute.xhtml?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testComposite/simpleAttribute.xhtml (original)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testComposite/simpleAttribute.xhtml Thu Aug 20 04:10:48 2009
@@ -22,10 +22,11 @@
 </head>
 <body>
 <composite:interface>
-    <composite:attribute name="style" type="java.lang.String" required="true" />
+    <composite:attribute name="style" default="background:red"/>
+    <composite:attribute name="styleClass" />
 </composite:interface>
 <composite:implementation>
-    <h:outputText value="Hello World"/>
+    <h:outputText value="Hello World" style="#{cc.attrs.style}" styleClass="#{cc.attrs.styleClass}"/>
 </composite:implementation>
 </body>
 </html>
\ No newline at end of file

Modified: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttribute.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttribute.xhtml?rev=806043&r1=806042&r2=806043&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttribute.xhtml (original)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttribute.xhtml Thu Aug 20 04:10:48 2009
@@ -21,9 +21,10 @@
 <head>
 </head>
 <body>
-<testComposite:simpleAttribute>
+<testComposite:simpleAttribute styleClass="class1">
 </testComposite:simpleAttribute>
-<testComposite:simpleAttribute>
+
+<testComposite:simpleAttribute style="background:green">
 </testComposite:simpleAttribute>
 </body>
 </html>
\ No newline at end of file