Author: alexsmirnov
Date: 2008-04-07 18:02:11 -0400 (Mon, 07 Apr 2008)
New Revision: 7641
Added:
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxPushHandler.java
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
trunk/samples/seamIntegration/pom.xml
trunk/ui/core/src/main/config/component/push.xml
Log:
Fix
http://jira.jboss.com/jira/browse/RF-2960
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2008-04-07
18:39:36 UTC (rev 7640)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java 2008-04-07
22:02:11 UTC (rev 7641)
@@ -42,6 +42,7 @@
import javax.faces.event.PhaseListener;
import javax.faces.lifecycle.Lifecycle;
import javax.faces.lifecycle.LifecycleFactory;
+import javax.faces.render.Renderer;
import javax.faces.webapp.FacesServlet;
import org.ajax4jsf.Messages;
@@ -494,6 +495,37 @@
};
+ @Override
+ public void encodeBegin(FacesContext context) throws IOException {
+ processPhaseListeners(context, PhaseId.RENDER_RESPONSE, true);
+ // Copy/paste from UIComponentBase, so in no way for java to call super.super method.
+ String rendererType = getRendererType();
+ if (rendererType != null) {
+ Renderer renderer = this.getRenderer(context);
+ if (renderer != null) {
+ renderer.encodeBegin(context, this);
+ } else {
+ // TODO: log
+ }
+ }
+
+ }
+
+ @Override
+ public void encodeEnd(FacesContext context) throws IOException {
+ // Copy/paste from UIComponentBase, so in no way for java to call super.super method.
+ String rendererType = getRendererType();
+ if (rendererType != null) {
+ Renderer renderer = this.getRenderer(context);
+ if (renderer != null) {
+ renderer.encodeEnd(context, this);
+ } else {
+ // TODO: log
+ }
+ }
+ processPhaseListeners(context, PhaseId.RENDER_RESPONSE, false);
+ super.encodeEnd(context);
+ }
/*
* (non-Javadoc)
*
Modified: trunk/samples/seamIntegration/pom.xml
===================================================================
--- trunk/samples/seamIntegration/pom.xml 2008-04-07 18:39:36 UTC (rev 7640)
+++ trunk/samples/seamIntegration/pom.xml 2008-04-07 22:02:11 UTC (rev 7641)
@@ -81,29 +81,23 @@
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
- <version>2.0.0.GA</version>
+ <version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam-ui</artifactId>
- <version>2.0.0.GA</version>
+ <version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam-ioc</artifactId>
- <version>2.0.0.GA</version>
+ <version>2.0.1.GA</version>
</dependency>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam-debug</artifactId>
- <version>2.0.0.GA</version>
+ <version>2.0.1.GA</version>
</dependency>
</dependencies>
- <repositories>
- <repository>
- <id>repository.jboss.com</id>
- <
url>http://repository.jboss.com/maven2</url>
- </repository>
- </repositories>
</project>
Modified: trunk/ui/core/src/main/config/component/push.xml
===================================================================
--- trunk/ui/core/src/main/config/component/push.xml 2008-04-07 18:39:36 UTC (rev 7640)
+++ trunk/ui/core/src/main/config/component/push.xml 2008-04-07 22:02:11 UTC (rev 7641)
@@ -45,9 +45,9 @@
<displayname>Ajax Push</displayname>
<icon>icon</icon>
</tag>
- <taghandler generate="true">
+ <taghandler generate="false">
<classname>org.ajax4jsf.taglib.html.facelets.AjaxPushHandler</classname>
- <superclass>org.ajax4jsf.webapp.taglib.AjaxComponentHandler</superclass>
+ <!--
superclass>org.ajax4jsf.webapp.taglib.AjaxComponentHandler</superclass-->
</taghandler>
&ui_component_attributes;
&ui_command_attributes;
Added: trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxPushHandler.java
===================================================================
--- trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxPushHandler.java
(rev 0)
+++
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxPushHandler.java 2008-04-07
22:02:11 UTC (rev 7641)
@@ -0,0 +1,119 @@
+/**
+ * License Agreement.
+ *
+ * Rich Faces - Natural Ajax for Java Server Faces (JSF)
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.ajax4jsf.taglib.html.facelets;
+
+import java.io.OutputStream;
+import java.util.EventListener;
+
+import org.ajax4jsf.component.UIMediaOutput;
+
+import com.sun.facelets.FaceletContext;
+import com.sun.facelets.tag.MetaRule;
+import com.sun.facelets.tag.MetaRuleset;
+import com.sun.facelets.tag.Metadata;
+import com.sun.facelets.tag.MetadataTarget;
+import com.sun.facelets.tag.TagAttribute;
+import com.sun.facelets.tag.jsf.ComponentConfig;
+import com.sun.facelets.tag.jsf.ComponentHandler;
+
+/**
+ * @author shura (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ */
+public class AjaxPushHandler extends ComponentHandler {
+
+ private static final MetaRule ajaxPushMetaRule = new AjaxPushMetaRule();
+ /**
+ * @param config
+ */
+ public AjaxPushHandler(ComponentConfig config) {
+ super(config);
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.ajax4jsf.tag.AjaxComponentHandler#createMetaRuleset(java.lang.Class)
+ */
+ protected MetaRuleset createMetaRuleset(Class type) {
+ MetaRuleset metaRules = super.createMetaRuleset(type);
+ metaRules.addRule(ajaxPushMetaRule);
+ return metaRules;
+ }
+
+ /**
+ * @author shura (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ */
+ static class AjaxPushMetaRule extends MetaRule{
+
+ /**
+ *
+ */
+ public AjaxPushMetaRule() {
+ super();
+ }
+
+ /* (non-Javadoc)
+ * @see com.sun.facelets.tag.MetaRule#applyRule(java.lang.String,
com.sun.facelets.tag.TagAttribute, com.sun.facelets.tag.MetadataTarget)
+ */
+ public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
+ if (meta.isTargetInstanceOf(UIMediaOutput.class)) {
+
+
+ if ("eventProducer".equals(name)) {
+ return new AjaxPushActionMapper(attribute);
+ }
+ }
+ return null;
+ }
+
+ }
+ /**
+ * @author shura (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ *
+ */
+ static class AjaxPushActionMapper extends Metadata {
+
+ private static final Class<?>[] AJAX_PUSH_ACTION_SIG = new Class[]
{EventListener.class};
+
+ private final TagAttribute _send;
+ /**
+ * @param attribute
+ */
+ public AjaxPushActionMapper(TagAttribute attribute) {
+ _send = attribute;
+ }
+
+ /* (non-Javadoc)
+ * @see com.sun.facelets.tag.Metadata#applyMetadata(com.sun.facelets.FaceletContext,
java.lang.Object)
+ */
+ public void applyMetadata(FaceletContext ctx, Object instance) {
+ ((UIMediaOutput)
instance).setCreateContentExpression(this._send.getMethodExpression(ctx, null,
+ AJAX_PUSH_ACTION_SIG));
+ }
+
+ }
+
+}
Property changes on:
trunk/ui/core/src/main/java/org/ajax4jsf/taglib/html/facelets/AjaxPushHandler.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author