package mock.services; import com.github.aesteve.vertx.nubes.annotations.services.Consumer; import com.github.aesteve.vertx.nubes.annotations.services.PeriodicTask; import com.github.aesteve.vertx.nubes.services.Service; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.eventbus.Message; import io.vertx.core.json.JsonObject; import mock.domains.Dog; import java.util.ArrayList; import java.util.List; import java.util.Random; public class DogService implements Service { private static final Random rand = new Random(); private List<Dog> dogs; // in a real use case it would be the database for example private Vertx vertx; @Override public void init(Vertx vertx, JsonObject config) { this.vertx = vertx; } @Override public void start(Future<Void> future) { dogs = new ArrayList<>(); future.complete(); } @Override public void stop(Future<Void> future) { dogs.clear(); future.complete(); } public void add(Dog dog) { dogs.add(dog); } public Dog someDog() { return dogs.get(rand.nextInt(dogs.size())); } public Dog getDog(int i) { return dogs.get(i); } public boolean isEmpty() { return dogs.isEmpty(); } public int size() { return dogs.size(); } public void clear() { dogs.clear(); } @PeriodicTask(300) public void sendPeriodic() { vertx.eventBus().publish("dogService.periodic", "periodic"); } @Consumer("dogService.echo") public void echoBack(Message<String> message) { message.reply(message.body()); } }