
Package ca.uhn.fhir.jpa.binary.svc
Class BaseBinaryStorageSvcImpl
java.lang.Object
ca.uhn.fhir.jpa.binary.svc.BaseBinaryStorageSvcImpl
- All Implemented Interfaces:
IBinaryStorageSvc
- Direct Known Subclasses:
FilesystemBinaryStorageSvcImpl
,MemoryBinaryStorageSvcImpl
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected org.apache.commons.io.input.CountingInputStream
createCountingInputStream
(InputStream theInputStream) protected com.google.common.hash.HashingInputStream
createHashingInputStream
(InputStream theInputStream) byte[]
fetchDataBlobFromBinary
(org.hl7.fhir.instance.model.api.IBaseBinary theBaseBinary) Fetch the byte[] contents of a given Binary resource's `data` element.long
Gets the maximum number of bytes that can be stored in a single binary file by this service.int
Gets the minimum number of bytes that will be stored.Generate a new blob ID that will be passed toIBinaryStorageSvc.storeBlob(IIdType, String, String, InputStream)
laterprotected String
provideIdForNewBlob
(String theBlobIdOrNull) void
setMaximumBinarySize
(long theMaximumBinarySize) Sets the maximum number of bytes that can be stored in a single binary file by this service.void
setMinimumBinarySize
(int theMinimumBinarySize) Sets the minimum number of bytes that will be stored.boolean
shouldStoreBlob
(long theSize, org.hl7.fhir.instance.model.api.IIdType theResourceId, String theContentType) Give the storage service the ability to veto items from storageMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ca.uhn.fhir.jpa.binary.api.IBinaryStorageSvc
expungeBlob, fetchBlob, fetchBlobDetails, storeBlob, writeBlob
-
Field Details
-
DEFAULT_MAXIMUM_BINARY_SIZE
-
-
Constructor Details
-
BaseBinaryStorageSvcImpl
public BaseBinaryStorageSvcImpl()
-
-
Method Details
-
getMaximumBinarySize
Description copied from interface:IBinaryStorageSvc
Gets the maximum number of bytes that can be stored in a single binary file by this service. The default isLong.MAX_VALUE
- Specified by:
getMaximumBinarySize
in interfaceIBinaryStorageSvc
-
setMaximumBinarySize
Description copied from interface:IBinaryStorageSvc
Sets the maximum number of bytes that can be stored in a single binary file by this service. The default isLong.MAX_VALUE
- Specified by:
setMaximumBinarySize
in interfaceIBinaryStorageSvc
- Parameters:
theMaximumBinarySize
- The maximum size
-
getMinimumBinarySize
Description copied from interface:IBinaryStorageSvc
Gets the minimum number of bytes that will be stored. Binary content smaller * than this threshold may be inlined even if a binary storage service * is active.- Specified by:
getMinimumBinarySize
in interfaceIBinaryStorageSvc
-
setMinimumBinarySize
Description copied from interface:IBinaryStorageSvc
Sets the minimum number of bytes that will be stored. Binary content smaller than this threshold may be inlined even if a binary storage service is active.- Specified by:
setMinimumBinarySize
in interfaceIBinaryStorageSvc
-
newBlobId
Description copied from interface:IBinaryStorageSvc
Generate a new blob ID that will be passed toIBinaryStorageSvc.storeBlob(IIdType, String, String, InputStream)
later- Specified by:
newBlobId
in interfaceIBinaryStorageSvc
-
shouldStoreBlob
public boolean shouldStoreBlob(long theSize, org.hl7.fhir.instance.model.api.IIdType theResourceId, String theContentType) Description copied from interface:IBinaryStorageSvc
Give the storage service the ability to veto items from storage- Specified by:
shouldStoreBlob
in interfaceIBinaryStorageSvc
- Parameters:
theSize
- How large is the itemtheResourceId
- What is the resource ID it will be associated withtheContentType
- What is the content type- Returns:
true
if the storage service should store the item
-
createHashingInputStream
@Nonnull protected com.google.common.hash.HashingInputStream createHashingInputStream(InputStream theInputStream) -
createCountingInputStream
@Nonnull protected org.apache.commons.io.input.CountingInputStream createCountingInputStream(InputStream theInputStream) -
provideIdForNewBlob
-
fetchDataBlobFromBinary
public byte[] fetchDataBlobFromBinary(org.hl7.fhir.instance.model.api.IBaseBinary theBaseBinary) throws IOException Description copied from interface:IBinaryStorageSvc
Fetch the byte[] contents of a given Binary resource's `data` element. If the data is a standard base64encoded string that is embedded, return it. Otherwise, attempt to load the externalized binary blob via the the externalized binary storage service.- Specified by:
fetchDataBlobFromBinary
in interfaceIBinaryStorageSvc
- Returns:
- The binary data blob as a byte array
- Throws:
IOException
-