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