Skip to content

Commit

Permalink
review:
Browse files Browse the repository at this point in the history
add equals and hashCode to ModifySplitBrainResolver and ModifySplitBrainResolverResponse;
add package-info.java;

Signed-off-by: Stefan Maute <stefan.maute@bosch.io>
  • Loading branch information
Stefan Maute committed May 3, 2022
1 parent fa019f0 commit e02e044
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 16 deletions.
Expand Up @@ -42,6 +42,7 @@ final class DittoSplitBrainResolver extends AbstractActor {
@Nullable
private ActorRef splitBrainResolverActor;

@SuppressWarnings("unused")
private DittoSplitBrainResolver(final Props splitBrainResolverProps) {
this.splitBrainResolverProps = splitBrainResolverProps;
final Duration autoEnableAfter = getAutoEnableAfter();
Expand All @@ -52,6 +53,10 @@ private DittoSplitBrainResolver(final Props splitBrainResolverProps) {
LOGGER.info("SBR will be automatically enabled after <{}>", autoEnableAfter);
}

static Props props(@Nullable final Props splitBrainResolverProps) {
return Props.create(DittoSplitBrainResolver.class, splitBrainResolverProps);
}

private Duration getAutoEnableAfter() {
try {
return context().system().settings().config().getDuration(SBR_ENABLING_DELAY);
Expand All @@ -69,9 +74,6 @@ public Receive createReceive() {
.build();
}

static Props props(@Nullable final Props splitBrainResolverProps) {
return Props.create(DittoSplitBrainResolver.class, splitBrainResolverProps);
}

private ActorRef startChildActor(final Props props) {
return getContext().actorOf(props);
Expand All @@ -82,10 +84,10 @@ private void updateEnabled(final ModifySplitBrainResolver modifySplitBrainResolv
autoEnabling.cancel();
}
if (modifySplitBrainResolver.isEnabled() && splitBrainResolverActor == null) {
LOGGER.info("Enabling akka split brain resolver");
LOGGER.info("Enabling Akka split rain resolver");
splitBrainResolverActor = startChildActor(splitBrainResolverProps);
} else if (!modifySplitBrainResolver.isEnabled() && splitBrainResolverActor != null) {
LOGGER.info("Stopping akka split brain resolver");
LOGGER.info("Stopping Akka split brain resolver");
getContext().stop(splitBrainResolverActor);
splitBrainResolverActor = null;
}
Expand Down
Expand Up @@ -54,7 +54,7 @@ public Option<Props> downingActorProps() {
final Props splitBrainResolverProps = splitBrainResolverProvider.downingActorProps().get();
return Option.apply(DittoSplitBrainResolver.props(splitBrainResolverProps));
} catch (final Exception e) {
final String msg = "Could not create ditto split brain resolver props.";
final String msg = "Could not create Ditto split brain resolver props.";
LOGGER.error(msg, e);
throw new DittoConfigError(msg, e);
}
Expand Down
Expand Up @@ -12,8 +12,11 @@
*/
package org.eclipse.ditto.base.service.cluster;

import java.util.Objects;
import java.util.function.Predicate;

import javax.annotation.Nullable;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.base.model.json.FieldType;
import org.eclipse.ditto.base.model.json.JsonParsableCommand;
Expand All @@ -29,7 +32,7 @@
@JsonParsableCommand(typePrefix = ModifySplitBrainResolver.PREFIX, name = ModifySplitBrainResolver.NAME)
public final class ModifySplitBrainResolver extends AbstractCommand<ModifySplitBrainResolver> {

private static final JsonFieldDefinition<Boolean> ENABLED =
public static final JsonFieldDefinition<Boolean> ENABLED_FIELD_KEY =
JsonFieldDefinition.ofBoolean("enabled", FieldType.REGULAR, JsonSchemaVersion.V_2);

static final String PREFIX = "ditto.sbr:";
Expand All @@ -49,7 +52,7 @@ public boolean isEnabled() {

public static ModifySplitBrainResolver fromJson(final JsonObject jsonObject, final DittoHeaders dittoHeaders) {
return new CommandJsonDeserializer<ModifySplitBrainResolver>(TYPE, jsonObject).deserialize(() -> {
final boolean enabled = jsonObject.getValue(ENABLED).orElseThrow();
final boolean enabled = jsonObject.getValue(ENABLED_FIELD_KEY).orElseThrow();

return new ModifySplitBrainResolver(dittoHeaders, enabled);
});
Expand All @@ -62,7 +65,7 @@ static ModifySplitBrainResolver of(final boolean enabled) {
@Override
protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion,
final Predicate<JsonField> predicate) {
jsonObjectBuilder.set(ENABLED, enabled, schemaVersion.and(predicate));
jsonObjectBuilder.set(ENABLED_FIELD_KEY, enabled, schemaVersion.and(predicate));
}

@Override
Expand Down Expand Up @@ -90,4 +93,34 @@ public String getResourceType() {
return "sbr";
}

@Override
protected boolean canEqual(@Nullable final Object other) {
return other instanceof ModifySplitBrainResolver;
}

@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) return false;
final ModifySplitBrainResolver that = (ModifySplitBrainResolver) o;
return enabled == that.enabled;
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), enabled);
}

@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"enabled=" + enabled +
"]";
}

}
Expand Up @@ -12,17 +12,18 @@
*/
package org.eclipse.ditto.base.service.cluster;

import java.util.Objects;
import java.util.function.Predicate;

import javax.annotation.Nullable;

import org.eclipse.ditto.base.model.common.HttpStatus;
import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.base.model.json.FieldType;
import org.eclipse.ditto.base.model.json.JsonParsableCommandResponse;
import org.eclipse.ditto.base.model.json.JsonSchemaVersion;
import org.eclipse.ditto.base.model.signals.commands.AbstractCommandResponse;
import org.eclipse.ditto.base.model.signals.commands.CommandResponseJsonDeserializer;
import org.eclipse.ditto.json.JsonField;
import org.eclipse.ditto.json.JsonFieldDefinition;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.json.JsonObjectBuilder;
import org.eclipse.ditto.json.JsonPointer;
Expand All @@ -31,9 +32,6 @@
public final class ModifySplitBrainResolverResponse
extends AbstractCommandResponse<ModifySplitBrainResolverResponse> {

private static final JsonFieldDefinition<Boolean> ENABLED =
JsonFieldDefinition.ofBoolean("enabled", FieldType.REGULAR, JsonSchemaVersion.V_2);

static final String PREFIX = "ditto.sbr:";
static final String NAME = "modifyResponse";
public static final String TYPE = PREFIX + NAME;
Expand All @@ -42,7 +40,7 @@ public final class ModifySplitBrainResolverResponse
CommandResponseJsonDeserializer.newInstance(TYPE,
context -> {
final JsonObject jsonObject = context.getJsonObject();
final boolean enabled = jsonObject.getValue(ENABLED).orElseThrow();
final boolean enabled = jsonObject.getValue(ModifySplitBrainResolver.ENABLED_FIELD_KEY).orElseThrow();

This comment has been minimized.

Copy link
@Yannic92

Yannic92 May 4, 2022

Contributor

I don't like the reuse of fields of another signal that are named equally more or less by accident

This comment has been minimized.

Copy link
@Yannic92

Yannic92 May 4, 2022

Contributor

The response is a standalone signal and should not use json fields of the command.

return new ModifySplitBrainResolverResponse(context.getDittoHeaders(), enabled);
});

Expand Down Expand Up @@ -70,7 +68,7 @@ public static ModifySplitBrainResolverResponse fromJson(final JsonObject jsonObj
@Override
protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final JsonSchemaVersion schemaVersion,
final Predicate<JsonField> predicate) {
jsonObjectBuilder.set(ENABLED, enabled, schemaVersion.and(predicate));
jsonObjectBuilder.set(ModifySplitBrainResolver.ENABLED_FIELD_KEY, enabled, schemaVersion.and(predicate));
}

@Override
Expand All @@ -88,4 +86,34 @@ public ModifySplitBrainResolverResponse setDittoHeaders(final DittoHeaders ditto
return new ModifySplitBrainResolverResponse(dittoHeaders, enabled);
}

@Override
protected boolean canEqual(@Nullable final Object other) {
return other instanceof ModifySplitBrainResolverResponse;
}

@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) return false;
final ModifySplitBrainResolverResponse that = (ModifySplitBrainResolverResponse) o;
return enabled == that.enabled;
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), enabled);
}

@Override
public String toString() {
return getClass().getSimpleName() + " [" +
"enabled=" + enabled +
"]";
}

}
@@ -0,0 +1,14 @@
/*
* Copyright (c) 2022 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
@org.eclipse.ditto.utils.jsr305.annotations.AllValuesAreNonnullByDefault
package org.eclipse.ditto.base.service.cluster;

0 comments on commit e02e044

Please sign in to comment.