[
https://issues.apache.org/jira/browse/OAK-8186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16808802#comment-16808802
] Henry Saginor commented on OAK-8186: ------------------------------------ [~mattvryan] Yes it's very close to UC1. But it's not just native executables that may require direct file access. Consider the example I gave with Zip extraction. We had to handle some zip file formats (like deflate64) that failed processing via input streams using standard java zip API. Apache Commons Compress library is able to handle those but requires random access file. See [http://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/zip/ZipFile.html] > Create API in OAK for file access to binaries in the repository. > ---------------------------------------------------------------- > > Key: OAK-8186 > URL: https://issues.apache.org/jira/browse/OAK-8186 > Project: Jackrabbit Oak > Issue Type: Improvement > Reporter: Henry Saginor > Priority: Major > Attachments: OAK File Access.jpg > > > To get file access applications normally write binaries to temp files. It > would be nice if an API existed to get file access directly from OAK. This > might also meet some use cases documented at > [https://wiki.apache.org/jackrabbit/JCR%20Binary%20Usecase] > Suggested API and implementation can be found here [1]. Also, see attached > diagram [2]. > I can create a patch if I can get some feedback. Note that suggested API > makes it explicit that a temp file is created. I am not sure if direct access > to files in datasore would be safe. But I am open to suggestions. > [1] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-api/src/main/java/org/apache/jackrabbit/oak/api/blob/FileReferencable.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-api/src/main/java/org/apache/jackrabbit/oak/api/blob/TempFileReference.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-api/src/main/java/org/apache/jackrabbit/oak/api/blob/TempFileReferenceProvider.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/FileDSBlobTempFileReference.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java] > > [https://github.com/hsaginor/jackrabbit-oak/blob/directFileAccess/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/value/jcr/BinaryImpl.java] > [2] > !OAK File Access.jpg! -- This message was sent by Atlassian JIRA (v7.6.3#76005)
