ClassPathResource.isReadable() returns false for content length 0
Issue: SPR-16832
This commit is contained in:
parent
8d94d20770
commit
616a40adb6
|
@ -80,7 +80,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (IOException ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,18 +110,18 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||||
if (contentLength > 0) {
|
if (contentLength > 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (contentLength < 0) {
|
else if (contentLength == 0) {
|
||||||
|
// Empty file or directory -> not considered readable...
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// 0 length: either an empty file or a directory...
|
else {
|
||||||
// On current JDKs, this will trigger an NPE from within the close() call
|
// Fall back to stream existence: can we open the stream?
|
||||||
// for directories, only returning true for actual files with 0 length.
|
|
||||||
getInputStream().close();
|
getInputStream().close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
}
|
||||||
// Usually an IOException but potentially a NullPointerException (see above)
|
catch (IOException ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||||
}
|
}
|
||||||
return ResourceUtils.URL_PROTOCOL_FILE.equals(url.getProtocol());
|
return ResourceUtils.URL_PROTOCOL_FILE.equals(url.getProtocol());
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (IOException ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ public abstract class AbstractFileResolvingResource extends AbstractResource {
|
||||||
}
|
}
|
||||||
return ResourceUtils.URL_PROTOCOL_FILE.equals(uri.getScheme());
|
return ResourceUtils.URL_PROTOCOL_FILE.equals(uri.getScheme());
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (IOException ex) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ public interface Resource extends InputStreamSource {
|
||||||
boolean exists();
|
boolean exists();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicate whether the contents of this resource can be read via
|
* Indicate whether non-empty contents of this resource can be read via
|
||||||
* {@link #getInputStream()}.
|
* {@link #getInputStream()}.
|
||||||
* <p>Will be {@code true} for typical resource descriptors that exist
|
* <p>Will be {@code true} for typical resource descriptors that exist
|
||||||
* since it strictly implies {@link #exists()} semantics as of 5.1.
|
* since it strictly implies {@link #exists()} semantics as of 5.1.
|
||||||
|
|
Loading…
Reference in New Issue