Class AbstractDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- java.lang.Object
-
- org.eclipse.ditto.model.base.headers.AbstractDittoHeadersBuilder<S,R>
-
- All Implemented Interfaces:
DittoHeadersBuilder<S,R>
@NotThreadSafe public abstract class AbstractDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders> extends Object implements DittoHeadersBuilder<S,R>
An abstract base implementation for subclasses ofDittoHeadersBuilder
. This implementation does already most of the work including header value validation.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractDittoHeadersBuilder(Map<String,String> initialHeaders, Collection<? extends HeaderDefinition> definitions, Class<?> selfType)
Constructs a newAbstractDittoHeadersBuilder
object.protected
AbstractDittoHeadersBuilder(R initialHeaders, Collection<? extends HeaderDefinition> definitions, Class<?> selfType)
Constructs a newAbstractDittoHeadersBuilder
object based on an existingDittoHeaders
instance applying a performance optimization: skipping the validation of values types as we can be sure that they already are valid when being passed in as DittoHeaders.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description S
acknowledgementRequest(AcknowledgementRequest acknowledgementRequest, AcknowledgementRequest... furtherAcknowledgementRequests)
Sets the acknowledgements ("ACK") which are requested together with an issued DittoCommand
.S
acknowledgementRequests(Collection<AcknowledgementRequest> acknowledgementRequests)
Sets the acknowledgements ("ACK") which are requested together with an issued DittoCommand
.S
allowPolicyLockout(boolean allowPolicyLockout)
Sets the allowPolicyLockout value.S
authorizationContext(AuthorizationContext authorizationContext)
Sets the authorization context value.S
authorizationSubjects(CharSequence authorizationSubject, CharSequence... furtherAuthorizationSubjects)
Deprecated.S
authorizationSubjects(Collection<String> authorizationSubjectIds)
Deprecated.R
build()
Creates a DittoHeaders object containing the key-value-pairs which were put to this builder.S
channel(CharSequence channel)
Sets the specified String as channel of the Signal/Exception.S
contentType(CharSequence contentType)
Sets the contentType value.S
contentType(ContentType contentType)
Sets the Ditto typed contentType value.S
correlationId(CharSequence correlationId)
Sets the specified correlation ID.protected abstract R
doBuild(DittoHeaders dittoHeaders)
S
dryRun(boolean dryRun)
Sets the dryRun value.S
eTag(EntityTag eTag)
Sets the ETag value.S
expectedResponseTypes(Collection<ResponseType> responseTypes)
Set the expected response types.S
expectedResponseTypes(ResponseType... responseTypes)
Set the expected response types.S
ifMatch(EntityTagMatchers entityTags)
Sets the If-Match value.S
ifNoneMatch(EntityTagMatchers entityTags)
Sets the If-None-Match value.S
inboundPayloadMapper(String inboundPayloadMapperId)
Sets the inboundMessageMapper
ID value.S
origin(CharSequence origin)
Sets the origin value.protected void
putBoolean(HeaderDefinition definition, boolean value)
protected void
putCharSequence(HeaderDefinition definition, CharSequence value)
Puts the specified CharSequence value to this builder using the key of the specified definition.S
putHeader(CharSequence key, CharSequence value)
Puts an arbitrary header with the specifiedname
and Stringvalue
to this builder.S
putHeaders(Map<String,String> headers)
Puts the specified headers to this builder.S
putMetadata(MetadataHeaderKey key, org.eclipse.ditto.json.JsonValue value)
Puts the given metadata association to this builder.protected void
putStringCollection(HeaderDefinition definition, Collection<String> collection)
S
readGrantedSubjects(Collection<AuthorizationSubject> readGrantedSubjects)
Sets the subjects with granted READ access.S
readRevokedSubjects(Collection<AuthorizationSubject> readRevokedSubjects)
Sets the subjects with explicitly revoked READ access.S
readSubjects(Collection<String> readSubjects)
Sets the readSubjects value.S
removeHeader(CharSequence key)
Removes from this builder the value which is associated with the specified key.S
removePreconditionHeaders()
Removes all precondition headers from this builder.S
replyTarget(Integer replyTarget)
Set the reply-target.S
responseRequired(boolean responseRequired)
Sets the responseRequired value.S
schemaVersion(JsonSchemaVersion schemaVersion)
Sets the json schema version value.S
timeout(CharSequence timeoutStr)
Sets the positive timeout string of the DittoHeaders to build.S
timeout(Duration timeout)
Sets the positive timeout duration of the DittoHeaders to build.protected static Map<String,String>
toMap(org.eclipse.ditto.json.JsonValueContainer<org.eclipse.ditto.json.JsonField> jsonObject)
String
toString()
protected void
validateValueType(CharSequence key, CharSequence value)
protected void
validateValueTypes(Map<String,String> headers, Collection<? extends HeaderDefinition> definitions)
Validates the values of the specified headers with the help of the specified definitions.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.ditto.model.base.headers.DittoHeadersBuilder
randomCorrelationId
-
-
-
-
Field Detail
-
myself
protected final S extends AbstractDittoHeadersBuilder<S,R> myself
-
-
Constructor Detail
-
AbstractDittoHeadersBuilder
protected AbstractDittoHeadersBuilder(Map<String,String> initialHeaders, Collection<? extends HeaderDefinition> definitions, Class<?> selfType)
Constructs a newAbstractDittoHeadersBuilder
object.- Parameters:
initialHeaders
- initial key-value-pairs or an empty map.definitions
- a collection of all well knownHeaderDefinition
s of this builder. The definitions are used for header value validation.selfType
- this type is used to simulate the "self type" of the returned object for Method Chaining of the builder methods.- Throws:
NullPointerException
- if any argument isnull
.
-
AbstractDittoHeadersBuilder
protected AbstractDittoHeadersBuilder(R initialHeaders, Collection<? extends HeaderDefinition> definitions, Class<?> selfType)
Constructs a newAbstractDittoHeadersBuilder
object based on an existingDittoHeaders
instance applying a performance optimization: skipping the validation of values types as we can be sure that they already are valid when being passed in as DittoHeaders.- Parameters:
initialHeaders
- initial DittoHeaders.definitions
- a collection of all well knownHeaderDefinition
s of this builder. The definitions are used for header value validation.selfType
- this type is used to simulate the "self type" of the returned object for Method Chaining of the builder methods.- Throws:
NullPointerException
- if any argument isnull
.
-
-
Method Detail
-
validateValueTypes
protected void validateValueTypes(Map<String,String> headers, Collection<? extends HeaderDefinition> definitions)
Validates the values of the specified headers with the help of the specified definitions.- Parameters:
headers
- the key-value-pairs to be validated.definitions
- perform the actual validation.
-
toMap
protected static Map<String,String> toMap(org.eclipse.ditto.json.JsonValueContainer<org.eclipse.ditto.json.JsonField> jsonObject)
-
correlationId
public S correlationId(@Nullable CharSequence correlationId)
Description copied from interface:DittoHeadersBuilder
Sets the specified correlation ID.- Specified by:
correlationId
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
correlationId
- the correlation ID to be set.- Returns:
- this builder for Method Chaining.
-
putCharSequence
protected void putCharSequence(HeaderDefinition definition, @Nullable CharSequence value)
Puts the specified CharSequence value to this builder using the key of the specified definition. If the value isnull
a possibly existing value for the same key is removed; thus putting anull
value is same as removing the key-value-pair.- Parameters:
definition
- provides the key to be associated withvalue
.value
- the value to be associated with the key ofdefinition
.
-
schemaVersion
public S schemaVersion(@Nullable JsonSchemaVersion schemaVersion)
Description copied from interface:DittoHeadersBuilder
Sets the json schema version value.- Specified by:
schemaVersion
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
schemaVersion
- the "schema version" value to be set.- Returns:
- this builder for Method Chaining.
-
authorizationContext
public S authorizationContext(@Nullable AuthorizationContext authorizationContext)
Description copied from interface:DittoHeadersBuilder
Sets the authorization context value.- Specified by:
authorizationContext
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
authorizationContext
- the "authorizationContext" value to be set.- Returns:
- this builder for Method Chaining.
-
replyTarget
public S replyTarget(@Nullable Integer replyTarget)
Description copied from interface:DittoHeadersBuilder
Set the reply-target.- Specified by:
replyTarget
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
replyTarget
- the reply-target identifier.- Returns:
- this builder.
-
expectedResponseTypes
public S expectedResponseTypes(ResponseType... responseTypes)
Description copied from interface:DittoHeadersBuilder
Set the expected response types. In combination withDittoHeadersBuilder.replyTarget(Integer)
this decides which type of responses are delivered to a reply target of a connection source.- Specified by:
expectedResponseTypes
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
responseTypes
- the response types that should be delivered to a reply target.- Returns:
- this builder.
-
expectedResponseTypes
public S expectedResponseTypes(Collection<ResponseType> responseTypes)
Description copied from interface:DittoHeadersBuilder
Set the expected response types. In combination withDittoHeadersBuilder.replyTarget(Integer)
this decides which type of responses are delivered to a reply target of a connection source.- Specified by:
expectedResponseTypes
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
responseTypes
- the response types that should be delivered to a reply target.- Returns:
- this builder.
-
putStringCollection
protected void putStringCollection(HeaderDefinition definition, Collection<String> collection)
-
authorizationSubjects
@Deprecated public S authorizationSubjects(Collection<String> authorizationSubjectIds)
Deprecated.Description copied from interface:DittoHeadersBuilder
Sets the IDs of Authorization Subjects.- Specified by:
authorizationSubjects
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
authorizationSubjectIds
- the IDs to be set.- Returns:
- this builder for Method Chaining.
-
authorizationSubjects
@Deprecated public S authorizationSubjects(CharSequence authorizationSubject, CharSequence... furtherAuthorizationSubjects)
Deprecated.Description copied from interface:DittoHeadersBuilder
Sets the authorizationSubjects value.- Specified by:
authorizationSubjects
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
authorizationSubject
- the authorizationSubject value to be set.furtherAuthorizationSubjects
- further of "authorized subjects" to be set.- Returns:
- this builder for Method Chaining.
-
readSubjects
public S readSubjects(Collection<String> readSubjects)
Description copied from interface:DittoHeadersBuilder
Sets the readSubjects value.- Specified by:
readSubjects
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
readSubjects
- the readSubjects value to be set.- Returns:
- this builder for Method Chaining.
-
readGrantedSubjects
public S readGrantedSubjects(Collection<AuthorizationSubject> readGrantedSubjects)
Description copied from interface:DittoHeadersBuilder
Sets the subjects with granted READ access.- Specified by:
readGrantedSubjects
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
readGrantedSubjects
- the value to be set.- Returns:
- this builder for Method Chaining.
-
readRevokedSubjects
public S readRevokedSubjects(Collection<AuthorizationSubject> readRevokedSubjects)
Description copied from interface:DittoHeadersBuilder
Sets the subjects with explicitly revoked READ access.- Specified by:
readRevokedSubjects
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
readRevokedSubjects
- the value to be set.- Returns:
- this builder for Method Chaining.
-
channel
public S channel(@Nullable CharSequence channel)
Description copied from interface:DittoHeadersBuilder
Sets the specified String as channel of the Signal/Exception.- Specified by:
channel
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
channel
- the channel of the Signal/Exception to be set.- Returns:
- this builder for Method Chaining.
-
responseRequired
public S responseRequired(boolean responseRequired)
Description copied from interface:DittoHeadersBuilder
Sets the responseRequired value. Call this method for explicitly waiving a response. Please note: If ACK requests are set (seeDittoHeadersBuilder.acknowledgementRequests(Collection)
calling this method has no effect. ACK requests always imply that a response is required.- Specified by:
responseRequired
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
responseRequired
- the responseRequired value to be set.- Returns:
- this builder for Method Chaining.
-
putBoolean
protected void putBoolean(HeaderDefinition definition, boolean value)
-
dryRun
public S dryRun(boolean dryRun)
Description copied from interface:DittoHeadersBuilder
Sets the dryRun value.- Specified by:
dryRun
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
dryRun
- the dryRun value to be set.- Returns:
- this builder for Method Chaining.
-
origin
public S origin(CharSequence origin)
Description copied from interface:DittoHeadersBuilder
Sets the origin value.- Specified by:
origin
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
origin
- the origin value to be set.- Returns:
- this builder for Method Chaining.
-
contentType
public S contentType(@Nullable CharSequence contentType)
Description copied from interface:DittoHeadersBuilder
Sets the contentType value.- Specified by:
contentType
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
contentType
- the contentType value to be set.- Returns:
- this builder for Method Chaining.
-
contentType
public S contentType(@Nullable ContentType contentType)
Description copied from interface:DittoHeadersBuilder
Sets the Ditto typed contentType value.- Specified by:
contentType
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
contentType
- the Ditto typed contentType value to be set.- Returns:
- this builder for Method Chaining.
-
eTag
public S eTag(EntityTag eTag)
Description copied from interface:DittoHeadersBuilder
Sets the ETag value.- Specified by:
eTag
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
eTag
- The ETag value to be set.- Returns:
- this builder for Method Chaining
-
ifMatch
public S ifMatch(EntityTagMatchers entityTags)
Description copied from interface:DittoHeadersBuilder
Sets the If-Match value.- Specified by:
ifMatch
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
entityTags
- The entity tags where one should match.- Returns:
- this builder for Method Chaining
-
ifNoneMatch
public S ifNoneMatch(EntityTagMatchers entityTags)
Description copied from interface:DittoHeadersBuilder
Sets the If-None-Match value.- Specified by:
ifNoneMatch
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
entityTags
- The entity tags that must not match.- Returns:
- this builder for Method Chaining
-
inboundPayloadMapper
public S inboundPayloadMapper(@Nullable String inboundPayloadMapperId)
Description copied from interface:DittoHeadersBuilder
Sets the inboundMessageMapper
ID value.- Specified by:
inboundPayloadMapper
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
inboundPayloadMapperId
- the inboundMessageMapper
ID which mapped incoming arbitrary payload from external sources. If null, the header will be removed.- Returns:
- this builder for Method Chaining
-
acknowledgementRequests
public S acknowledgementRequests(Collection<AcknowledgementRequest> acknowledgementRequests)
Description copied from interface:DittoHeadersBuilder
Sets the acknowledgements ("ACK") which are requested together with an issued DittoCommand
. Such ACKs are sent back to the issuer of the command so that it can be verified which steps were successful.In addition to built-in ACK labels like
DittoAcknowledgementLabel.TWIN_PERSISTED
also custom labels may be used which can be sent back even by external systems.- Specified by:
acknowledgementRequests
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
acknowledgementRequests
- the requests for acknowledgements.- Returns:
- this builder.
-
acknowledgementRequest
public S acknowledgementRequest(AcknowledgementRequest acknowledgementRequest, AcknowledgementRequest... furtherAcknowledgementRequests)
Description copied from interface:DittoHeadersBuilder
Sets the acknowledgements ("ACK") which are requested together with an issued DittoCommand
. Such ACKs are sent back to the issuer of the command so that it can be verified which steps were successful.In addition to built-in ACK labels like
DittoAcknowledgementLabel.TWIN_PERSISTED
also custom labels may be used which can be sent back even by external systems.As long as ACKs are requested, calls of
DittoHeadersBuilder.responseRequired(boolean)
are neglected as requested ACKs always imply that a response is required.- Specified by:
acknowledgementRequest
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
acknowledgementRequest
- the request for an acknowledgement.furtherAcknowledgementRequests
- further requests for acknowledgements.- Returns:
- this builder.
-
timeout
public S timeout(@Nullable CharSequence timeoutStr)
Description copied from interface:DittoHeadersBuilder
Sets the positive timeout string of the DittoHeaders to build.- Specified by:
timeout
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
timeoutStr
- the duration of the command containing the DittoHeaders to time out.- Returns:
- this builder.
-
timeout
public S timeout(@Nullable Duration timeout)
Description copied from interface:DittoHeadersBuilder
Sets the positive timeout duration of the DittoHeaders to build.- Specified by:
timeout
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
timeout
- the duration of the command containing the DittoHeaders to time out.- Returns:
- this builder.
-
putMetadata
public S putMetadata(MetadataHeaderKey key, org.eclipse.ditto.json.JsonValue value)
Description copied from interface:DittoHeadersBuilder
Puts the given metadata association to this builder. An existing entry with the same key will be replaced.- Specified by:
putMetadata
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
key
- the metadata key.value
- the metadata value.- Returns:
- this builder.
-
allowPolicyLockout
public S allowPolicyLockout(boolean allowPolicyLockout)
Description copied from interface:DittoHeadersBuilder
Sets the allowPolicyLockout value.- Specified by:
allowPolicyLockout
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
allowPolicyLockout
- the allowPolicyLockout value to be set.- Returns:
- this builder for method chaining.
-
putHeader
public S putHeader(CharSequence key, CharSequence value)
Description copied from interface:DittoHeadersBuilder
Puts an arbitrary header with the specifiedname
and Stringvalue
to this builder.- Specified by:
putHeader
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
key
- the header name to use.value
- the String value.- Returns:
- this builder for Method Chaining.
-
validateValueType
protected void validateValueType(CharSequence key, CharSequence value)
-
putHeaders
public S putHeaders(Map<String,String> headers)
Description copied from interface:DittoHeadersBuilder
Puts the specified headers to this builder. Existing headers with the same key will be replaced.- Specified by:
putHeaders
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
headers
- the headers to be put.- Returns:
- this builder for Method Chaining.
-
removeHeader
public S removeHeader(CharSequence key)
Description copied from interface:DittoHeadersBuilder
Removes from this builder the value which is associated with the specified key.- Specified by:
removeHeader
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Parameters:
key
- the key to remove the associated value for.- Returns:
- this builder for Method Chaining.
-
removePreconditionHeaders
public S removePreconditionHeaders()
Description copied from interface:DittoHeadersBuilder
Removes all precondition headers from this builder.- Specified by:
removePreconditionHeaders
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Returns:
- The builder without preconditionHeaders
-
build
public R build()
Description copied from interface:DittoHeadersBuilder
Creates a DittoHeaders object containing the key-value-pairs which were put to this builder.- Specified by:
build
in interfaceDittoHeadersBuilder<S extends AbstractDittoHeadersBuilder<S,R>,R extends DittoHeaders>
- Returns:
- the headers.
-
doBuild
protected abstract R doBuild(DittoHeaders dittoHeaders)
-
-