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]