Skip to content

Commit

Permalink
allow multiple search update reasons in metadata
Browse files Browse the repository at this point in the history
Signed-off-by: Dominik Guggemos <dominik.guggemos@bosch.io>
  • Loading branch information
dguggemos committed Dec 1, 2021
1 parent 9f87706 commit 80d843f
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public final class Metadata {
private final boolean invalidateThing;
private final boolean invalidatePolicy;
@Nullable private final ActorRef origin;
private final UpdateReason reason;
private final List<UpdateReason> updateReasons;

private Metadata(final ThingId thingId,
final long thingRevision,
Expand All @@ -65,7 +65,7 @@ private Metadata(final ThingId thingId,
final boolean invalidateThing,
final boolean invalidatePolicy,
@Nullable final ActorRef origin,
final UpdateReason reason) {
final Collection<UpdateReason> updateReasons) {

this.thingId = thingId;
this.thingRevision = thingRevision;
Expand All @@ -78,7 +78,7 @@ private Metadata(final ThingId thingId,
this.invalidateThing = invalidateThing;
this.invalidatePolicy = invalidatePolicy;
this.origin = origin;
this.reason = reason;
this.updateReasons = List.copyOf(updateReasons);
}

/**
Expand All @@ -99,7 +99,7 @@ public static Metadata of(final ThingId thingId,

return new Metadata(thingId, thingRevision, policyId, policyRevision, null,
List.of(), null != timer ? List.of(timer) : List.of(), List.of(), false, false, null,
UpdateReason.UNKNOWN);
List.of(UpdateReason.UNKNOWN));
}

/**
Expand All @@ -123,7 +123,7 @@ public static Metadata of(final ThingId thingId,

return new Metadata(thingId, thingRevision, policyId, policyRevision, null, events,
null != timer ? List.of(timer) : List.of(),
null != sender ? List.of(sender) : List.of(), false, false, null, UpdateReason.UNKNOWN);
null != sender ? List.of(sender) : List.of(), false, false, null, List.of(UpdateReason.UNKNOWN));
}

/**
Expand All @@ -147,7 +147,7 @@ public static Metadata of(final ThingId thingId,
final Collection<ActorRef> senders) {

return new Metadata(thingId, thingRevision, policyId, policyRevision, modified, List.of(), timers, senders,
false, false, null, UpdateReason.UNKNOWN);
false, false, null, List.of(UpdateReason.UNKNOWN));
}

/**
Expand All @@ -170,7 +170,7 @@ public static Metadata of(final ThingId thingId,

return new Metadata(thingId, thingRevision, policyId, policyRevision, modified,
List.of(), null != timer ? List.of(timer) : List.of(), List.of(), false, false, null,
UpdateReason.UNKNOWN);
List.of(UpdateReason.UNKNOWN));
}

/**
Expand All @@ -195,7 +195,7 @@ public static Metadata fromResponse(final UpdateThingResponse updateThingRespons
*/
public Metadata invalidateCaches(final boolean invalidateThing, final boolean invalidatePolicy) {
return new Metadata(thingId, thingRevision, policyId, policyRevision, modified, events, timers, senders,
invalidateThing, invalidatePolicy, origin, reason);
invalidateThing, invalidatePolicy, origin, updateReasons);
}

/**
Expand All @@ -205,7 +205,7 @@ public Metadata invalidateCaches(final boolean invalidateThing, final boolean in
*/
public Metadata withOrigin(@Nullable final ActorRef origin) {
return new Metadata(thingId, thingRevision, policyId, policyRevision, modified, events, timers, senders,
invalidateThing, invalidatePolicy, origin, reason);
invalidateThing, invalidatePolicy, origin, updateReasons);
}

/**
Expand All @@ -215,7 +215,7 @@ public Metadata withOrigin(@Nullable final ActorRef origin) {
*/
public Metadata withSender(final ActorRef sender) {
return new Metadata(thingId, thingRevision, policyId, policyRevision, modified, events, timers, List.of(sender),
invalidateThing, invalidatePolicy, origin, reason);
invalidateThing, invalidatePolicy, origin, updateReasons);
}

/**
Expand All @@ -225,7 +225,7 @@ public Metadata withSender(final ActorRef sender) {
*/
public Metadata withUpdateReason(final UpdateReason reason) {
return new Metadata(thingId, thingRevision, policyId, policyRevision, modified, events, timers, senders,
invalidateThing, invalidatePolicy, origin, reason);
invalidateThing, invalidatePolicy, origin, List.of(reason));
}

/**
Expand Down Expand Up @@ -324,8 +324,8 @@ public List<ActorRef> getSenders() {
*
* @return the update reason.
*/
public UpdateReason getUpdateReason() {
return reason;
public List<UpdateReason> getUpdateReasons() {
return updateReasons;
}

/**
Expand Down Expand Up @@ -368,11 +368,13 @@ public Metadata append(final Metadata newMetadata) {
Stream.concat(timers.stream(), newMetadata.timers.stream()).collect(Collectors.toList());
final List<ActorRef> newSenders =
Stream.concat(senders.stream(), newMetadata.senders.stream()).collect(Collectors.toList());
final List<UpdateReason> newReasons =
Stream.concat(updateReasons.stream(), newMetadata.updateReasons.stream()).collect(Collectors.toList());
return new Metadata(newMetadata.thingId, newMetadata.thingRevision, newMetadata.policyId,
newMetadata.policyRevision, newMetadata.modified, newEvents, newTimers, newSenders,
invalidateThing || newMetadata.invalidateThing,
invalidatePolicy || newMetadata.invalidatePolicy,
newMetadata.origin, newMetadata.reason);
newMetadata.origin, newReasons);
}

/**
Expand Down Expand Up @@ -429,13 +431,13 @@ public boolean equals(final Object o) {
invalidateThing == that.invalidateThing &&
invalidatePolicy == that.invalidatePolicy &&
Objects.equals(origin, that.origin) &&
Objects.equals(reason, that.reason);
Objects.equals(updateReasons, that.updateReasons);
}

@Override
public int hashCode() {
return Objects.hash(thingId, thingRevision, policyId, policyRevision, modified, events, timers, senders,
invalidateThing, invalidatePolicy, origin, reason);
invalidateThing, invalidatePolicy, origin, updateReasons);
}

@Override
Expand All @@ -452,7 +454,7 @@ public String toString() {
", invalidateThing=" + invalidateThing +
", invalidatePolicy=" + invalidatePolicy +
", origin=" + origin +
", reason=" + reason +
", updateReasons=" + updateReasons +
"]";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ public enum UpdateReason {
/**
* Reason not known.
*/
UNKNOWN
UNKNOWN,
/**
* A search update failed and the update is retried.
*/
RETRY;

}
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ private void processUpdateThingResponse(final UpdateThingResponse response) {
log.warning("Got negative acknowledgement for <{}>; updating to <{}>.",
Metadata.fromResponse(response),
metadata);
enqueueMetadata(metadata);
enqueueMetadata(metadata.withUpdateReason(UpdateReason.RETRY));
}
}

Expand Down

0 comments on commit 80d843f

Please sign in to comment.