[prev in list] [next in list] [prev in thread] [next in thread] 

List:       slide-dev
Subject:    Re: patch on AbstractTxFileStoreService about idMapper
From:       Martin van den Bemt <mllist () mvdb ! net>
Date:       2007-02-25 20:10:34
Message-ID: 45E1ED3A.90905 () mvdb ! net
[Download RAW message or body]

Could you please attach this to a bugzilla issue, so it doesn't get lost or is \
forgotten ?

Mvgr,
Martin

Guillaume Bailleul wrote:
> I made a little mod on AbstractTxFileStoreService to load a
> ResourceIdToPathMapper specified in the configuration (Domain.xml).
> Maybe this patch could be useful for someone else.
> 
> I needed a special ResourceIdToPathMapper for some "obfuscation" needs
> on the storage disk.
> 
> In the patch, I reuse the use-portable-path parameter. This is maybe
> not a good idea. A new parameter should be a good idea. The new
> problem in that case is the concurrency between this new parameter,
> use-portable-path and url-encode-path (already a problem in the
> current version for the 2 last).
> 
> There are 3 patches, for different implementation. The 2 first are
> compatible with current version, the last changes the configuration
> and the behaviour.
> 
> resourceidmapper.java13.patch for java 1.3 and later
> resourceidmapper.java5.patch for java 5 (only template use)
> 
> resourceidmapper.choose.patch : the value of url-encode-path can be :
> - "encode" : to use classic commons-transaction mapper
> - "portable" : to use the txfile mapper
> - "<classname>" : the classname of the specific
> ResourceIdToPathMapper implementation.
> 
> 
> Best regards,
> 
> Guillaume
> 
> 
> ------------------------------------------------------------------------
> 
> Index: /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java
>  ===================================================================
> --- /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(revision \
>                 511557)
> +++ /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(working \
> copy) @@ -62,7 +62,6 @@
> protected static final String TIMEOUT_PARAMETER = "timeout";
> protected static final String URLENCODE_PATH_PARAMETER = "url-encode-path";
> protected static final String DEBUG_MODE_PARAMETER = "debug";
> -    protected static final String USE_PORTABLE_PATH_PARAMETER = \
> "use-portable-path"; 
> protected FileResourceManager rm;
> protected boolean started = false;
> @@ -98,14 +97,24 @@
> 
> String urlEncodePathString = (String) parameters.get(URLENCODE_PATH_PARAMETER);
> if (urlEncodePathString != null) {
> -            boolean urlEncodePath = "true".equals(urlEncodePathString);
> -            if (urlEncodePath) idMapper = new URLEncodeIdMapper();
> -        }
> -
> -        String usePortablePathString = (String) \
>                 parameters.get(USE_PORTABLE_PATH_PARAMETER);
> -        if (usePortablePathString != null) {
> -            boolean usePortablePath = "true".equals(usePortablePathString);
> -            if (usePortablePath) idMapper = new PortableIdMapper();
> +        	if ("encode".equals(urlEncodePathString)) {
> +              idMapper = new URLEncodeIdMapper();
> +        	} else if ("portable".equals(urlEncodePathString)) {
> +        		idMapper = new PortableIdMapper();
> +        	} else {
> +            	// specify a class name instead of a boolean value
> +            	try {
> +            		Class clz = Class.forName(urlEncodePathString);
> +            		idMapper =(ResourceIdToPathMapper) clz.newInstance();
> +            	} catch (Exception exception) {
> +            		getLogger().log(
> +                            "Cannot load the specified path mapper \
> '"+urlEncodePathString+"'.", +                            exception,
> +                            getLogChannel(),
> +                            Logger.ERROR);
> +            		throw new \
> ServiceParameterErrorException(this,URLENCODE_PATH_PARAMETER); +    			}
> +        	}
> }
> 
> rm =
> 
> 
> ------------------------------------------------------------------------
> 
> Index: /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java
>  ===================================================================
> --- /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(revision \
>                 511557)
> +++ /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(working \
> copy) @@ -105,7 +105,24 @@
> String usePortablePathString = (String) \
> parameters.get(USE_PORTABLE_PATH_PARAMETER); if (usePortablePathString != null) {
> boolean usePortablePath = "true".equals(usePortablePathString);
> -            if (usePortablePath) idMapper = new PortableIdMapper();
> +            if (usePortablePath) {
> +            	idMapper = new PortableIdMapper();
> +            } else if("false".equals(usePortablePathString)) {
> +            	// do nothing
> +            } else {
> +            	// specify a class name instead of a boolean value
> +            	try {
> +            		Class<? extends ResourceIdToPathMapper> clz = \
> Class.forName(usePortablePathString).asSubclass(ResourceIdToPathMapper.class); +    \
> idMapper = clz.newInstance(); +            	} catch (Exception exception) {
> +            		getLogger().log(
> +                            "Cannot load the specified path mapper \
> '"+usePortablePathString+"'.", +                            exception,
> +                            getLogChannel(),
> +                            Logger.ERROR);
> +            		throw new \
> ServiceParameterErrorException(this,USE_PORTABLE_PATH_PARAMETER); +    			}
> +            }
> }
> 
> rm =
> 
> 
> ------------------------------------------------------------------------
> 
> Index: /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java
>  ===================================================================
> --- /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(revision \
>                 511557)
> +++ /home/guignol/slide/workspace/slide-trunk/src/stores/org/apache/slide/store/txfile/AbstractTxFileStoreService.java	(working \
> copy) @@ -105,7 +105,24 @@
> String usePortablePathString = (String) \
> parameters.get(USE_PORTABLE_PATH_PARAMETER); if (usePortablePathString != null) {
> boolean usePortablePath = "true".equals(usePortablePathString);
> -            if (usePortablePath) idMapper = new PortableIdMapper();
> +            if (usePortablePath) {
> +            	idMapper = new PortableIdMapper();
> +            } else if("false".equals(usePortablePathString)) {
> +            	// do nothing
> +            } else {
> +            	// specify a class name instead of a boolean value
> +            	try {
> +            		Class clz = Class.forName(usePortablePathString);
> +            		idMapper =(ResourceIdToPathMapper) clz.newInstance();
> +            	} catch (Exception exception) {
> +            		getLogger().log(
> +                            "Cannot load the specified path mapper \
> '"+usePortablePathString+"'.", +                            exception,
> +                            getLogChannel(),
> +                            Logger.ERROR);
> +            		throw new \
> ServiceParameterErrorException(this,USE_PORTABLE_PATH_PARAMETER); +    			}
> +            }
> }
> 
> rm =
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-dev-help@jakarta.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic