[richfaces-svn-commits] JBoss Rich Faces SVN: r2788 - in trunk: framework/impl/src/main/java/org/ajax4jsf/webapp and 3 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Sep 5 15:12:37 EDT 2007


Author: alexsmirnov
Date: 2007-09-05 15:12:37 -0400 (Wed, 05 Sep 2007)
New Revision: 2788

Modified:
   trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
   trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java
   trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
   trunk/samples/seamEAR/pom.xml
   trunk/samples/seamIntegration/src/main/java/org/ajax4jsf/Bean.java
Log:
Restore processing onExpire/onError.
don't abort ignored requests ( ignoreDupResponse ), for a Seam 2.0 compability.


Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java	2007-09-05 18:20:43 UTC (rev 2787)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxViewHandler.java	2007-09-05 19:12:37 UTC (rev 2788)
@@ -58,7 +58,7 @@
 
 	private static final Log _log = LogFactory.getLog(AjaxViewHandler.class);
 
-	private static final String REDIRECTED = "org.ajax4jsf.view.REDIRECTED";
+	public static final String VIEW_EXPIRED = "org.ajax4jsf.view.EXPIRED";
 
 	public static final String VIEW_ID_KEY = "org.ajax4jsf.VIEW_ID";
 
@@ -68,7 +68,7 @@
 	public AjaxViewHandler(ViewHandler parent) {
 		super(parent);
 		if (_log.isDebugEnabled()) {
-		    _log.debug("Create instance of Ajax ViewHandler");
+			_log.debug("Create instance of Ajax ViewHandler");
 		}
 	}
 
@@ -96,7 +96,8 @@
 				// HACK - since only RI 1.1 use new for create ViewRoot instead
 				// of Application.createComponent,
 				// we can use it as flag for custom creation.
-				riRoot = (UIViewRoot) facesContext.getApplication().createComponent(UIViewRoot.COMPONENT_TYPE);
+				riRoot = (UIViewRoot) facesContext.getApplication()
+						.createComponent(UIViewRoot.COMPONENT_TYPE);
 				// fill properties from default.
 				riRoot.setViewId(root.getViewId());
 				riRoot.setLocale(root.getLocale());
@@ -107,11 +108,15 @@
 				}
 				riRoot.setRenderKitId(renderKitId);
 			}
-			if (ajaxContext.isAjaxRequest(facesContext)) {
-				// Remove ajax status - for navigation states, full page will be
-				// send.
+			// if (null ==
+			// facesContext.getExternalContext().getRequestMap().get(VIEW_EXPIRED))
+			// {
+			// Clear ajax request flag ( except new view creation )- for navigation states, full page will be
+			// send. 
+			if(null != facesContext.getViewRoot()){
 				ajaxContext.setAjaxRequest(false);
 			}
+			// }
 		}
 		return riRoot;
 	}
@@ -134,7 +139,7 @@
 			writer.startElement(HTML.SPAN_ELEM, null);
 			writer.writeAttribute(HTML.id_ATTRIBUTE, STATE_MARKER_KEY, null);
 			writer.writeAttribute(HTML.NAME_ATTRIBUTE, STATE_MARKER_KEY, null);
-//			writer.writeAttribute("style", "display:none;", null);
+			// writer.writeAttribute("style", "display:none;", null);
 			if (!ajaxContext.isSelfRender()) {
 				super.writeState(context);
 			}
