[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