Author: alexsmirnov
Date: 2008-05-02 15:34:22 -0400 (Fri, 02 May 2008)
New Revision: 8420
Modified:
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ContextInitParameters.java
trunk/framework/impl/src/main/java/org/ajax4jsf/event/AjaxPhaseListener.java
trunk/framework/impl/src/main/java/org/ajax4jsf/event/InitPhaseListener.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/UserResource.java
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DResource.java
Log:
Implemented
http://jira.jboss.com/jira/browse/RF-2506 feature.
fix
http://jira.jboss.com/jira/browse/RF-3306
Modified: trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java
===================================================================
---
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/api/src/main/java/org/ajax4jsf/resource/InternetResource.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -49,6 +49,7 @@
public static final int RESOURCE_URI_PREFIX_LENGTH = RESOURCE_URI_PREFIX.length();
public static final String DATA_SEPARATOR = "/DATA/";
static public final long DEFAULT_EXPIRE = 1000L * 60L * 60L * 24L;// 1 day
+ public static final String DEFAULT_EXPITE_PARAMETER =
"org.ajax4jsf.DEFAULT_EXPIRE";
/**
* @param resourceContext current {@link ResourceContext}
* @return Returns the contentLength.
@@ -59,7 +60,7 @@
* @param resourceContext current {@link ResourceContext}
* @return Returns the expired.
*/
- public Date getExpired(ResourceContext resourceContext);
+ public long getExpired(ResourceContext resourceContext);
/**
* @param resourceContext current {@link ResourceContext}
@@ -186,6 +187,6 @@
public abstract void setLastModified(Date lastModified);
- public abstract void setExpired(Date expired);
+ public abstract void setExpired(long expired);
}
\ No newline at end of file
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/application/AjaxStateManager.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -197,8 +197,6 @@
if (_log.isDebugEnabled()) {
_log.debug("Write view state to the response");
}
- context.getExternalContext().getRequestMap().put(
- AjaxPhaseListener.VIEW_STATE_SAVED_PARAM, Boolean.TRUE);
}
/*
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ContextInitParameters.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ContextInitParameters.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/context/ContextInitParameters.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -35,6 +35,8 @@
* If is it equals "true" , framework should proparate exception to
client-side.
*/
public static final String
HANDLE_VIEW_EXPIRED_ON_CLIENT="org.ajax4jsf.handleViewExpiredOnClient";
+
+
/**
* Get number of views for store in session by {@link AjaxStateManager}
* @param context - current faces context.
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/event/AjaxPhaseListener.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/event/AjaxPhaseListener.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/event/AjaxPhaseListener.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -54,8 +54,6 @@
public static final String VIEW_BEAN_PREFIX = "org.ajax4jsf.viewbean:";
- public static final String VIEW_STATE_SAVED_PARAM =
"org.ajax4jsf.VIEW_STATE_SAVED";
-
private static final Log log = LogFactory.getLog(AjaxPhaseListener.class);
public static final String AJAX_BEAN_PREFIX = "org.ajax4jsf.ajaxviewbean:";
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/event/InitPhaseListener.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/event/InitPhaseListener.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/event/InitPhaseListener.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -79,13 +79,6 @@
}
FacesContext facesContext = event.getFacesContext();
Application application = facesContext.getApplication();
- StateManager stateManager = application.getStateManager();
- if(! (stateManager instanceof AjaxStateManager)){
- if(log.isDebugEnabled()){
- log.debug("Set AjaxStateManager on top of chain");
- }
- application.setStateManager(new AjaxStateManager(stateManager));
- }
ViewHandler viewHandler = application.getViewHandler();
if (!(viewHandler instanceof AjaxViewHandler)) {
if(log.isDebugEnabled()){
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceBase.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -57,7 +57,7 @@
private Date lastModified = new Date(System.currentTimeMillis());
- private Date expired;
+ private long expired = Long.MIN_VALUE;
private boolean cacheable = true;
@@ -91,7 +91,14 @@
*
* @see org.ajax4jsf.chameleon.resource.InternetResource#getExpired()
*/
- public Date getExpired(ResourceContext resourceContext) {
+ public long getExpired(ResourceContext resourceContext) {
+ if( expired == Long.MIN_VALUE ){
+ expired = -1;
+ String defaultExpireParameter =
resourceContext.getInitParameter(InternetResource.DEFAULT_EXPITE_PARAMETER);
+ if(null != defaultExpireParameter){
+ expired = Long.parseLong(defaultExpireParameter)*1000L;
+ }
+ }
return expired;
}
@@ -99,7 +106,7 @@
* @param expired
* The expired to set.
*/
- public void setExpired(Date expired) {
+ public void setExpired(long expired) {
this.expired = expired;
}
@@ -396,15 +403,14 @@
context.setIntHeader("Content-Length",
contentLength);
}
- Date expired = getExpired(context);
- if (expired != null) {
- context.setDateHeader("Expires", expired.getTime());
- } else {
+ long expired = getExpired(context);
+ if (expired == Long.MIN_VALUE ) {
+ expired = DEFAULT_EXPIRE;
+ }
context.setDateHeader("Expires", System.currentTimeMillis()
- + DEFAULT_EXPIRE);
+ + expired);
context.setHeader("Cache-control", "max-age="
- + (DEFAULT_EXPIRE / 1000));
- }
+ + (expired / 1000L));
} else {
if (contentLength > 0) {
context.setIntHeader("Content-Length",
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/InternetResourceService.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -202,14 +202,15 @@
}
content.sendHeaders(response);
// Correct expires date for resource.
- Date expired = resource.getExpired(resourceContext);
- if (expired != null) {
- response.setDateHeader("Expires", expired.getTime());
- } else {
+ long expired = resource.getExpired(resourceContext);
+ if (expired < 0 ) {
+ expired = InternetResource.DEFAULT_EXPIRE;
+ }
response.setDateHeader("Expires", System
.currentTimeMillis()
- + InternetResource.DEFAULT_EXPIRE);
- }
+ + expired);
+// response.addHeader("Cache-control", "max-age="
+// + (expired / 1000L));
if (!request.getMethod().equals("HEAD")) {
content.send(response);
}
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java
===================================================================
---
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/framework/impl/src/main/java/org/ajax4jsf/resource/TemplateCSSResource.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -128,15 +128,15 @@
* @see org.ajax4jsf.resource.InternetResource#getContentType(ResourceContext)
*/
public String getContentType(ResourceContext resourceContext) {
- return _resource.getContentType(null);
+ return _resource.getContentType(resourceContext);
}
/**
* @return
* @see org.ajax4jsf.resource.InternetResource#getExpired(ResourceContext)
*/
- public Date getExpired(ResourceContext resourceContext) {
- return _resource.getExpired(null);
+ public long getExpired(ResourceContext resourceContext) {
+ return _resource.getExpired(resourceContext);
}
/**
@@ -267,9 +267,9 @@
/**
* @param expired
- * @see org.ajax4jsf.resource.InternetResource#setExpired(java.util.Date)
+ * @see org.ajax4jsf.resource.InternetResource#setExpired(long)
*/
- public void setExpired(Date expired) {
+ public void setExpired(long expired) {
_resource.setExpired(expired);
}
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/resource/UserResource.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/resource/UserResource.java 2008-05-02
19:03:30 UTC (rev 8419)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/resource/UserResource.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -26,6 +26,9 @@
import java.io.Serializable;
import java.util.Date;
+import javax.el.ELContext;
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
@@ -68,18 +71,18 @@
*/
public Object getDataToStore(FacesContext context, Object data) {
UriData dataToStore = null;
- if (data instanceof ResourceComponent) {
- ResourceComponent resource = (ResourceComponent) data;
+ if (data instanceof ResourceComponent2) {
+ ResourceComponent2 resource = (ResourceComponent2) data;
dataToStore = new UriData();
dataToStore.value = resource.getValue();
- dataToStore.createContent =
UIComponentBase.saveAttachedState(context,resource.getCreateContent());
+ dataToStore.createContent =
UIComponentBase.saveAttachedState(context,resource.getCreateContentExpression());
if (data instanceof UIComponent) {
UIComponent component = (UIComponent) data;
- ValueBinding expires = component.getValueBinding("expires");
+ ValueExpression expires = component.getValueExpression("expires");
if (null != expires) {
dataToStore.expires = UIComponentBase.saveAttachedState(context,expires);
}
- ValueBinding lastModified = component.getValueBinding("lastModified");
+ ValueExpression lastModified =
component.getValueExpression("lastModified");
if (null != lastModified) {
dataToStore.modified = UIComponentBase.saveAttachedState(context,lastModified);
}
@@ -95,22 +98,61 @@
FacesContext facesContext = FacesContext.getCurrentInstance();
if (null != data && null != facesContext ) {
// Send headers
- if(data.expires != null){
- ValueBinding binding = (ValueBinding)
UIComponentBase.restoreAttachedState(facesContext,data.expires);
- Date expires = (Date) binding.getValue(facesContext);
- context.setDateHeader("Expires",expires.getTime());
- }
- if(data.modified != null){
- ValueBinding binding = (ValueBinding)
UIComponentBase.restoreAttachedState(facesContext,data.modified);
- Date modified = (Date) binding.getValue(facesContext);
- context.setDateHeader("Last-Modified",modified.getTime());
- }
+ ELContext elContext = facesContext.getELContext();
+// if(data.expires != null){
+// ValueExpression binding = (ValueExpression)
UIComponentBase.restoreAttachedState(facesContext,data.expires);
+// Date expires = (Date) binding.getValue(elContext);
+// context.setDateHeader("Expires",expires.getTime());
+// }
+// if(data.modified != null){
+// ValueExpression binding = (ValueExpression)
UIComponentBase.restoreAttachedState(facesContext,data.modified);
+// Date modified = (Date) binding.getValue(elContext);
+// context.setDateHeader("Last-Modified",modified.getTime());
+// }
// Send content
OutputStream out = context.getOutputStream();
- MethodBinding send = (MethodBinding)
UIComponentBase.restoreAttachedState(facesContext,data.createContent);
- send.invoke(facesContext,new Object[]{out,data.value});
+ MethodExpression send = (MethodExpression)
UIComponentBase.restoreAttachedState(facesContext,data.createContent);
+ send.invoke(elContext,new Object[]{out,data.value});
}
}
+
+
+ @Override
+ public Date getLastModified(ResourceContext resourceContext) {
+ UriData data = (UriData) restoreData(resourceContext);
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ if (null != data && null != facesContext ) {
+ // Send headers
+ ELContext elContext = facesContext.getELContext();
+ if(data.modified != null){
+ ValueExpression binding = (ValueExpression)
UIComponentBase.restoreAttachedState(facesContext,data.modified);
+ Date modified = (Date) binding.getValue(elContext);
+ if (null != modified) {
+ return modified;
+ }
+ }
+ }
+ return super.getLastModified(resourceContext);
+ }
+
+
+ @Override
+ public long getExpired(ResourceContext resourceContext) {
+ UriData data = (UriData) restoreData(resourceContext);
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ if (null != data && null != facesContext ) {
+ // Send headers
+ ELContext elContext = facesContext.getELContext();
+ if(data.expires != null){
+ ValueExpression binding = (ValueExpression)
UIComponentBase.restoreAttachedState(facesContext,data.expires);
+ Date expires = (Date) binding.getValue(elContext);
+ if (null != expires) {
+ return expires.getTime()-System.currentTimeMillis();
+ }
+ }
+ }
+ return super.getExpired(resourceContext);
+ }
/* (non-Javadoc)
* @see org.ajax4jsf.resource.InternetResourceBase#requireFacesContext()
*/
Modified:
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DResource.java
===================================================================
---
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DResource.java 2008-05-02
19:03:30 UTC (rev 8419)
+++
trunk/ui/paint2D/src/main/java/org/richfaces/renderkit/html/Paint2DResource.java 2008-05-02
19:34:22 UTC (rev 8420)
@@ -54,7 +54,7 @@
private static final ImageRenderer[] _renderers= {new GifRenderer(), new JpegRenderer(),
new PngRenderer()};
- private static final ThreadLocal threadLocalContentType = new ThreadLocal();
+// private static final ThreadLocal<String> threadLocalContentType = new
ThreadLocal<String>();
/* (non-Javadoc)
@@ -205,13 +205,13 @@
/* (non-Javadoc)
* @see
org.ajax4jsf.resource.InternetResourceBase#sendHeaders(org.ajax4jsf.resource.ResourceContext)
*/
- public void sendHeaders(ResourceContext context) {
- ImageData data = (ImageData) restoreData(context);
- ImageRenderer renderer = _renderers[data._format];
- threadLocalContentType.set(renderer.getContentType());
-
- super.sendHeaders(context);
-
- threadLocalContentType.set(null);
- }
+// public void sendHeaders(ResourceContext context) {
+// ImageData data = (ImageData) restoreData(context);
+// ImageRenderer renderer = _renderers[data._format];
+// threadLocalContentType.set(renderer.getContentType());
+//
+// super.sendHeaders(context);
+//
+// threadLocalContentType.set(null);
+// }
}