Class ValueFactoryImpl
- java.lang.Object
-
- org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory
-
- org.apache.jackrabbit.oak.plugins.value.jcr.ValueFactoryImpl
-
- All Implemented Interfaces:
ValueFactory
,JackrabbitValueFactory
public class ValueFactoryImpl extends PartialValueFactory implements JackrabbitValueFactory
Implementation ofValueFactory
interface.
-
-
Field Summary
-
Fields inherited from class org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory
DEFAULT_BLOB_ACCESS_PROVIDER
-
-
Constructor Summary
Constructors Constructor Description ValueFactoryImpl(@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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description @Nullable Binary
completeBinaryUpload(@NotNull java.lang.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 java.io.InputStream stream)
Returns aBinary
object with a value consisting of the content of the specifiedInputStream
.@Nullable Binary
createBinary(Blob blob)
@NotNull Value
createValue(@NotNull java.io.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
getBlob(Binary binary)
@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 Detail
-
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 Detail
-
createValue
@NotNull public @NotNull Value createValue(@NotNull @NotNull java.io.InputStream value)
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
@NotNull public @NotNull Value createValue(@NotNull @NotNull Binary value)
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 java.io.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
@Nullable public @Nullable BinaryUpload initiateBinaryUpload(long maxSize, int maxParts)
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 java.lang.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
@Nullable public @Nullable Binary createBinary(Blob blob) throws RepositoryException
- Throws:
RepositoryException
-
getBlob
@Nullable public @Nullable Blob getBlob(Binary binary) throws RepositoryException
- Throws:
RepositoryException
-
-