@Override public S responseRequired(final boolean responseRequired) { putBoolean(DittoHeaderDefinition.RESPONSE_REQUIRED, responseRequired); return myself; }
@Override public S origin(final CharSequence origin) { putCharSequence(DittoHeaderDefinition.ORIGIN, origin); return myself; }
@Override public S readSubjects(final Collection<String> readSubjects) { putStringCollection(DittoHeaderDefinition.READ_SUBJECTS, readSubjects); return myself; }
@Override public S putHeader(final CharSequence key, final CharSequence value) { validateKey(key); checkNotNull(value, "value"); validateValueType(key, value); headers.put(key.toString(), value.toString()); return myself; }
@Override public S schemaVersion(@Nullable final JsonSchemaVersion schemaVersion) { if (null != schemaVersion) { putCharSequence(DittoHeaderDefinition.SCHEMA_VERSION, schemaVersion.toString()); } else { removeHeader(DittoHeaderDefinition.SCHEMA_VERSION.getKey()); } return myself; }
protected void putStringCollection(final HeaderDefinition definition, final Collection<String> collection) { checkNotNull(collection, definition.getKey()); putJsonValue(definition, toJsonValueArray(collection)); }
@Override protected void validateValueType(final CharSequence key, final CharSequence value) { super.validateValueType(key, value); MessageHeaderDefinition.forKey(key).ifPresent(definition -> { if (MANDATORY_HEADERS.contains(definition)) { final String msgTemplate = "Value for mandatory header with key <{0}> cannot be overwritten!"; throw new IllegalArgumentException(MessageFormat.format(msgTemplate, key)); } definition.validateValue(value); }); }
@Override public S authorizationContext(@Nullable final AuthorizationContext authorizationContext) { if (null != authorizationContext) { return authorizationSubjects(authorizationContext.getAuthorizationSubjectIds()); } return myself; }
@Override public S removeHeader(final CharSequence key) { validateKey(key); headers.remove(key.toString()); return myself; }
@Override public R build() { final ImmutableDittoHeaders dittoHeaders = ImmutableDittoHeaders.of(headers); return doBuild(dittoHeaders); }
protected void putBoolean(final HeaderDefinition definition, final boolean value) { putJsonValue(definition, JsonFactory.newValue(value)); }
/** * Puts the specified CharSequence value to this builder using the key of the specified definition. If the value * is {@code null} a possibly existing value for the same key is removed; thus putting a {@code null} value is same * as removing the key-value-pair. * * @param definition provides the key to be associated with {@code value}. * @param value the value to be associated with the key of {@code definition}. */ protected void putCharSequence(final HeaderDefinition definition, @Nullable final CharSequence value) { if (null != value) { checkNotEmpty(value, definition.getKey()); headers.put(definition.getKey(), value.toString()); } else { removeHeader(definition.getKey()); } }
@Override public S putHeader(final CharSequence key, final CharSequence value) { validateKey(key); checkNotNull(value, "value"); validateValueType(key, value); headers.put(key.toString(), value.toString()); return myself; }
@Override public S schemaVersion(@Nullable final JsonSchemaVersion schemaVersion) { if (null != schemaVersion) { putCharSequence(DittoHeaderDefinition.SCHEMA_VERSION, schemaVersion.toString()); } else { removeHeader(DittoHeaderDefinition.SCHEMA_VERSION.getKey()); } return myself; }
protected void putStringCollection(final HeaderDefinition definition, final Collection<String> collection) { checkNotNull(collection, definition.getKey()); putJsonValue(definition, toJsonValueArray(collection)); }
@Override public S authorizationContext(@Nullable final AuthorizationContext authorizationContext) { if (null != authorizationContext) { return authorizationSubjects(authorizationContext.getAuthorizationSubjectIds()); } return myself; }
@Override public S removeHeader(final CharSequence key) { validateKey(key); headers.remove(key.toString()); return myself; }
@Override public R build() { final ImmutableDittoHeaders dittoHeaders = ImmutableDittoHeaders.of(headers); return doBuild(dittoHeaders); }
protected void putBoolean(final HeaderDefinition definition, final boolean value) { putJsonValue(definition, JsonFactory.newValue(value)); }
/** * Puts the specified CharSequence value to this builder using the key of the specified definition. If the value * is {@code null} a possibly existing value for the same key is removed; thus putting a {@code null} value is same * as removing the key-value-pair. * * @param definition provides the key to be associated with {@code value}. * @param value the value to be associated with the key of {@code definition}. */ protected void putCharSequence(final HeaderDefinition definition, @Nullable final CharSequence value) { if (null != value) { checkNotEmpty(value, definition.getKey()); headers.put(definition.getKey(), value.toString()); } else { removeHeader(definition.getKey()); } }