Class ValueFactoryImpl
- All Implemented Interfaces:
ValueFactory
,JackrabbitValueFactory
ValueFactory
interface.-
Field Summary
Fields inherited from class org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory
DEFAULT_BLOB_ACCESS_PROVIDER
-
Constructor Summary
ConstructorsConstructorDescriptionValueFactoryImpl
(@NotNull Root root, @NotNull NamePathMapper namePathMapper) Creates a new instance ofValueFactory
.ValueFactoryImpl
(@NotNull Root root, @NotNull NamePathMapper namePathMapper, @NotNull org.apache.jackrabbit.oak.api.blob.BlobAccessProvider blobAccessProvider) Creates a new instance ofValueFactory
. -
Method Summary
Modifier and TypeMethodDescription@Nullable Binary
completeBinaryUpload
(@NotNull String uploadToken) Complete the transaction of uploading a binary directly to a storage location and return aBinary
to set as value for a binary JCR property.@NotNull Binary
createBinary
(@NotNull InputStream stream) Returns aBinary
object with a value consisting of the content of the specifiedInputStream
.@Nullable Binary
createBinary
(Blob blob) @NotNull Value
createValue
(@NotNull InputStream value) Returns aValue
object ofPropertyType.BINARY
with a value consisting of the content of the specifiedInputStream
.@NotNull Value
createValue
(@NotNull Binary value) Returns aValue
object ofPropertyType.BINARY
with a value consisting of the content of the specifiedBinary
.@Nullable Blob
@Nullable BinaryUpload
initiateBinaryUpload
(long maxSize, int maxParts) Initiate a transaction to upload a binary directly to a storage location and returnBinaryUpload
instructions for a remote client.@Nullable BinaryUpload
initiateBinaryUpload
(long maxSize, int maxParts, @NotNull BinaryUploadOptions options) Initiate a transaction to upload a binary directly to a storage location and returnBinaryUpload
instructions for a remote client.Methods inherited from class org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory
createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValues, getNamePathMapper
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface javax.jcr.ValueFactory
createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValue, createValue
-
Constructor Details
-
ValueFactoryImpl
public ValueFactoryImpl(@NotNull @NotNull Root root, @NotNull @NotNull NamePathMapper namePathMapper, @NotNull @NotNull org.apache.jackrabbit.oak.api.blob.BlobAccessProvider blobAccessProvider) Creates a new instance ofValueFactory
.- Parameters:
root
- the root instance for creating binary valuesnamePathMapper
- The name/path mapping used for converting JCR names/paths toblobAccessProvider
- The blob access provider the internal representation.
-
ValueFactoryImpl
public ValueFactoryImpl(@NotNull @NotNull Root root, @NotNull @NotNull NamePathMapper namePathMapper) Creates a new instance ofValueFactory
. TheValue
s created by this value factory instance will not be backed by a blob access provider and never return a download URI for a binary value.- Parameters:
root
- the root instance for creating binary valuesnamePathMapper
- The name/path mapping used for converting JCR names/paths to the internal representation.
-
-
Method Details
-
createValue
Description copied from interface:ValueFactory
Returns aValue
object ofPropertyType.BINARY
with a value consisting of the content of the specifiedInputStream
.The passed
InputStream
is closed before this method returns either normally or because of an exception.- Specified by:
createValue
in interfaceValueFactory
- Parameters:
value
- anInputStream
- Returns:
- a
Value
ofPropertyType.BINARY
-
createValue
Description copied from interface:ValueFactory
Returns aValue
object ofPropertyType.BINARY
with a value consisting of the content of the specifiedBinary
.- Specified by:
createValue
in interfaceValueFactory
- Parameters:
value
- aBinary
- Returns:
- a
Value
ofPropertyType.BINARY
-
createBinary
@NotNull public @NotNull Binary createBinary(@NotNull @NotNull InputStream stream) throws RepositoryException Description copied from interface:ValueFactory
Returns aBinary
object with a value consisting of the content of the specifiedInputStream
.The passed
InputStream
is closed before this method returns either normally or because of an exception.- Specified by:
createBinary
in interfaceValueFactory
- Parameters:
stream
- anInputStream
- Returns:
- a
Binary
- Throws:
RepositoryException
- if an error occurs.
-
initiateBinaryUpload
Description copied from interface:JackrabbitValueFactory
Initiate a transaction to upload a binary directly to a storage location and returnBinaryUpload
instructions for a remote client. Returnsnull
if the feature is not available.IllegalArgumentException
will be thrown if an upload cannot be supported for the required parameters, or if the parameters are otherwise invalid. Each service provider has specific limitations.- Specified by:
initiateBinaryUpload
in interfaceJackrabbitValueFactory
- Parameters:
maxSize
- The exact size of the binary to be uploaded or the estimated maximum size if the exact size is unknown. If the estimation was too small, the transaction should be restarted by invoking this method again using the correct size.maxParts
- The maximum number of upload URIs that the client can accept, for example due to message size limitations. A value of -1 indicates no limit. Upon a successful return, it is ensured that an upload ofmaxSize
can be completed by splitting the binary intomaxURIs
parts, otherwiseIllegalArgumentException
will be thrown.- Returns:
- A
BinaryUpload
providing the upload instructions, ornull
if the implementation does not support the direct upload feature.
-
initiateBinaryUpload
@Nullable public @Nullable BinaryUpload initiateBinaryUpload(long maxSize, int maxParts, @NotNull @NotNull BinaryUploadOptions options) Description copied from interface:JackrabbitValueFactory
Initiate a transaction to upload a binary directly to a storage location and returnBinaryUpload
instructions for a remote client. Returnsnull
if the feature is not available.IllegalArgumentException
will be thrown if an upload cannot be supported for the required parameters, or if the parameters are otherwise invalid. Each service provider has specific limitations.- Specified by:
initiateBinaryUpload
in interfaceJackrabbitValueFactory
- Parameters:
maxSize
- The exact size of the binary to be uploaded or the estimated maximum size if the exact size is unknown. If the estimation was too small, the transaction should be restarted by invoking this method again using the correct size.maxParts
- The maximum number of upload URIs that the client can accept, for example due to message size limitations. A value of -1 indicates no limit. Upon a successful return, it is ensured that an upload ofmaxSize
can be completed by splitting the binary intomaxURIs
parts, otherwiseIllegalArgumentException
will be thrown.options
- ABinaryUploadOptions
instance containing any options for this call.- Returns:
- A
BinaryUpload
providing the upload instructions, ornull
if the implementation does not support the direct upload feature.
-
completeBinaryUpload
@Nullable public @Nullable Binary completeBinaryUpload(@NotNull @NotNull String uploadToken) throws RepositoryException Description copied from interface:JackrabbitValueFactory
Complete the transaction of uploading a binary directly to a storage location and return aBinary
to set as value for a binary JCR property. The binary is not automatically associated with any location in the JCR.The client must provide a valid upload token, obtained from
BinaryUpload.getUploadToken()
when this transaction was initialized usingJackrabbitValueFactory.initiateBinaryUpload(long, int)
. If theuploadToken
is unreadable or invalid, anIllegalArgumentException
will be thrown. This method is idempotent. Calling the method more than one time with the same upload token must not cause an existing binary to be modified; thus if a prior call with this upload token succeeded in creating the binary, subsequent calls with the same upload token have no effect on the binary. This method should always return the binary that was uploaded with this upload token, even in subsequent calls with the same upload token (in other words, calling this method twice with the same upload token results in the same binary being returned both times).- Specified by:
completeBinaryUpload
in interfaceJackrabbitValueFactory
- Parameters:
uploadToken
- A String identifying the upload transaction.- Returns:
- The uploaded
Binary
, ornull
if the implementation does not support the direct upload feature. - Throws:
RepositoryException
- if another error occurs.
-
createBinary
- Throws:
RepositoryException
-
getBlob
- Throws:
RepositoryException
-