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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to