Skip to content

Commit

Permalink
eclipse-ditto#760 moved new conditions parameter to the end of overlo…
Browse files Browse the repository at this point in the history
…aded methods

Signed-off-by: Johannes Schneider <johannes.schneider@bosch.io>
  • Loading branch information
jokraehe committed Aug 24, 2020
1 parent 7912a05 commit 8fb562b
Show file tree
Hide file tree
Showing 9 changed files with 88 additions and 74 deletions.
Expand Up @@ -386,15 +386,16 @@ public static MappingContext newMappingContext(final String mappingEngine, final
* Returns a new {@code MappingContext}.
*
* @param mappingEngine fully qualified classname of a mapping engine.
* @param conditions the conditions to be checked before mapping.
* @param options the mapping options required to instantiate a mapper.
* @param conditions the conditions to be checked before mapping.
* @return the created MappingContext.
* @throws NullPointerException if any argument is {@code null}.
*
* @since 1.2.0
*/
public static MappingContext newMappingContext(final String mappingEngine, final Set<String> conditions, final Map<String, String> options) {
return ImmutableMappingContext.of(mappingEngine, conditions, options);
public static MappingContext newMappingContext(final String mappingEngine, final Map<String, String> options,
final Set<String> conditions) {
return ImmutableMappingContext.of(mappingEngine, options, conditions);
}

/**
Expand Down
Expand Up @@ -41,16 +41,14 @@
final class ImmutableMappingContext implements MappingContext {

private final String mappingEngine;
private final Set<String> conditions;
private final Map<String, String> options;
private final Set<String> conditions;


private ImmutableMappingContext(final String mappingEngine, final Set<String> conditions,
final Map<String, String> options) {

private ImmutableMappingContext(final String mappingEngine, final Map<String, String> options,
final Set<String> conditions) {
this.mappingEngine = mappingEngine;
this.conditions = Collections.unmodifiableSet(new HashSet<>(conditions));
this.options = Collections.unmodifiableMap(new HashMap<>(options));
this.conditions = Collections.unmodifiableSet(new HashSet<>(conditions));
}

/**
Expand All @@ -62,28 +60,30 @@ private ImmutableMappingContext(final String mappingEngine, final Set<String> co
* @return a new instance of ImmutableMappingContext.
*/
public static ImmutableMappingContext of(final String mappingEngine, final Map<String, String> options) {
checkNotNull(mappingEngine, "mapping Engine");
checkNotNull(mappingEngine, "mappingEngine");
checkNotNull(options, "options");

return new ImmutableMappingContext(mappingEngine, Collections.emptySet(), options);
return new ImmutableMappingContext(mappingEngine, options, Collections.emptySet());
}

/**
* Creates a new {@code ImmutableMappingContext} instance.
*
* @param mappingEngine the mapping engine to use as fully qualified classname of an implementation of
* {@code MessageMapper} interface.
* @param conditions the conditions to be checked before mapping.
* @param options the mapping engine specific options to apply.
* @param conditions the conditions to be checked before mapping.
* @return a new instance of ImmutableMappingContext.
*
* @since 1.2.0
*/
public static ImmutableMappingContext of(final String mappingEngine, final Set<String> conditions,
final Map<String, String> options) {
checkNotNull(mappingEngine, "mapping Engine");
public static ImmutableMappingContext of(final String mappingEngine, final Map<String, String> options,
final Set<String> conditions) {
checkNotNull(mappingEngine, "mappingEngine");
checkNotNull(options, "options");
checkNotNull(conditions, "conditions");

return new ImmutableMappingContext(mappingEngine, conditions, options);
return new ImmutableMappingContext(mappingEngine, options, conditions);
}

/**
Expand All @@ -96,18 +96,19 @@ public static ImmutableMappingContext of(final String mappingEngine, final Set<S
*/
public static MappingContext fromJson(final JsonObject jsonObject) {
final String mappingEngine = jsonObject.getValueOrThrow(JsonFields.MAPPING_ENGINE);
final Set<String> conditions = jsonObject.getValue(JsonFields.CONDITIONS).map(array -> array.stream()
.filter(JsonValue::isString)
.map(JsonValue::asString)
.collect(Collectors.toSet()))
.orElse(Collections.emptySet());
final Map<String, String> options = jsonObject.getValueOrThrow(JsonFields.OPTIONS).stream()
.collect(Collectors.toMap(
e -> e.getKey().toString(),
e -> e.getValue().isString() ? e.getValue().asString() : e.getValue().toString())
);
final Set<String> conditions = jsonObject.getValue(JsonFields.CONDITIONS)
.map(array -> array.stream()
.filter(JsonValue::isString)
.map(JsonValue::asString)
.collect(Collectors.toSet()))
.orElse(Collections.emptySet());

return of(mappingEngine, conditions, options);
return of(mappingEngine, options, conditions);
}

@Override
Expand All @@ -117,14 +118,14 @@ public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<

jsonObjectBuilder.set(JsonFields.MAPPING_ENGINE, mappingEngine, predicate);

if (!conditions.isEmpty()) {
jsonObjectBuilder.set(JsonFields.CONDITIONS, JsonArray.of(conditions), predicate);
}

jsonObjectBuilder.set(JsonFields.OPTIONS, options.entrySet().stream()
.map(e -> JsonField.newInstance(e.getKey(), JsonValue.of(e.getValue())))
.collect(JsonCollectors.fieldsToObject()), predicate);

if (!conditions.isEmpty()) {
jsonObjectBuilder.set(JsonFields.CONDITIONS, JsonArray.of(conditions), predicate);
}

return jsonObjectBuilder.build();
}

Expand All @@ -134,13 +135,13 @@ public String getMappingEngine() {
}

@Override
public Set<String> getConditions() {
return conditions;
public Map<String, String> getOptions() {
return options;
}

@Override
public Map<String, String> getOptions() {
return options;
public Set<String> getConditions() {
return conditions;
}

@Override
Expand All @@ -153,21 +154,21 @@ public boolean equals(final Object o) {
}
final ImmutableMappingContext that = (ImmutableMappingContext) o;
return Objects.equals(mappingEngine, that.mappingEngine) &&
Objects.equals(conditions, that.conditions) &&
Objects.equals(options, that.options);
Objects.equals(options, that.options) &&
Objects.equals(conditions, that.conditions);
}

@Override
public int hashCode() {
return Objects.hash(mappingEngine, conditions, options);
return Objects.hash(mappingEngine, options, conditions);
}

@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"mappingEngine=" + mappingEngine +
", conditions=" + conditions +
", options=" + options +
", conditions=" + conditions +
"]";
}
}
Expand Up @@ -30,13 +30,14 @@
public final class DefaultMessageMapperConfiguration implements MessageMapperConfiguration {

private final String id;
private final Set<String> conditions;
private final Map<String, String> properties;
private final Set<String> conditions;

private DefaultMessageMapperConfiguration(final String id, final Set<String> conditions, final Map<String, String> properties) {
private DefaultMessageMapperConfiguration(final String id, final Map<String, String> properties,
final Set<String> conditions) {
this.id = id;
this.conditions = Collections.unmodifiableSet(new HashSet<>(conditions));
this.properties = Collections.unmodifiableMap(new HashMap<>(properties));
this.conditions = Collections.unmodifiableSet(new HashSet<>(conditions));
}

/**
Expand All @@ -45,29 +46,31 @@ private DefaultMessageMapperConfiguration(final String id, final Set<String> con
* @param id the id of the mapper
* @param configuration the map holding configuration properties.
* @return the instance.
* @throws NullPointerException if {@code configuration} is {@code null}.
* @throws NullPointerException if {@code id} or {@code configuration} is {@code null}.
*/
public static DefaultMessageMapperConfiguration of(final String id, final Map<String, String> configuration) {
checkNotNull(id, "id");
checkNotNull(configuration, "configuration properties");
return new DefaultMessageMapperConfiguration(id, Collections.emptySet(), configuration);
checkNotNull(configuration, "configuration");
return new DefaultMessageMapperConfiguration(id, configuration, Collections.emptySet());
}

/**
* Constructs a new {@code DefaultMessageMapperConfiguration} of the given map.
*
* @param id the id of the mapper.
* @param conditions the conditions to be checked before mapping.
* @param configuration the map holding configuration properties.
* @param conditions the conditions to be checked before mapping.
* @return the instance.
* @throws NullPointerException if {@code configuration} is {@code null}.
* @throws NullPointerException if {@code id}, {@code configuration} or {@code conditions} is {@code null}.
*
* @since 1.2.0
*/
public static DefaultMessageMapperConfiguration of(final String id, final Set<String> conditions, final Map<String, String> configuration) {
public static DefaultMessageMapperConfiguration of(final String id, final Map<String, String> configuration,
final Set<String> conditions) {
checkNotNull(id, "id");
checkNotNull(configuration, "configuration properties");
return new DefaultMessageMapperConfiguration(id, conditions, configuration);
checkNotNull(configuration, "configuration");
checkNotNull("conditions");
return new DefaultMessageMapperConfiguration(id, configuration, conditions);
}

@Override
Expand All @@ -76,13 +79,13 @@ public String getId() {
}

@Override
public Set<String> getConditions() {
return conditions;
public Map<String, String> getProperties() {
return properties;
}

@Override
public Map<String, String> getProperties() {
return properties;
public Set<String> getConditions() {
return conditions;
}

@Override
Expand All @@ -91,21 +94,21 @@ public boolean equals(final Object o) {
if (o == null || getClass() != o.getClass()) return false;
final DefaultMessageMapperConfiguration that = (DefaultMessageMapperConfiguration) o;
return Objects.equals(id, that.id) &&
Objects.equals(conditions, that.conditions) &&
Objects.equals(properties, that.properties);
Objects.equals(properties, that.properties) &&
Objects.equals(conditions, that.conditions);
}

@Override
public int hashCode() {
return Objects.hash(id, conditions, properties);
return Objects.hash(id, properties, conditions);
}

@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"id=" + id +
"conditions=" + conditions +
", properties=" + properties +
", conditions=" + conditions +
"]";
}
}
Expand Up @@ -125,7 +125,7 @@ public Optional<MessageMapper> mapperOf(final String mapperId, final MappingCont
final Map<String, String> configuredAndDefaultOptions =
mergeMappingOptions(defaultOptions, mappingContext.getOptions());
final MessageMapperConfiguration options =
DefaultMessageMapperConfiguration.of(mapperId, configuredConditions, configuredAndDefaultOptions);
DefaultMessageMapperConfiguration.of(mapperId, configuredAndDefaultOptions, configuredConditions);
return mapper.flatMap(m -> configureInstance(m, options));
}

Expand Down
Expand Up @@ -37,6 +37,13 @@ public interface MessageMapperConfiguration {
*/
String getId();

/**
* Returns the configuration properties as Map.
*
* @return an unmodifiable Map containing the configuration properties.
*/
Map<String, String> getProperties();

/**
* Returns the conditions to check before mapping.
*
Expand All @@ -46,13 +53,6 @@ public interface MessageMapperConfiguration {
*/
Set<String> getConditions();

/**
* Returns the configuration properties as Map.
*
* @return an unmodifiable Map containing the configuration properties.
*/
Map<String, String> getProperties();

/**
* Searches the configuration for a specific property.
*
Expand Down Expand Up @@ -101,6 +101,13 @@ interface Builder<T extends MessageMapperConfiguration> {
*/
Map<String, String> getProperties();

/**
* @return the conditions as mutable set.
*
* @since 1.2.0
*/
Set<String> getConditions();

/**
* Builds the builder and returns a new instance of {@link MessageMapperConfiguration}
*
Expand Down
Expand Up @@ -41,13 +41,13 @@ public String getId() {
}

@Override
public Set<String> getConditions() {
return delegationTarget.getConditions();
public Map<String, String> getProperties() {
return delegationTarget.getProperties();
}

@Override
public Map<String, String> getProperties() {
return delegationTarget.getProperties();
public Set<String> getConditions() {
return delegationTarget.getConditions();
}

@Override
Expand All @@ -70,8 +70,8 @@ public int hashCode() {
@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"conditions=" + getConditions().toString() +
"properties=" + getProperties() +
", conditions=" + getConditions().toString() +
"]";
}

Expand All @@ -82,28 +82,29 @@ public String toString() {
static final class Builder implements JavaScriptMessageMapperConfiguration.Builder {

private final String id;
private final Set<String> conditions;
private final Map<String, String> properties;
private final Set<String> conditions;

Builder(final String id, final Set<String> conditions, final Map<String, String> properties) {
Builder(final String id, final Map<String, String> properties, final Set<String> conditions) {
this.id = id;
this.conditions = conditions;
this.properties = new HashMap<>(properties); // mutable map!
this.conditions = conditions;
}

@Override
public Map<String, String> getProperties() {
return properties;
}

@Override
public Set<String> getConditions() {
return conditions;
}

@Override
public JavaScriptMessageMapperConfiguration build() {
return new ImmutableJavaScriptMessageMapperConfiguration(
DefaultMessageMapperConfiguration.of(id, conditions, properties));
DefaultMessageMapperConfiguration.of(id, properties, conditions));
}

}
Expand Down
Expand Up @@ -39,7 +39,7 @@ private JavaScriptMessageMapperFactory() {
public static JavaScriptMessageMapperConfiguration.Builder createJavaScriptMessageMapperConfigurationBuilder(
final String id, final Map<String, String> properties) {

return new ImmutableJavaScriptMessageMapperConfiguration.Builder(id, Collections.emptySet(), properties);
return new ImmutableJavaScriptMessageMapperConfiguration.Builder(id, properties, Collections.emptySet());
}

/**
Expand Down

0 comments on commit 8fb562b

Please sign in to comment.