jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Attila Király (JIRA) <j...@apache.org>
Subject [jira] Commented: (JCR-2067) FileDataStore: only open a stream when really necessary
Date Tue, 19 May 2009 17:12:45 GMT

    [ https://issues.apache.org/jira/browse/JCR-2067?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12710800#action_12710800

Attila Király commented on JCR-2067:

I suggest not invoking super.close() in LazyFileInputStream if the stream was never opened
because it can result in a NPE (and we got one with Jackrabbit).

So maybe something like this would be better:
public void close() throws IOException {
  if (!opened)  
    opened = true;

> 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.

View raw message