@@ -153,43 +158,17 @@
 	public UIViewRoot restoreView(FacesContext context, String viewId) {
 		UIViewRoot viewRoot = super.restoreView(context, viewId);
 		ExternalContext externalContext = context.getExternalContext();
-		Map requestParameterMap = externalContext.getRequestParameterMap();
 		Map requestMap = externalContext.getRequestMap();
-/*		if (null == viewRoot) {
-			if (requestParameterMap
-					.containsKey(AjaxContainerRenderer.AJAX_PARAMETER_NAME)
-					&& !requestMap.containsKey(REDIRECTED)) {
-				// New view created for AJAX request - indicate session
-				// expiration.
-				// We need send special response to client and suggest reload
-				// page.
-				String actionURL = getActionURL(context, viewId);
-				// To avoid double call to redirect, if we have more then one
-				// handler in chain.
-				requestMap.put(REDIRECTED, Boolean.TRUE);
-				if (_log.isDebugEnabled()) {
-					_log
-							.debug("Detect session expiration in AJAX request - view don't restored, action URL is "
-									+ actionURL);
-				}
-				try {
-					Object response = externalContext.getResponse();
-					if (response instanceof HttpServletResponse) {
-						HttpServletResponse httpResponse = (HttpServletResponse) response;
-						// TODO - get locale from request ?
-						httpResponse.setHeader("Ajax-Expired", Messages
-								.getMessage(Messages.AJAX_VIEW_EXPIRED));
-					}
-					actionURL = externalContext.encodeActionURL(actionURL);
-					externalContext.redirect(actionURL);
-					context.responseComplete();
-				} catch (IOException e) {
-					throw new FacesException(
-							"Error on redirect for reload expired page", e);
-				}
+		if (null == viewRoot) {
+			requestMap.put(VIEW_EXPIRED, Messages
+					.getMessage(Messages.AJAX_VIEW_EXPIRED));
+			if (_log.isDebugEnabled()) {
+				_log
+						.debug("Detect session expiration in AJAX request - view don't restored for a viewId "
+								+ viewId);
 			}
 		}
-*/		return viewRoot;
+		return viewRoot;
 	}
 
 	/*
@@ -244,21 +223,21 @@
 								.debug(Messages
 										.getMessage(Messages.AJAX_RESPONSE_NOT_RENDERED_INFO));
 					}
-						ajaxContext.setSelfRender(true);
-						//ServletResponse response = (ServletResponse) context
-						//		.getExternalContext().getResponse();
-						Object response = (Object) context
-							.getExternalContext().getResponse();
-						try {
-							response.getClass().getDeclaredMethod("reset",
-									new Class[0]).invoke(response, new Object[0]);
-							//response.reset();
-						} catch (Exception e) {
-							// Do nothing - we will use directly and reset
-							// wrapper
-						}
-						ajaxContext.renderSubmittedAjaxRegion(context,true);
+					ajaxContext.setSelfRender(true);
+					// ServletResponse response = (ServletResponse) context
+					// .getExternalContext().getResponse();
+					Object response = (Object) context.getExternalContext()
+							.getResponse();
+					try {
+						response.getClass().getDeclaredMethod("reset",
+								new Class[0]).invoke(response, new Object[0]);
+						// response.reset();
+					} catch (Exception e) {
+						// Do nothing - we will use directly and reset
+						// wrapper
 					}
+					ajaxContext.renderSubmittedAjaxRegion(context, true);
+				}
 			}
 		} else {
 			super.renderView(context, root);

Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java	2007-09-05 18:20:43 UTC (rev 2787)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseXMLFilter.java	2007-09-05 19:12:37 UTC (rev 2788)
@@ -152,6 +152,10 @@
 		String redirectLocation = servletResponseWrapper.getRedirectLocation();
 		String characterEncoding = servletResponseWrapper
 				.getCharacterEncoding();
+		Object view_expired = request.getAttribute(AjaxViewHandler.VIEW_EXPIRED);
+		if(null != view_expired){
+			servletResponseWrapper.setHeader("Ajax-Expired", view_expired.toString());
+		}
 		Writer output;
 		if (null != redirectLocation) {
 			if (isAjaxRequest(request)) {

Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2007-09-05 18:20:43 UTC (rev 2787)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js	2007-09-05 19:12:37 UTC (rev 2788)
@@ -141,7 +141,7 @@
 		this._aborted=true;
 		if(this._request){
 			try{
-				this._request.abort();
+//				this._request.abort();
 				if(this._timeoutID){
 					window.clearTimeout(this._timeoutID);
 				}
@@ -234,6 +234,7 @@
 	getElementById : function(id){
 		// first attempt - .getElementById.
 		var oDoc = this._request.responseXML;
+		if(oDoc){
     	if(typeof(oDoc.getElementById) != 'undefined') {
 			LOG.debug("call getElementById for id= "+id);
     		return  oDoc.getElementById(id);
@@ -249,6 +250,9 @@
     		return oDoc.nodeFromID(id);
     	} 
 		LOG.error("No functions for getElementById found ");
+		} else {
+			LOG.debug("No parsed XML document in response");
+		}
     	return null;
 		
 	},
@@ -656,19 +660,21 @@
 A4J.AJAX.processResponse = function(req) {
     	    var options = req.options;
 			var ajaxResponse = req.getResponseHeader('Ajax-Response');
-          	if( ajaxResponse != "true"){
+			// If view is expired, check user-defined handler.
+			var expiredMsg = req.getResponseHeader('Ajax-Expired');
+			if(expiredMsg && typeof(A4J.AJAX.onExpired) == 'function' ){
+				var loc = A4J.AJAX.onExpired(window.location,expiredMsg);
+				if(loc){
+	         			window.location = loc;
+	         			return;					
+				}
+			}
+			if( ajaxResponse != "true"){
           	  	// NO Ajax header - new page.
           	  	LOG.warn("No ajax response header ");
          		var loc = req.getResponseHeader("Location");
 	         	try{
 	         		if(ajaxResponse == 'redirect' && loc){
-						var expiredMsg = req.getResponseHeader('Ajax-Expired');
-	         			if(expiredMsg){
-	         				loc = A4J.AJAX.onExpired(loc,expiredMsg);
-	         				if(!loc){
-	         					return;
-	         				}
-	         			} 
 	         			window.location = loc;
 	         		} else if(ajaxResponse == "reload"){
        					window.location.reload(true);
@@ -776,13 +782,6 @@
           }
          }; 
          
-A4J.AJAX.onExpired = function(loc,expiredMsg){
-	if(window.confirm(expiredMsg)){
-		return loc;
-	} else {
-		return undefined;
-	}
-};
          
 A4J.AJAX.replacePage = function(req){
 						LOG.debug("replace all page content with response");

Modified: trunk/samples/seamEAR/pom.xml
===================================================================
--- trunk/samples/seamEAR/pom.xml	2007-09-05 18:20:43 UTC (rev 2787)
+++ trunk/samples/seamEAR/pom.xml	2007-09-05 19:12:37 UTC (rev 2788)
@@ -26,15 +26,6 @@
 		<pluginManagement>
 			<plugins>
 				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-site-plugin</artifactId>
-					<configuration>
-						<unzipCommand>
-							/usr/bin/unzip -o > err.txt
-						</unzipCommand>
-					</configuration>
-				</plugin>
-				<plugin>
 					<artifactId>maven-compiler-plugin</artifactId>
 					<inherited>true</inherited>
 					<configuration>

Modified: trunk/samples/seamIntegration/src/main/java/org/ajax4jsf/Bean.java
===================================================================
--- trunk/samples/seamIntegration/src/main/java/org/ajax4jsf/Bean.java	2007-09-05 18:20:43 UTC (rev 2787)
+++ trunk/samples/seamIntegration/src/main/java/org/ajax4jsf/Bean.java	2007-09-05 19:12:37 UTC (rev 2788)
@@ -74,7 +74,7 @@
 	ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
 	HttpSession session = (HttpSession) externalContext.getSession(false);
 	if(null != session){
-	    session.setMaxInactiveInterval(10);
+	    session.setMaxInactiveInterval(5);
 	}
 	return null;
     }




More information about the richfaces-svn-commits mailing list