Skip to content

Commit

Permalink
Merge pull request eclipse-ditto#8 from bosch-iot-things/feature/move…
Browse files Browse the repository at this point in the history
…-live-signals

Move live signals into ditto-java-client
  • Loading branch information
Yannic92 authored and GitHub Enterprise committed Feb 24, 2021
2 parents 67d06a7 + 62414df commit 22ebcbf
Show file tree
Hide file tree
Showing 242 changed files with 21,301 additions and 86 deletions.
12 changes: 0 additions & 12 deletions java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -847,11 +847,6 @@
<artifactId>ditto-signals-commands-things</artifactId>
<version>${ditto.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-signals-commands-live</artifactId>
<version>${ditto.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-signals-commands-messages</artifactId>
Expand Down Expand Up @@ -1045,13 +1040,6 @@
<version>${ditto.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-signals-commands-live</artifactId>
<type>test-jar</type>
<version>${ditto.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-signals-events-base</artifactId>
Expand Down
1 change: 0 additions & 1 deletion java/src/main/assembly/assembly.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
<include>org.eclipse.ditto:ditto-signals-commands-things</include>
<include>org.eclipse.ditto:ditto-signals-commands-policies</include>
<include>org.eclipse.ditto:ditto-signals-commands-messages</include>
<include>org.eclipse.ditto:ditto-signals-commands-live</include>
<include>org.eclipse.ditto:ditto-signals-events-base</include>
<include>org.eclipse.ditto:ditto-signals-events-things</include>
<include>org.eclipse.ditto:ditto-signals-events-thingsearch</include>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
import java.util.stream.Stream;

import org.eclipse.ditto.client.live.commands.LiveCommandHandler;
import org.eclipse.ditto.client.live.commands.base.LiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswer;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.base.Signal;
import org.eclipse.ditto.signals.commands.live.base.LiveCommand;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswer;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.slf4j.Logger;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
import java.util.function.Function;

import org.eclipse.ditto.client.live.LiveCommandProcessor;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.commands.live.modify.DeleteFeaturePropertiesLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.DeleteFeaturePropertyLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.MergeThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyFeaturePropertiesLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyFeaturePropertyLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveFeaturePropertiesLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveFeaturePropertyLiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.modify.DeleteFeaturePropertiesLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.DeleteFeaturePropertyLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.MergeThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyFeaturePropertiesLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyFeaturePropertyLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveFeaturePropertiesLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveFeaturePropertyLiveCommand;

/**
* Provides the necessary functionality for registering {@link org.eclipse.ditto.signals.commands.live.base.LiveCommand
* Provides the necessary functionality for registering {@link org.eclipse.ditto.client.live.commands.base.LiveCommand
* LiveCommand} functions to receive commands to manage and retrieve {@link org.eclipse.ditto.model.things.FeatureProperties
* FeatureProperties}.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,17 @@

import java.util.function.Function;

import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.commands.live.modify.DeleteFeatureLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.DeleteFeaturesLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.MergeThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyFeatureLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyFeaturesLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveFeatureLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveFeaturesLiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.modify.DeleteFeatureLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.DeleteFeaturesLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.MergeThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyFeatureLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyFeaturesLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveFeatureLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveFeaturesLiveCommand;

/**
* Provides the necessary functionality for registering {@link org.eclipse.ditto.signals.commands.live.base.LiveCommand
* Provides the necessary functionality for registering {@link org.eclipse.ditto.client.live.commands.base.LiveCommand
* LiveCommand} functions to receive commands to manage and retrieve {@link org.eclipse.ditto.model.things.Feature
* Feature}s.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
import java.util.stream.Collectors;

import org.eclipse.ditto.client.ack.Acknowledgeable;
import org.eclipse.ditto.client.changes.AcknowledgementRequestHandle;
import org.eclipse.ditto.client.ack.internal.ImmutableAcknowledgementRequestHandle;
import org.eclipse.ditto.client.changes.AcknowledgementRequestHandle;
import org.eclipse.ditto.client.live.commands.base.LiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.model.base.acks.AcknowledgementLabel;
import org.eclipse.ditto.model.base.acks.AcknowledgementRequest;
import org.eclipse.ditto.signals.base.Signal;
import org.eclipse.ditto.signals.commands.live.base.LiveCommand;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;

/**
* Acknowledgeable of a live command.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
/*
* Copyright (c) 2021 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
*/
package org.eclipse.ditto.client.live.commands;

import static org.eclipse.ditto.model.base.common.ConditionChecker.checkNotNull;

import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;

import org.eclipse.ditto.client.live.commands.base.LiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyLiveCommandFactory;
import org.eclipse.ditto.client.live.commands.query.QueryLiveCommandFactory;
import org.eclipse.ditto.signals.commands.base.Command;
import org.eclipse.ditto.signals.commands.things.modify.CreateThing;
import org.eclipse.ditto.signals.commands.things.modify.DeleteAttribute;
import org.eclipse.ditto.signals.commands.things.modify.DeleteAttributes;
import org.eclipse.ditto.signals.commands.things.modify.DeleteFeature;
import org.eclipse.ditto.signals.commands.things.modify.DeleteFeatureDefinition;
import org.eclipse.ditto.signals.commands.things.modify.DeleteFeatureProperties;
import org.eclipse.ditto.signals.commands.things.modify.DeleteFeatureProperty;
import org.eclipse.ditto.signals.commands.things.modify.DeleteFeatures;
import org.eclipse.ditto.signals.commands.things.modify.DeleteThing;
import org.eclipse.ditto.signals.commands.things.modify.MergeThing;
import org.eclipse.ditto.signals.commands.things.modify.ModifyAttribute;
import org.eclipse.ditto.signals.commands.things.modify.ModifyAttributes;
import org.eclipse.ditto.signals.commands.things.modify.ModifyFeature;
import org.eclipse.ditto.signals.commands.things.modify.ModifyFeatureDefinition;
import org.eclipse.ditto.signals.commands.things.modify.ModifyFeatureProperties;
import org.eclipse.ditto.signals.commands.things.modify.ModifyFeatureProperty;
import org.eclipse.ditto.signals.commands.things.modify.ModifyFeatures;
import org.eclipse.ditto.signals.commands.things.modify.ModifyThing;
import org.eclipse.ditto.signals.commands.things.query.RetrieveAttribute;
import org.eclipse.ditto.signals.commands.things.query.RetrieveAttributes;
import org.eclipse.ditto.signals.commands.things.query.RetrieveFeature;
import org.eclipse.ditto.signals.commands.things.query.RetrieveFeatureDefinition;
import org.eclipse.ditto.signals.commands.things.query.RetrieveFeatureProperties;
import org.eclipse.ditto.signals.commands.things.query.RetrieveFeatureProperty;
import org.eclipse.ditto.signals.commands.things.query.RetrieveFeatures;
import org.eclipse.ditto.signals.commands.things.query.RetrieveThing;
import org.eclipse.ditto.signals.commands.things.query.RetrieveThings;

/**
* A factory for creating immutable instances of {@link LiveCommand} based on existing <em>Twin Commands</em>.
*
* @since 2.0.0
*/
@Immutable
public final class LiveCommandFactory {

private static final int STRATEGIES_NUMBER = 26;
private static final LiveCommandFactory INSTANCE = new LiveCommandFactory();

private final Map<String, Function<Command, LiveCommand>> mappingStrategies;

private LiveCommandFactory() {
mappingStrategies = Collections.unmodifiableMap(initMappingStrategies());
}

private static Map<String, Function<Command, LiveCommand>> initMappingStrategies() {
final Map<String, Function<Command, LiveCommand>> result = new HashMap<>(STRATEGIES_NUMBER);
result.put(CreateThing.TYPE, ModifyLiveCommandFactory::createThing);
result.put(DeleteAttribute.TYPE, ModifyLiveCommandFactory::deleteAttribute);
result.put(DeleteAttributes.TYPE, ModifyLiveCommandFactory::deleteAttributes);
result.put(DeleteFeature.TYPE, ModifyLiveCommandFactory::deleteFeature);
result.put(DeleteFeatureDefinition.TYPE, ModifyLiveCommandFactory::deleteFeatureDefinition);
result.put(DeleteFeatureProperties.TYPE, ModifyLiveCommandFactory::deleteFeatureProperties);
result.put(DeleteFeatureProperty.TYPE, ModifyLiveCommandFactory::deleteFeatureProperty);
result.put(DeleteFeatures.TYPE, ModifyLiveCommandFactory::deleteFeatures);
result.put(DeleteThing.TYPE, ModifyLiveCommandFactory::deleteThing);
result.put(ModifyAttribute.TYPE, ModifyLiveCommandFactory::modifyAttribute);
result.put(ModifyAttributes.TYPE, ModifyLiveCommandFactory::modifyAttributes);
result.put(ModifyFeature.TYPE, ModifyLiveCommandFactory::modifyFeature);
result.put(ModifyFeatureDefinition.TYPE, ModifyLiveCommandFactory::modifyFeatureDefinition);
result.put(ModifyFeatureProperties.TYPE, ModifyLiveCommandFactory::modifyFeatureProperties);
result.put(ModifyFeatureProperty.TYPE, ModifyLiveCommandFactory::modifyFeatureProperty);
result.put(ModifyFeatures.TYPE, ModifyLiveCommandFactory::modifyFeatures);
result.put(ModifyThing.TYPE, ModifyLiveCommandFactory::modifyThing);
result.put(MergeThing.TYPE, ModifyLiveCommandFactory::mergeThing);

result.put(RetrieveAttribute.TYPE, QueryLiveCommandFactory::retrieveAttribute);
result.put(RetrieveAttributes.TYPE, QueryLiveCommandFactory::retrieveAttributes);
result.put(RetrieveFeature.TYPE, QueryLiveCommandFactory::retrieveFeature);
result.put(RetrieveFeatureDefinition.TYPE, QueryLiveCommandFactory::retrieveFeatureDefinition);
result.put(RetrieveFeatureProperties.TYPE, QueryLiveCommandFactory::retrieveFeatureProperties);
result.put(RetrieveFeatureProperty.TYPE, QueryLiveCommandFactory::retrieveFeatureProperty);
result.put(RetrieveFeatures.TYPE, QueryLiveCommandFactory::retrieveFeatures);
result.put(RetrieveThing.TYPE, QueryLiveCommandFactory::retrieveThing);
result.put(RetrieveThings.TYPE, QueryLiveCommandFactory::retrieveThings);
return result;
}

/**
* Returns an instance of {@code LiveCommandFactory}.
*
* @return the instance.
*/
@Nonnull
public static LiveCommandFactory getInstance() {
return INSTANCE;
}

/**
* Returns an immutable {@link LiveCommand} which is associated with the specified Command.
*
* @param command the command to get a LiveCommand for.
* @return the LiveCommand.
* @throws NullPointerException if {@code command} is {@code null}.
* @throws IllegalArgumentException if the given command cannot be mapped to a LiveCommand because there is no
* mapping strategy associated with the command's type.
*/
@Nonnull
public LiveCommand getLiveCommand(@Nonnull final Command<?> command) {
checkNotNull(command, "command");

final String commandType = command.getType();
final Function<Command, LiveCommand> commandToLiveCommand = mappingStrategies.get(commandType);
if (null == commandToLiveCommand) {
final String msgTemplate = "No mapping strategy for command <{0}> available!"
+ " The command type <{1}> is unknown!";
throw new IllegalArgumentException(MessageFormat.format(msgTemplate, command, commandType));
}
return commandToLiveCommand.apply(command);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
import java.util.function.Consumer;
import java.util.function.Function;

import org.eclipse.ditto.client.live.commands.base.LiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.base.Signal;
import org.eclipse.ditto.signals.commands.live.base.LiveCommand;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;

/**
* Generic interface for handling a live command.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
import java.util.function.Consumer;
import java.util.function.Function;

import org.eclipse.ditto.signals.commands.live.base.LiveCommand;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.base.LiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;

/**
* Package-private implementation of {@code LiveCommandHandler}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@
import java.util.function.Function;

import org.eclipse.ditto.client.live.LiveCommandProcessor;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.commands.live.modify.DeleteAttributeLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.DeleteAttributesLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.MergeThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyAttributeLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyAttributesLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveAttributeLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveAttributesLiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.modify.DeleteAttributeLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.DeleteAttributesLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.MergeThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyAttributeLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyAttributesLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveAttributeLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveAttributesLiveCommand;

/**
* Provides the necessary functionality for registering {@link org.eclipse.ditto.signals.commands.live.base.LiveCommand
* Provides the necessary functionality for registering {@link org.eclipse.ditto.client.live.commands.base.LiveCommand
* LiveCommand} function to receive commands to manage and retrieve {@link java.util.jar.Attributes Attributes}.
*
* @since 1.0.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@
import java.util.function.Function;

import org.eclipse.ditto.client.live.LiveCommandProcessor;
import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.commands.live.modify.CreateThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.DeleteThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.MergeThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.modify.ModifyThingLiveCommand;
import org.eclipse.ditto.signals.commands.live.query.RetrieveThingLiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.modify.CreateThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.DeleteThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.MergeThingLiveCommand;
import org.eclipse.ditto.client.live.commands.modify.ModifyThingLiveCommand;
import org.eclipse.ditto.client.live.commands.query.RetrieveThingLiveCommand;

/**
* Provides the necessary functionality for registering {@link org.eclipse.ditto.signals.commands.live.base.LiveCommand
* Provides the necessary functionality for registering {@link org.eclipse.ditto.client.live.commands.base.LiveCommand
* LiveCommand} functions to receive commands to manage and retrieve <em>a particular</em> {@link
* org.eclipse.ditto.model.things.Thing Thing}.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@

import java.util.function.Function;

import org.eclipse.ditto.signals.commands.live.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.signals.commands.live.query.RetrieveThingsLiveCommand;
import org.eclipse.ditto.client.live.commands.base.LiveCommandAnswerBuilder;
import org.eclipse.ditto.client.live.commands.query.RetrieveThingsLiveCommand;

/**
* Provides the necessary functionality for registering {@link org.eclipse.ditto.signals.commands.live.base.LiveCommand
* Provides the necessary functionality for registering {@link org.eclipse.ditto.client.live.commands.base.LiveCommand
* LiveCommand} functions to receive commands to <em>generally</em> manage and retrieve {@link
* org.eclipse.ditto.model.things.Thing Thing}s.
*
Expand Down
Loading

0 comments on commit 22ebcbf

Please sign in to comment.