Hi Team developpers,
I have found a bug in the
class*o**rg.apache.excalibur.source.impl.SourceResolverImpl * method
*public Source resolveURI( String location, String baseURI,Map
parameters ) *line *176-181* . which return the uri of a given file .
But this uri is defined under OS platform where file protocol is
"file:/" under Windows OS and without the slash under other plateforms
which is a real bug according to me . We know that file protocol is
"file:/" .
Here an example
Source mySource = resolver.resolveURI(myFile);
setSession("myFilewithUri",mySource.getUri());
When i get this variable String myFilename = (String
)getSession("myFilewithUri");
int fileLength = myFilename.length();
To delete this file we must test the plateform which is not the aim of
Java programming "*W*rite *O*nce *R*un *A*nywhere" .
if(isUnderWindows()){
//Get the real file without part of "file:/"
filename = filename.substring(URL_PREFIX_LEN,end);
}else{
//Get the real file without part of "file:" under other OS
filename = filename.substring(URL_PREFIX_LEN-1,end);
}
where
int end = int *end *= filename.length() ; and
private final static String URL_PREFIX = "file:/";
private final static int *URL_PREFIX_LEN *= URL_PREFIX.length();
This is due to the *o**rg.apache.excalibur.source.impl.SourceResolverImpl *
methode *public Source resolveURI( String location, String baseURI,Map
parameters )* line *176-181* .
String systemID = location;
* // special handling for windows file paths*
if( location.length() > 1 && location.charAt( 1 ) == ':' )
systemID = "*file:/" + location;*
else if( location.length() > 2 && location.charAt(0) == '/' &&
location.charAt(2) == ':' )
systemID = *"file:" + location;
*What is your comments for ?*
*