org.ajax4jsf.resource.cached
Class CachedResourceBuilder

java.lang.Object
  extended by org.ajax4jsf.resource.InternetResourceBuilder
      extended by org.ajax4jsf.resource.ResourceBuilderImpl
          extended by org.ajax4jsf.resource.cached.CachedResourceBuilder

public class CachedResourceBuilder
extends ResourceBuilderImpl

This class is intended to generate predictable URIs for all resources handled by RichFaces. It creates mapping between resource key/data value and generated random string of known format for all resource requests. By default UUID.toString() is used. Mapping is maintained by LRU map having default capacity of 10000 so be aware that stale entries can be removed and application users will get errors then. How to use: add to application classpath META-INF/services/org.ajax4jsf.resource.InternetResourceBuilder file with the following content org.ajax4jsf.resource.cached.CachedResourceBuilder Limitations:

  1. Doesn't work in clustered environments
  2. All resource URIs become invalid after server restart that can cause cache issues
  3. Diagnostic of resource loading errors becomes somewhat harder. Variant of code where random key is appended to resource name doesn't satisfy the requirement of no path depth > 8 as requested by users (see RF-3586 for more info)

Author:
Alexander Smirnov, Nick Belaevski

Field Summary
protected static int DEFAULT_CAPACITY
           
 
Fields inherited from class org.ajax4jsf.resource.InternetResourceBuilder
BASIC, COMMON_FRAMEWORK_SCRIPT, COMMON_STYLE, COMMON_STYLE_EXTENSION, COMMON_STYLE_PREFIX, COMMON_UI_SCRIPT, CONTROL_SKINNING_LEVEL, ENABLE, EXTENDED, LOAD_ALL, LOAD_NONE, LOAD_SCRIPT_STRATEGY_PARAM, LOAD_STYLE_STRATEGY_PARAM, SKINNING_SCRIPT, STD_CONTROLS_SKINNING_CLASSES_PARAM, STD_CONTROLS_SKINNING_PARAM
 
Constructor Summary
CachedResourceBuilder()
           
 
Method Summary
protected  java.lang.String createNextKey()
           
protected  byte[] decrypt(byte[] data)
           
protected  byte[] encrypt(byte[] data)
           
protected  int getCapacity(java.util.Properties properties)
           
protected  java.util.Properties getProperties(java.lang.String name)
          Get properties file from classpath
 java.lang.Object getResourceDataForKey(java.lang.String key)
           
 org.ajax4jsf.resource.InternetResource getResourceForKey(java.lang.String key)
           
 java.lang.String getUri(org.ajax4jsf.resource.InternetResource resource, javax.faces.context.FacesContext facesContext, java.lang.Object data)
           
 void init()
           
 
Methods inherited from class org.ajax4jsf.resource.ResourceBuilderImpl
addResource, addResource, createDynamicResource, createJarResource, createResource, createStaticResource, createUserResource, getFacesResourceURL, getRendererByExtension, getResource, getScriptRenderer, getStartTime, getStyleRenderer, getWebXml, registerResources
 
Methods inherited from class org.ajax4jsf.resource.InternetResourceBuilder
getInstance, setInstance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_CAPACITY

protected static final int DEFAULT_CAPACITY
See Also:
Constant Field Values
Constructor Detail

CachedResourceBuilder

public CachedResourceBuilder()
Method Detail

decrypt

protected byte[] decrypt(byte[] data)
Overrides:
decrypt in class ResourceBuilderImpl

encrypt

protected byte[] encrypt(byte[] data)
Overrides:
encrypt in class ResourceBuilderImpl

getResourceDataForKey

public java.lang.Object getResourceDataForKey(java.lang.String key)
Overrides:
getResourceDataForKey in class ResourceBuilderImpl

getResourceForKey

public org.ajax4jsf.resource.InternetResource getResourceForKey(java.lang.String key)
                                                         throws org.ajax4jsf.resource.ResourceNotFoundException
Overrides:
getResourceForKey in class ResourceBuilderImpl
Throws:
org.ajax4jsf.resource.ResourceNotFoundException

getUri

public java.lang.String getUri(org.ajax4jsf.resource.InternetResource resource,
                               javax.faces.context.FacesContext facesContext,
                               java.lang.Object data)
Overrides:
getUri in class ResourceBuilderImpl

init

public void init()
          throws javax.faces.FacesException
Overrides:
init in class ResourceBuilderImpl
Throws:
javax.faces.FacesException

getProperties

protected java.util.Properties getProperties(java.lang.String name)
Get properties file from classpath

Parameters:
name -
Returns:

createNextKey

protected java.lang.String createNextKey()

getCapacity

protected int getCapacity(java.util.Properties properties)


Copyright © 2009. All Rights Reserved.