Author: konstantin.mishin
Date: 2008-06-16 13:30:35 -0400 (Mon, 16 Jun 2008)
New Revision: 9061
Added:
trunk/framework/api/src/main/java/org/richfaces/event/ComponentPhaseEventHandler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptorPhaseEventHandler.java
trunk/framework/impl/src/main/java/org/richfaces/util/ComponentPhaseEventHandlerUtils.java
trunk/framework/impl/src/main/resources/META-INF/services/org.richfaces.component.ComponentPhaseEventHandler
Removed:
trunk/framework/api/src/main/java/org/richfaces/component/ComponentPhaseEventHandler.java
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
trunk/framework/impl/src/main/java/org/richfaces/event/ComponentViewPhaseListener.java
Log:
RF-2815
Deleted:
trunk/framework/api/src/main/java/org/richfaces/component/ComponentPhaseEventHandler.java
===================================================================
---
trunk/framework/api/src/main/java/org/richfaces/component/ComponentPhaseEventHandler.java 2008-06-16
16:12:20 UTC (rev 9060)
+++
trunk/framework/api/src/main/java/org/richfaces/component/ComponentPhaseEventHandler.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -1,9 +0,0 @@
-package org.richfaces.component;
-
-import javax.faces.event.PhaseEvent;
-
-public interface ComponentPhaseEventHandler {
-
- void beforePhase(PhaseEvent event);
-
-}
Added:
trunk/framework/api/src/main/java/org/richfaces/event/ComponentPhaseEventHandler.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/event/ComponentPhaseEventHandler.java
(rev 0)
+++
trunk/framework/api/src/main/java/org/richfaces/event/ComponentPhaseEventHandler.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -0,0 +1,12 @@
+package org.richfaces.event;
+
+import java.io.Serializable;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.PhaseEvent;
+
+public interface ComponentPhaseEventHandler extends Serializable {
+
+ void beforePhase(UIComponent component, PhaseEvent event);
+
+}
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java 2008-06-16
16:12:20 UTC (rev 9060)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -22,12 +22,11 @@
package org.ajax4jsf.application;
import java.io.IOException;
-import java.util.Map;
+import java.util.List;
import javax.faces.FacesException;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
-import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
@@ -40,7 +39,9 @@
import org.ajax4jsf.resource.InternetResourceBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.richfaces.event.ComponentPhaseEventHandler;
import org.richfaces.event.ComponentViewPhaseListener;
+import org.richfaces.util.ComponentPhaseEventHandlerUtils;
/**
* @author asmirnov(a)exadel.com (latest modification by $Author: alexsmirnov $)
@@ -91,7 +92,10 @@
ajaxContext.setAjaxRequest(false);
}
}
- riRoot.addPhaseListener(new ComponentViewPhaseListener());
+
+ List<ComponentPhaseEventHandler> handlers =
ComponentPhaseEventHandlerUtils.getHandlers();
+ ComponentViewPhaseListener phaseListener = new ComponentViewPhaseListener(handlers);
+ riRoot.addPhaseListener(phaseListener);
return riRoot;
}
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java 2008-06-16
16:12:20 UTC (rev 9060)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptor.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -61,7 +61,6 @@
import org.ajax4jsf.renderkit.AjaxChildrenRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.richfaces.component.ComponentPhaseEventHandler;
/**
* Base class for iterable components, like dataTable, Tomahawk dataList,
@@ -71,7 +70,7 @@
* @author shura
*
*/
-public abstract class UIDataAdaptor extends UIData implements AjaxDataEncoder,
ComponentPhaseEventHandler {
+public abstract class UIDataAdaptor extends UIData implements AjaxDataEncoder {
/**
*
Added:
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptorPhaseEventHandler.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptorPhaseEventHandler.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/component/UIDataAdaptorPhaseEventHandler.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -0,0 +1,30 @@
+/**
+ *
+ */
+package org.ajax4jsf.component;
+
+import javax.faces.component.UIComponent;
+import javax.faces.event.PhaseEvent;
+
+import org.richfaces.event.ComponentPhaseEventHandler;
+
+public class UIDataAdaptorPhaseEventHandler implements
+ ComponentPhaseEventHandler {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -9027449995146628492L;
+
+ /* (non-Javadoc)
+ * @see
org.richfaces.component.ComponentPhaseEventHandler#beforePhase(javax.faces.component.UIComponent,
javax.faces.event.PhaseEvent)
+ */
+ public void beforePhase(UIComponent component, PhaseEvent event) {
+ if (component instanceof UIDataAdaptor) {
+ ((UIDataAdaptor) component).beforePhase(event);
+
+ }
+
+ }
+
+}
Modified:
trunk/framework/impl/src/main/java/org/richfaces/event/ComponentViewPhaseListener.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/event/ComponentViewPhaseListener.java 2008-06-16
16:12:20 UTC (rev 9060)
+++
trunk/framework/impl/src/main/java/org/richfaces/event/ComponentViewPhaseListener.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -1,6 +1,7 @@
package org.richfaces.event;
import java.util.Iterator;
+import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
@@ -9,9 +10,6 @@
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
-import org.richfaces.component.ComponentPhaseEventHandler;
-
-
public class ComponentViewPhaseListener implements PhaseListener {
/**
@@ -19,13 +17,19 @@
*/
private static final long serialVersionUID = -2437433246178955788L;
+ private List<ComponentPhaseEventHandler> handlers = null;
+
+ public ComponentViewPhaseListener(List<ComponentPhaseEventHandler> handlers) {
+ this.handlers = handlers;
+ }
+
public void afterPhase(PhaseEvent event) {
}
private void doBeforePhase(PhaseEvent event, UIComponent component) {
- if (component.isRendered()) {
- if (component instanceof ComponentPhaseEventHandler) {
- ((ComponentPhaseEventHandler) component).beforePhase(event);
+ if (component.isRendered() && handlers != null) {
+ for (ComponentPhaseEventHandler handler : handlers) {
+ handler.beforePhase(component, event);
}
Iterator<UIComponent> children = component.getFacetsAndChildren();
while (children.hasNext()) {
Added:
trunk/framework/impl/src/main/java/org/richfaces/util/ComponentPhaseEventHandlerUtils.java
===================================================================
---
trunk/framework/impl/src/main/java/org/richfaces/util/ComponentPhaseEventHandlerUtils.java
(rev 0)
+++
trunk/framework/impl/src/main/java/org/richfaces/util/ComponentPhaseEventHandlerUtils.java 2008-06-16
17:30:35 UTC (rev 9061)
@@ -0,0 +1,61 @@
+package org.richfaces.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Scanner;
+
+import javax.faces.FacesException;
+
+import org.ajax4jsf.resource.util.URLToStreamHelper;
+import org.ajax4jsf.util.ServicesUtils;
+import org.richfaces.event.ComponentPhaseEventHandler;
+
+public class ComponentPhaseEventHandlerUtils{
+
+ static private List<ComponentPhaseEventHandler> handlers = null;
+
+ private ComponentPhaseEventHandlerUtils() {}
+
+ public static List<ComponentPhaseEventHandler> getHandlers() {
+ if (handlers == null) {
+ synchronized(ComponentPhaseEventHandlerUtils.class) {
+ if (handlers == null) {
+ init();
+ }
+ }
+ }
+ return handlers;
+ }
+
+ private static void init() {
+ handlers = new ArrayList<ComponentPhaseEventHandler>();
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ String resource =
"META-INF/services/org.richfaces.component.ComponentPhaseEventHandler";
+ try {
+ Enumeration<URL> resources = loader.getResources(resource);
+ while (resources.hasMoreElements()) {
+ InputStream stream = URLToStreamHelper.urlToStreamSafe(resources.nextElement());
+ Scanner scanner = new Scanner(stream);
+ while (scanner.hasNextLine()) {
+ String handlerClassName = scanner.nextLine();
+ try {
+ Class<?> handlerClass = ServicesUtils.loadClass(loader, handlerClassName);
+ Object handler = handlerClass.newInstance();
+ if (handler instanceof ComponentPhaseEventHandler) {
+ handlers.add((ComponentPhaseEventHandler) handler);
+ }
+ } catch (Exception e) {
+ throw new FacesException("Error create instance for class "+
handlerClassName, e);
+ }
+ }
+ scanner.close();
+ }
+ } catch (IOException e) {
+ throw new FacesException("Error load resource "+ resource, e);
+ }
+ }
+}
Added:
trunk/framework/impl/src/main/resources/META-INF/services/org.richfaces.component.ComponentPhaseEventHandler
===================================================================
---
trunk/framework/impl/src/main/resources/META-INF/services/org.richfaces.component.ComponentPhaseEventHandler
(rev 0)
+++
trunk/framework/impl/src/main/resources/META-INF/services/org.richfaces.component.ComponentPhaseEventHandler 2008-06-16
17:30:35 UTC (rev 9061)
@@ -0,0 +1 @@
+org.ajax4jsf.component.UIDataAdaptorPhaseEventHandler
\ No newline at end of file
Show replies by date