[ 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; else super.close(); } > 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.