Skip to content

Commit

Permalink
fixed command dispatching in command strategies
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
  • Loading branch information
thjaeckle committed Jul 7, 2022
1 parent ef3567a commit c6295cc
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 9 deletions.
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.base.model.headers.WithDittoHeaders;
import org.eclipse.ditto.base.model.signals.commands.Command;
import org.eclipse.ditto.connectivity.api.commands.sudo.ConnectivitySudoCommand;
import org.eclipse.ditto.connectivity.model.Connection;
import org.eclipse.ditto.connectivity.model.ConnectionId;
import org.eclipse.ditto.connectivity.model.signals.commands.ConnectivityCommand;
Expand All @@ -44,7 +45,7 @@ abstract class AbstractConnectivityCommandStrategy<C extends Command<?>>

@Override
public boolean isDefined(final C command) {
return true;
return command instanceof ConnectivityCommand || command instanceof ConnectivitySudoCommand;
}

@Override
Expand Down
Expand Up @@ -15,7 +15,9 @@
import javax.annotation.Nullable;

import org.eclipse.ditto.base.model.signals.commands.Command;
import org.eclipse.ditto.connectivity.api.commands.sudo.ConnectivitySudoCommand;
import org.eclipse.ditto.connectivity.model.Connection;
import org.eclipse.ditto.connectivity.model.signals.commands.ConnectivityCommand;
import org.eclipse.ditto.connectivity.model.signals.commands.exceptions.ConnectionNotAccessibleException;
import org.eclipse.ditto.connectivity.model.signals.events.ConnectivityEvent;
import org.eclipse.ditto.connectivity.service.messaging.persistence.stages.ConnectionState;
Expand Down Expand Up @@ -66,8 +68,7 @@ private static ConnectionCreatedStrategies newCreatedStrategies() {

@Override
public boolean isDefined(final Command<?> command) {
// always defined so as to forward signals.
return true;
return command instanceof ConnectivityCommand ||command instanceof ConnectivitySudoCommand;
}

@Override
Expand Down
Expand Up @@ -15,7 +15,9 @@
import javax.annotation.Nullable;

import org.eclipse.ditto.base.model.signals.commands.Command;
import org.eclipse.ditto.connectivity.api.commands.sudo.ConnectivitySudoCommand;
import org.eclipse.ditto.connectivity.model.Connection;
import org.eclipse.ditto.connectivity.model.signals.commands.ConnectivityCommand;
import org.eclipse.ditto.connectivity.model.signals.commands.exceptions.ConnectionNotAccessibleException;
import org.eclipse.ditto.connectivity.model.signals.events.ConnectivityEvent;
import org.eclipse.ditto.connectivity.service.messaging.persistence.stages.ConnectionState;
Expand Down Expand Up @@ -66,8 +68,7 @@ public Result<ConnectivityEvent<?>> unhandled(final Context<ConnectionState> con

@Override
public boolean isDefined(final Command<?> command) {
// always defined so as to log ignored signals on debug level.
return true;
return command instanceof ConnectivityCommand ||command instanceof ConnectivitySudoCommand;
}

@Override
Expand Down
Expand Up @@ -34,6 +34,7 @@
import org.eclipse.ditto.internal.utils.persistentactors.etags.AbstractConditionHeaderCheckingCommandStrategy;
import org.eclipse.ditto.internal.utils.persistentactors.results.Result;
import org.eclipse.ditto.internal.utils.persistentactors.results.ResultFactory;
import org.eclipse.ditto.policies.api.commands.sudo.PolicySudoCommand;
import org.eclipse.ditto.policies.model.Label;
import org.eclipse.ditto.policies.model.Policy;
import org.eclipse.ditto.policies.model.PolicyEntry;
Expand All @@ -44,6 +45,7 @@
import org.eclipse.ditto.policies.model.SubjectExpiry;
import org.eclipse.ditto.policies.model.SubjectExpiryInvalidException;
import org.eclipse.ditto.policies.model.Subjects;
import org.eclipse.ditto.policies.model.signals.commands.PolicyCommand;
import org.eclipse.ditto.policies.model.signals.commands.exceptions.PolicyEntryModificationInvalidException;
import org.eclipse.ditto.policies.model.signals.commands.exceptions.PolicyEntryNotAccessibleException;
import org.eclipse.ditto.policies.model.signals.commands.exceptions.PolicyModificationInvalidException;
Expand Down Expand Up @@ -116,7 +118,7 @@ public ConditionalHeadersValidator getValidator() {

@Override
public boolean isDefined(final C command) {
return true;
return command instanceof PolicyCommand || command instanceof PolicySudoCommand;
}

@Override
Expand Down
Expand Up @@ -27,6 +27,7 @@
import org.eclipse.ditto.internal.utils.persistentactors.results.Result;
import org.eclipse.ditto.internal.utils.persistentactors.results.ResultFactory;
import org.eclipse.ditto.json.JsonValue;
import org.eclipse.ditto.things.api.commands.sudo.ThingSudoCommand;
import org.eclipse.ditto.things.model.Thing;
import org.eclipse.ditto.things.model.ThingId;
import org.eclipse.ditto.things.model.signals.commands.ThingCommand;
Expand Down Expand Up @@ -98,7 +99,7 @@ public Result<ThingEvent<?>> apply(final Context<ThingId> context, @Nullable fin
@Override
protected Optional<Metadata> calculateRelativeMetadata(@Nullable final Thing entity, final C command) {

if (command instanceof WithOptionalEntity) {
if (command instanceof WithOptionalEntity withOptionalEntity) {
final Metadata existingRelativeMetadata = Optional.ofNullable(entity)
.flatMap(Thing::getMetadata)
.flatMap(m -> m.getValue(command.getResourcePath()))
Expand All @@ -107,14 +108,14 @@ protected Optional<Metadata> calculateRelativeMetadata(@Nullable final Thing ent
.map(Metadata::newMetadata)
.orElse(null);
final MetadataFromSignal relativeMetadata =
MetadataFromSignal.of(command, (WithOptionalEntity) command, existingRelativeMetadata);
MetadataFromSignal.of(command, withOptionalEntity, existingRelativeMetadata);
return Optional.ofNullable(relativeMetadata.get());
}
return Optional.empty();
}

@Override
public boolean isDefined(final C command) {
return command instanceof ThingCommand;
return command instanceof ThingCommand || command instanceof ThingSudoCommand;
}
}

0 comments on commit c6295cc

Please sign in to comment.