r01f.xmlproperties
Class XMLPropertiesCacheImpl

java.lang.Object
  extended by r01f.xmlproperties.XMLPropertiesCacheImpl
All Implemented Interfaces:
XMLPropertiesCache, XMLPropertiesComponentLoadedListener

 class XMLPropertiesCacheImpl
extends java.lang.Object
implements XMLPropertiesCache, XMLPropertiesComponentLoadedListener

Caché de propiedades para un código de aplicación.
Hay DOS cachés:


Nested Class Summary
private  class XMLPropertiesCacheImpl.CacheKey
           
(package private)  class XMLPropertiesCacheImpl.CacheStatistics
           
private  class XMLPropertiesCacheImpl.CacheValue
          Información que se guarda en la caché cuando una entrada NO se encuentra en el properties, de esta forma se evita tener que consultar de nuevo el árbol DOM.
 
Field Summary
private  java.lang.String _appCode
           
private  java.util.Map<XMLPropertiesCacheImpl.CacheKey,XMLPropertiesCacheImpl.CacheValue> _cache
           
private  XMLPropertiesForComponentContainer _componentXMLManager
           
private  boolean _useCache
           
(package private) static int DEFAULT_COMPONENTS_NUMBER
           
(package private) static int DEFAULT_PROPERTIES_PER_COMPONENT
           
 
Constructor Summary
XMLPropertiesCacheImpl(ResourcesLoaderFactory resourcesLoaderFactory, java.lang.String appCode, int componentsNumberEstimation, boolean useCache)
          Constructor en base al tamaño del cache y el modo de depuración.
 
Method Summary
private  void _ensureCapacity(int propertiesPerComponentEstimation)
          Se asegura cierta capacidad del caché.
private
<T> XMLPropertiesCacheImpl.CacheValue
_retrieve(java.lang.String component, java.lang.String xPath, java.lang.Class<T> type, Marshaller marshaller)
          Recupera la referencia a un objeto extraido de las propiedades.
private
<T> T
_retrieveBeanPropertyUsingMarshaller(java.lang.String component, java.lang.String propXPath, java.lang.Class<?> type, Marshaller marshaller)
           
private  java.util.Map<java.lang.String,java.util.List<java.lang.String>> _retrieveMapOfStringsProperty(java.lang.String component, java.lang.String propXPath)
           
private  java.lang.String _retrieveStringProperty(java.lang.String component, java.lang.String propXPath)
           
private  XMLPropertiesCacheImpl.CacheValue _store(java.lang.String component, java.lang.String xPath, java.lang.Object obj, boolean isDefaultVal)
          Almacena en la caché un objeto extraido de las propiedades.
 int clear()
          Inicializa la caché de todos los componentes de todas las aplicaciones.
 int clear(java.lang.String component)
          Recarga las propiedades de un componente o de todos.
 boolean existProperty(java.lang.String component, java.lang.String propXPath)
          Comprueba si existe una propiedad.
<T> T
getProperty(java.lang.String component, java.lang.String propXPath, T defaultValue, java.lang.Class<T> type)
          Devuelve una propiedad.
<T> T
getProperty(java.lang.String component, java.lang.String propXPath, T defaultValue, java.lang.Class<T> type, Marshaller marshaller)
          Devuelve una propiedad.
 void newComponentLoaded(XMLPropertiesComponentDef def)
          Se ha cargado un nuevo componente.
 XMLPropertiesCacheImpl.CacheStatistics usageStats()
          Obtiene las estadísticas de la cache a partir de los datos de uso almacenados en cada entrada de la cache.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_COMPONENTS_NUMBER

static int DEFAULT_COMPONENTS_NUMBER

DEFAULT_PROPERTIES_PER_COMPONENT

static int DEFAULT_PROPERTIES_PER_COMPONENT

_componentXMLManager

private XMLPropertiesForComponentContainer _componentXMLManager

_cache

private java.util.Map<XMLPropertiesCacheImpl.CacheKey,XMLPropertiesCacheImpl.CacheValue> _cache

_appCode

private java.lang.String _appCode

_useCache

private boolean _useCache
Constructor Detail

XMLPropertiesCacheImpl

@Inject
public XMLPropertiesCacheImpl(ResourcesLoaderFactory resourcesLoaderFactory,
                                     java.lang.String appCode,
                                     int componentsNumberEstimation,
                                     boolean useCache)
Constructor en base al tamaño del cache y el modo de depuración.
NOTA: Se utiliza AssistedInject ya que los parametros appCode, componentsNumberEstimation y useCache NO se conocen hasta el momento de la ejecución por lo que NO se puede crear un binding estatico para XMLPropertiesCache Para utilizar AssistedInject:

Parameters:
resourcesLoaderFactory - Factoría de los ResourcesLoaders responsables de cargar los xmls de propiedades.
NOTA: el ResourcesLoader concreto a utilizar se indica en el fichero de configuración del componente que SIEMPRE se carga desde el classPath (ver XMLPropertiesForComponentContainer).
appCode - Código de aplicación.
componentsNumberEstimation - Tamaño de la cache de apps/components.
useCache - true indica si se utiliza la cache de objetos recuperados del properties.
Method Detail

