Skip to content

Commit

Permalink
Review: Add desired properties to model
Browse files Browse the repository at this point in the history
Fixed review change requests by @jufickel-b

Part of #697

Signed-off-by: David Schwilk <david.schwilk@bosch.io>
  • Loading branch information
DerSchwilk committed Nov 4, 2020
1 parent fe2d7eb commit 2dbcfdc
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ default FeaturesBuilder toBuilder() {
* @throws NullPointerException if any argument is {@code null}.
* @since 1.4.0
*/
Features setDesiredProperties(String featureId, FeatureProperties desiredProperties);
Features setDesiredProperties(CharSequence featureId, FeatureProperties desiredProperties);

/**
* Removes all desired properties of the Feature with the given ID from a copy of this Features.
Expand All @@ -162,7 +162,7 @@ default FeaturesBuilder toBuilder() {
* @throws NullPointerException if {@code featureId} is {@code null}.
* @since 1.4.0
*/
Features removeDesiredProperties(String featureId);
Features removeDesiredProperties(CharSequence featureId);

/**
* Sets the value of the desired property which is referred by the given JSON Pointer of the Feature with the given
Expand All @@ -175,7 +175,7 @@ default FeaturesBuilder toBuilder() {
* @throws NullPointerException if any argument is {@code null}.
* @since 1.4.0
*/
Features setDesiredProperty(String featureId, JsonPointer desiredPropertyPath, JsonValue desiredPropertyValue);
Features setDesiredProperty(CharSequence featureId, JsonPointer desiredPropertyPath, JsonValue desiredPropertyValue);

/**
* Removes the desired property which is referred by the given JSON Pointer from the Feature with the given ID on
Expand All @@ -187,7 +187,7 @@ default FeaturesBuilder toBuilder() {
* @throws NullPointerException if any argument is {@code null}.
* @since 1.4.0
*/
Features removeDesiredProperty(String featureId, JsonPointer desiredPropertyPath);
Features removeDesiredProperty(CharSequence featureId, JsonPointer desiredPropertyPath);

/**
* Indicates whether this Features are equivalent to semantic {@code null}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,10 @@ public static ImmutableFeature of(final String featureId, @Nullable final Featur
* {@link org.eclipse.ditto.model.base.entity.id.RegexPatterns#NO_CONTROL_CHARS_NO_SLASHES_PATTERN}.
* @since 1.4.0
*/
public static ImmutableFeature of(final String featureId, @Nullable final FeatureDefinition definition,
@Nullable final FeatureProperties properties, @Nullable final FeatureProperties desiredProperties) {
public static ImmutableFeature of(final CharSequence featureId,
@Nullable final FeatureDefinition definition,
@Nullable final FeatureProperties properties,
@Nullable final FeatureProperties desiredProperties) {

ConditionChecker.checkNotNull(featureId, "ID of the Feature");

Expand All @@ -118,7 +120,7 @@ public static ImmutableFeature of(final String featureId, @Nullable final Featur
.build();
}

return new ImmutableFeature(featureId, definition, properties, desiredProperties);
return new ImmutableFeature(featureId.toString(), definition, properties, desiredProperties);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,11 @@ private Feature getFeatureOrNull(final String featureId) {
return features.get(checkFeatureId(featureId));
}

@Nullable
private Feature getFeatureOrNull(final CharSequence featureId) {
return features.get(checkFeatureId(featureId.toString()));
}

private Features createNewFeaturesWithNewFeature(final Feature newFeature) {
final Map<String, Feature> featuresCopy = copyFeatures();
featuresCopy.put(newFeature.getId(), newFeature);
Expand Down Expand Up @@ -217,8 +222,8 @@ public Features removeProperty(final String featureId, final JsonPointer propert
}

@Override
public Features setDesiredProperties(final String featureId, final FeatureProperties desiredProperties) {
checkNotNull(desiredProperties, "desired properties to be set");
public Features setDesiredProperties(final CharSequence featureId, final FeatureProperties desiredProperties) {
checkNotNull(desiredProperties, "desiredProperties");

Feature feature = getFeatureOrNull(featureId);
if (null != feature) {
Expand All @@ -230,7 +235,7 @@ public Features setDesiredProperties(final String featureId, final FeatureProper
}

@Override
public Features removeDesiredProperties(final String featureId) {
public Features removeDesiredProperties(final CharSequence featureId) {
final Feature feature = getFeatureOrNull(featureId);
if (null != feature) {
return setFeature(feature.removeDesiredProperties());
Expand All @@ -240,22 +245,23 @@ public Features removeDesiredProperties(final String featureId) {
}

@Override
public Features setDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath,
public Features setDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

Feature feature = getFeatureOrNull(featureId);
if (null != feature) {
feature = feature.setDesiredProperty(desiredPropertyPath, desiredPropertyValue);
} else {
feature = ThingsModelFactory.newFeature(featureId, null, null,
ThingsModelFactory.newFeaturePropertiesBuilder()
.set(desiredPropertyPath, desiredPropertyValue)
.build());
.set(desiredPropertyPath, desiredPropertyValue)
.build());
}
return setFeature(feature);
}

@Override
public Features removeDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath) {
public Features removeDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath) {
final Feature feature = getFeatureOrNull(featureId);
if (null != feature) {
return setFeature(feature.removeDesiredProperty(desiredPropertyPath));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -415,7 +415,7 @@ public Thing removeFeatureProperty(final String featureId, final JsonPointer pro
}

@Override
public Thing setFeatureDesiredProperties(final String featureId, final FeatureProperties desiredProperties) {
public Thing setFeatureDesiredProperties(final CharSequence featureId, final FeatureProperties desiredProperties) {
if (null == features || features.isNull()) {
return setFeature(ThingsModelFactory.newFeature(featureId, null, null,
desiredProperties));
Expand All @@ -424,12 +424,12 @@ public Thing setFeatureDesiredProperties(final String featureId, final FeaturePr
}

@Override
public Thing removeFeatureDesiredProperties(final String featureId) {
public Thing removeFeatureDesiredProperties(final CharSequence featureId) {
return (null != features) ? setFeatures(features.removeDesiredProperties(featureId)) : this;
}

@Override
public Thing setFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath,
public Thing setFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

final Features newFeatures;
Expand All @@ -446,7 +446,7 @@ public Thing setFeatureDesiredProperty(final String featureId, final JsonPointer
}

@Override
public Thing removeFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath) {
public Thing removeFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath) {
return (null != features) ? setFeatures(features.removeDesiredProperty(featureId, desiredPropertyPath)) : this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ public FromCopy setFeature(final Predicate<Features> existingFeaturesPredicate,

@Override
public FromCopy setFeature(final Predicate<Features> existingFeaturesPredicate,
final String featureId,
final CharSequence featureId,
final FeatureDefinition featureDefinition,
final FeatureProperties featureProperties,
final FeatureProperties featureDesiredProperties) {
Expand All @@ -506,7 +506,7 @@ public FromCopy setFeature(final Predicate<Features> existingFeaturesPredicate,
}

@Override
public FromCopy setFeature(final String featureId, @Nullable final FeatureDefinition featureDefinition,
public FromCopy setFeature(final CharSequence featureId, @Nullable final FeatureDefinition featureDefinition,
@Nullable final FeatureProperties featureProperties, @Nullable final FeatureProperties featureDesiredProperties) {

fromScratchBuilder.setFeature(featureId, featureDefinition, featureProperties, featureDesiredProperties);
Expand Down Expand Up @@ -610,7 +610,7 @@ public FromCopy removeFeatureProperties(final Predicate<Features> existingFeatur
}

@Override
public FromCopy setFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath,
public FromCopy setFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

fromScratchBuilder.setFeatureDesiredProperty(featureId, desiredPropertyPath, desiredPropertyValue);
Expand All @@ -619,7 +619,7 @@ public FromCopy setFeatureDesiredProperty(final String featureId, final JsonPoin

@Override
public FromCopy setFeatureDesiredProperty(final Predicate<Features> existingFeaturesPredicate,
final String featureId,
final CharSequence featureId,
final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

Expand All @@ -630,13 +630,13 @@ public FromCopy setFeatureDesiredProperty(final Predicate<Features> existingFeat
}

@Override
public FromCopy removeFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath) {
public FromCopy removeFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath) {
fromScratchBuilder.removeFeatureDesiredProperty(featureId, desiredPropertyPath);
return this;
}

@Override
public FromCopy removeFeatureDesiredProperty(final Predicate<Features> existingFeaturesPredicate, final String featureId,
public FromCopy removeFeatureDesiredProperty(final Predicate<Features> existingFeaturesPredicate, final CharSequence featureId,
final JsonPointer desiredPropertyPath) {

if (testFeaturesPredicate(existingFeaturesPredicate)) {
Expand All @@ -646,7 +646,7 @@ public FromCopy removeFeatureDesiredProperty(final Predicate<Features> existingF
}

@Override
public FromCopy setFeatureDesiredProperties(final Predicate<Features> existingFeaturesPredicate, final String featureId,
public FromCopy setFeatureDesiredProperties(final Predicate<Features> existingFeaturesPredicate, final CharSequence featureId,
final FeatureProperties desiredProperties) {

if (testFeaturesPredicate(existingFeaturesPredicate)) {
Expand All @@ -657,7 +657,7 @@ public FromCopy setFeatureDesiredProperties(final Predicate<Features> existingFe

@Override
public FromCopy removeFeatureDesiredProperties(final Predicate<Features> existingFeaturesPredicate,
final String featureId) {
final CharSequence featureId) {

if (testFeaturesPredicate(existingFeaturesPredicate)) {
fromScratchBuilder.removeFeatureDesiredProperties(featureId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ public FromScratch setFeature(final String featureId, @Nullable final FeatureDef
}

@Override
public FromScratch setFeature(final String featureId, @Nullable final FeatureDefinition featureDefinition,
public FromScratch setFeature(final CharSequence featureId, @Nullable final FeatureDefinition featureDefinition,
@Nullable final FeatureProperties featureProperties, @Nullable final FeatureProperties featureDesiredProperties) {

return setFeature(ThingsModelFactory.newFeature(featureId, featureDefinition, featureProperties,
Expand Down Expand Up @@ -277,10 +277,10 @@ public FromScratch removeFeatureProperties(final String featureId) {
}

@Override
public FromScratch setFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath,
public FromScratch setFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

checkNotNull(desiredPropertyPath, "desired property value to be set");
checkNotNull(desiredPropertyPath, "desiredPropertyPath");

final Features existingFeatures = getFeatures();
if (null != existingFeatures) {
Expand All @@ -294,9 +294,9 @@ public FromScratch setFeatureDesiredProperty(final String featureId, final JsonP
}

@Override
public FromScratch removeFeatureDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath) {
checkNotNull(featureId, "identifier of the Feature from which the desired property to be removed");
checkNotNull(desiredPropertyPath, "path to the desired property to be removed");
public FromScratch removeFeatureDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath) {
checkNotNull(featureId, "featureId");
checkNotNull(desiredPropertyPath, "desiredPropertyPath");

if (null != featuresBuilder) {
final Features existingFeatures = getFeatures();
Expand All @@ -308,9 +308,9 @@ public FromScratch removeFeatureDesiredProperty(final String featureId, final Js
}

@Override
public FromScratch setFeatureDesiredProperties(final String featureId, final FeatureProperties desiredPropertiesPath) {
checkNotNull(featureId, "ID of the Feature to set the desired properties for");
checkNotNull(desiredPropertiesPath, "desired FeatureProperties to be set");
public FromScratch setFeatureDesiredProperties(final CharSequence featureId, final FeatureProperties desiredPropertiesPath) {
checkNotNull(featureId, "featureId");
checkNotNull(desiredPropertiesPath, "desiredPropertiesPath");

invokeOnFeaturesBuilder(fb -> fb.set(fb.get(featureId)
.map(feature -> feature.setDesiredProperties(desiredPropertiesPath))
Expand All @@ -320,8 +320,8 @@ public FromScratch setFeatureDesiredProperties(final String featureId, final Fea
}

@Override
public FromScratch removeFeatureDesiredProperties(final String featureId) {
checkNotNull(featureId, "ID of the Feature to set the properties for");
public FromScratch removeFeatureDesiredProperties(final CharSequence featureId) {
checkNotNull(featureId, "featureId");
if (null != featuresBuilder) {
featuresBuilder.get(featureId)
.map(Feature::removeDesiredProperties)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public static NullFeatures newInstance() {
return new NullFeatures();
}

private static void checkFeatureId(final String featureId) {
private static void checkFeatureId(final CharSequence featureId) {
ConditionChecker.checkNotNull(featureId, "Feature ID");
}

Expand Down Expand Up @@ -123,35 +123,36 @@ public Features removeProperty(final String featureId, final JsonPointer propert
}

@Override
public Features setDesiredProperties(final String featureId, final FeatureProperties desiredProperties) {
public Features setDesiredProperties(final CharSequence featureId, final FeatureProperties desiredProperties) {
checkFeatureId(featureId);
ConditionChecker.checkNotNull(desiredProperties, "desired properties to be set");
ConditionChecker.checkNotNull(desiredProperties, "desiredProperties");

return this;
}

@Override
@SuppressWarnings("squid:S4144")
public Features removeDesiredProperties(final String featureId) {
public Features removeDesiredProperties(final CharSequence featureId) {
checkFeatureId(featureId);

return this;
}

@Override
public Features setDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath,
public Features setDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath,
final JsonValue desiredPropertyValue) {

checkFeatureId(featureId);
ConditionChecker.checkNotNull(desiredPropertyPath, "JSON pointer to the desired property to be set");
ConditionChecker.checkNotNull(desiredPropertyPath, "value of the desired property to be set");
ConditionChecker.checkNotNull(desiredPropertyPath, "desiredPropertyPath");
ConditionChecker.checkNotNull(desiredPropertyValue, "desiredPropertyValue");

return this;
}

@Override
public Features removeDesiredProperty(final String featureId, final JsonPointer desiredPropertyPath) {
public Features removeDesiredProperty(final CharSequence featureId, final JsonPointer desiredPropertyPath) {
checkFeatureId(featureId);
ConditionChecker.checkNotNull(desiredPropertyPath, "JSON pointer to the desired property to be removed");
ConditionChecker.checkNotNull(desiredPropertyPath, "desiredPropertyPath");

return this;
}
Expand Down
Loading

0 comments on commit 2dbcfdc

Please sign in to comment.