[richfaces-svn-commits] JBoss Rich Faces SVN: r12003 - in trunk/framework/impl/src/main/java/org/ajax4jsf: renderkit and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Dec 23 15:04:48 EST 2008


Author: alexsmirnov
Date: 2008-12-23 15:04:48 -0500 (Tue, 23 Dec 2008)
New Revision: 12003

Modified:
   trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/component/ContextCallbackWrapper.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java
Log:
https://jira.jboss.org/jira/browse/RF-4432

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java	2008-12-23 18:52:44 UTC (rev 12002)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/AjaxViewRoot.java	2008-12-23 20:04:48 UTC (rev 12003)
@@ -540,7 +540,7 @@
 					.getSubmittedRegionClientId();
 			boolean invoked = false; 
 			if (submittedRegionClientId != null && !submittedRegionClientId.equals(JS_NULL) && !submittedRegionClientId.equals(getClientId(context))) {
-				invoked = invokeOnComponent(context, submittedRegionClientId, new ContextCallbackWrapper(_ajaxInvoker));
+				invoked = invokeOnComponent(context, submittedRegionClientId, _ajaxInvoker);
 			} 
 			// if container not found, use Root for encode.
 			// https://jira.jboss.org/jira/browse/RF-3975			

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/component/ContextCallbackWrapper.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/component/ContextCallbackWrapper.java	2008-12-23 18:52:44 UTC (rev 12002)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/component/ContextCallbackWrapper.java	2008-12-23 20:04:48 UTC (rev 12003)
@@ -29,38 +29,31 @@
 
 /**
  * @author Anton Belevich
- *
+ * 
  */
 public class ContextCallbackWrapper implements ContextCallback {
-    
-    ContextCallback callback;
-    
-    public ContextCallbackWrapper(ContextCallback callback) {
-	this.callback = callback;
-    }
-    
-    public void invokeContextCallback(FacesContext context, UIComponent target) {
-	if(isParentRendered(target)) {
-	    callback.invokeContextCallback(context, target);
+
+	ContextCallback callback;
+
+	public ContextCallbackWrapper(ContextCallback callback) {
+		this.callback = callback;
 	}
-    }
-    
-    public boolean isParentRendered( UIComponent target) {
-	List <UIComponent> componentsList = new ArrayList<UIComponent>();
-	UIComponent component = target;	
-	
-	while (component != null) {
-	    componentsList.add(component);
-	    component = component.getParent();
+
+	public void invokeContextCallback(FacesContext context, UIComponent target) {
+		if (isParentRendered(target)) {
+			callback.invokeContextCallback(context, target);
+		}
 	}
-	
-	for (int i = componentsList.size() - 1; i >= 0;  i--) {
-	    UIComponent processComponent = componentsList.get(i);
-	    if(!processComponent.isRendered()) {
-		return false;
-	    }
-	}
 
-	return true;
-    }
+	public boolean isParentRendered(UIComponent target) {
+		UIComponent component = target;
+
+		while (component != null) {
+			if (!component.isRendered()) {
+				return false;
+			}
+			component = component.getParent();
+		}
+		return true;
+	}
 }

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java	2008-12-23 18:52:44 UTC (rev 12002)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/renderkit/AjaxContainerRenderer.java	2008-12-23 20:04:48 UTC (rev 12003)
@@ -65,8 +65,7 @@
 
 	public static final String AJAX_UPDATE_HEADER = "Ajax-Update-Ids";
 
-	static final Log log = LogFactory
-			.getLog(AjaxContainerRenderer.class);
+	static final Log log = LogFactory.getLog(AjaxContainerRenderer.class);
 
 	public static final String AJAX_FLAG_HEADER = "Ajax-Response";
 
@@ -105,7 +104,7 @@
 	 */
 	public void encodeAjax(FacesContext context, UIComponent component)
 			throws IOException {
-		UIComponent root ;
+		UIComponent root;
 		// Iterate over all childrens, render it if nessesary...
 		log.debug(Messages.getMessage(Messages.RENDER_CHILDREN_AJAX_INFO));
 		AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
@@ -114,19 +113,31 @@
 		if (((AjaxContainer) component).isRenderRegionOnly()) {
 			root = component;
 		} else {
-			root = context.getViewRoot();			
+			root = context.getViewRoot();
 		}
 		String path = AjaxRendererUtils.getAbsoluteId(root);
 		// if(! (component instanceof NamingContainer)){
 		path = path.substring(0, path
 				.lastIndexOf(NamingContainer.SEPARATOR_CHAR) + 1);
-		encodeAjaxComponent(context, root, path, ids, renderedAreas);
+		if (isParentRendered(root)) {
+			encodeAjaxComponent(context, root, path, ids, renderedAreas);
+		} 
 		// Write information about encoded areas after submission.
 		AjaxRendererUtils.encodeAreas(context, component);
 	}
 
-	
-	
+	public boolean isParentRendered(UIComponent target) {
+		UIComponent component = target;
+
+		while (component != null) {
+			if (!component.isRendered()) {
+				return false;
+			}
+			component = component.getParent();
+		}
+		return true;
+	}
+
 	/*
 	 * always return true, since component must maintain set of rendered
 	 * components.
@@ -140,27 +151,29 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext,
-	 *      javax.faces.component.UIComponent)
+	 * @see
+	 * org.ajax4jsf.renderkit.RendererBase#doDecode(javax.faces.context.FacesContext
+	 * , javax.faces.component.UIComponent)
 	 */
 	protected void doDecode(FacesContext context, UIComponent component) {
 		String clientId = component.getClientId(context);
-		Map<String, String> paramMap = context.getExternalContext().getRequestParameterMap();
+		Map<String, String> paramMap = context.getExternalContext()
+				.getRequestParameterMap();
 		if (log.isDebugEnabled()) {
 			log.debug(Messages.getMessage(
 					Messages.DECODE_AJAX_REQUEST_STATUS_INFO, clientId));
-//			log.debug(Messages.getMessage(Messages.REQUEST_PARAMETERS_MAP,
-//					paramMap.toString()));
+			// log.debug(Messages.getMessage(Messages.REQUEST_PARAMETERS_MAP,
+			// paramMap.toString()));
 		}
 		Object ajaxParameter = paramMap.get(AJAX_PARAMETER_NAME);
 		AjaxContainer ajaxContainer = (AjaxContainer) component;
 		if (null != ajaxParameter && ajaxParameter.equals(clientId)) {
-				ajaxContainer.setSubmitted(true);
-				if(ajaxContainer.isSelfRendered()){
-					AjaxContext.getCurrentInstance(context).setSelfRender(true);
-				}
-				AjaxEvent event = new AjaxEvent(component);
-				component.queueEvent(event);
+			ajaxContainer.setSubmitted(true);
+			if (ajaxContainer.isSelfRendered()) {
+				AjaxContext.getCurrentInstance(context).setSelfRender(true);
+			}
+			AjaxEvent event = new AjaxEvent(component);
+			component.queueEvent(event);
 		} else {
 			ajaxContainer.setSubmitted(false);
 		}




More information about the richfaces-svn-commits mailing list