newComponentLoaded

public void newComponentLoaded(XMLPropertiesComponentDef def)
Description copied from interface: XMLPropertiesComponentLoadedListener
Se ha cargado un nuevo componente.

Specified by:
newComponentLoaded in interface XMLPropertiesComponentLoadedListener
Parameters:
def - La definición del componente

_ensureCapacity

private void _ensureCapacity(int propertiesPerComponentEstimation)
Se asegura cierta capacidad del caché.
A esta función se llama desde la clase XMLPropertiesForComponentContainer cuando se carga un nuevo XML de propiedades para un componente: de esta forma, la caché estará normalmente bien dimensionada.

Parameters:
propertiesPerComponentEstimation - Estimación de número de propiedades para el componente.

clear

public int clear()
Description copied from interface: XMLPropertiesCache
Inicializa la caché de todos los componentes de todas las aplicaciones.

Specified by:
clear in interface XMLPropertiesCache
Returns:
el número de elementos re-iniciados.

clear

public int clear(java.lang.String component)
Description copied from interface: XMLPropertiesCache
Recarga las propiedades de un componente o de todos.

Specified by:
clear in interface XMLPropertiesCache
Parameters:
component - El componente puede ser:
  • component != null se recarga el componente señalado.
  • component == null se recargan TODOS los componentes.
Returns:
el número de elementos re-iniciados

usageStats

public XMLPropertiesCacheImpl.CacheStatistics usageStats()
Description copied from interface: XMLPropertiesCache
Obtiene las estadísticas de la cache a partir de los datos de uso almacenados en cada entrada de la cache.

Specified by:
usageStats in interface XMLPropertiesCache
Returns:
un objeto CacheStatistics

existProperty

public boolean existProperty(java.lang.String component,
                             java.lang.String propXPath)
Description copied from interface: XMLPropertiesCache
Comprueba si existe una propiedad.

Specified by:
existProperty in interface XMLPropertiesCache
Parameters:
component - componente de la aplicación.
propXPath - ruta xpath para obtener la propiedad.
Returns:
true si la propiedad existe (no es null).

getProperty

public <T> T getProperty(java.lang.String component,
                         java.lang.String propXPath,
                         T defaultValue,
                         java.lang.Class<T> type)
Description copied from interface: XMLPropertiesCache
Devuelve una propiedad.

Specified by:
getProperty in interface XMLPropertiesCache
Parameters:
component - el componente de la aplicación.
propXPath - la ruta XPath de la propiedad.
defaultValue - el valor por defecto de la propiedad.
type - el tipo de dato en el que se quiere la propiedad.
Returns:
La propiedad o null si la propiedad no existe.

getProperty

public <T> T getProperty(java.lang.String component,
                         java.lang.String propXPath,
                         T defaultValue,
                         java.lang.Class<T> type,
                         Marshaller marshaller)
Description copied from interface: XMLPropertiesCache
Devuelve una propiedad.

Specified by:
getProperty in interface XMLPropertiesCache
Parameters:
component - el componente de la aplicación.
propXPath - la ruta XPath de la propiedad.
defaultValue - el valor por defecto de la propiedad.
type - el tipo de dato en el que se quiere la propiedad.
marshaller - el marshaller para pasar de XML a objetos el xml de las propiedades.
Returns:
La propiedad o null si la propiedad no existe.

_retrieveStringProperty

private java.lang.String _retrieveStringProperty(java.lang.String component,
                                                 java.lang.String propXPath)

_retrieveMapOfStringsProperty

private java.util.Map<java.lang.String,java.util.List<java.lang.String>> _retrieveMapOfStringsProperty(java.lang.String component,
                                                                                                       java.lang.String propXPath)

_retrieveBeanPropertyUsingMarshaller

private <T> T _retrieveBeanPropertyUsingMarshaller(java.lang.String component,
                                                   java.lang.String propXPath,
                                                   java.lang.Class<?> type,
                                                   Marshaller marshaller)

_retrieve

private <T> XMLPropertiesCacheImpl.CacheValue _retrieve(java.lang.String component,
                                                        java.lang.String xPath,
                                                        java.lang.Class<T> type,
                                                        Marshaller marshaller)
Recupera la referencia a un objeto extraido de las propiedades.
NOTA:

Si el parámetro type==null, SOLO se mira la caché, NO hace la carga desde el XML en caso de NO estar la propiedad en la caché.

Parameters:
component - Componente.
xPath - El xPath a la propiedad.
type - El tipo del objeto devuelto.
marshaller - El marshaller utilizado para pasar el xml a objetos.
Returns:
El objeto almacenado para este appCode/component.

_store

private XMLPropertiesCacheImpl.CacheValue _store(java.lang.String component,
                                                 java.lang.String xPath,
                                                 java.lang.Object obj,
                                                 boolean isDefaultVal)
Almacena en la caché un objeto extraido de las propiedades.

Parameters:
component - Componente.
xPath - El xpath de la propiedad.
obj - El objeto a almacenar.
isDefaultVal - true si se está almacenando el valor por defecto para la propiedad.
Returns:
El anterior objeto almacenado para este appCode/component.