FileDataStore: only open a stream when really necessary
-------------------------------------------------------

                 Key: JCR-2067
                 URL: https://issues.apache.org/jira/browse/JCR-2067
             Project: Jackrabbit Content Repository
          Issue Type: Improvement
            Reporter: Thomas Mueller
            Assignee: Thomas Mueller


Currently, PropertyImpl.getValue() opens a FileInputStream if the FileDataStore 
is used.
If the application doesn't use the value, this stream is never closed.

PropertyImpl.getValue():
  return internalGetValue().toJCRValue(session);
InternalValue.toJCRValue(..):
  case PropertyType.BINARY:
    return new BinaryValue(((BLOBFileValue) val).getStream());
BLOBInDataStore.getStream():
  return getDataRecord().getStream();
FileDataRecord.getStream():
  return new FileInputStream(file);

One solution is to return a 'lazy' file input stream that only opens the file 
when reading from the stream (and closing the file when the last byte was 
read). Maybe there is already a class (in Apache Commons maybe?) that can do 
that.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to