diff --git a/pom.xml b/pom.xml
index 7c0304e..4160cb3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
de.infinimotion
model-persistence
- 0.0.38
+ 0.0.44
diff --git a/src/main/java/de/infinimotion/persistence/CommandObserver.java b/src/main/java/de/infinimotion/persistence/CommandObserver.java
new file mode 100644
index 0000000..e7b6b61
--- /dev/null
+++ b/src/main/java/de/infinimotion/persistence/CommandObserver.java
@@ -0,0 +1,28 @@
+package de.infinimotion.persistence;
+
+import de.infinimotion.model.persistence.*;
+import jakarta.enterprise.context.ApplicationScoped;
+import org.eclipse.microprofile.reactive.messaging.Incoming;
+import org.eclipse.microprofile.reactive.messaging.Outgoing;
+
+import java.io.IOException;
+
+
+@ApplicationScoped
+public class CommandObserver {
+
+ @Incoming("command")
+ @Outgoing("command-replies")
+ public CommandWrapper process(CommandWrapper request) throws IOException {
+ System.out.println(request);
+ try {
+ return request.process().serialize().copyIds(request);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ CommandException e = new CommandException();
+ e.setException(t.getMessage());
+ return e.serialize().copyIds(request);
+ }
+ }
+
+}
diff --git a/src/main/java/de/infinimotion/persistence/CommandProcessor.java b/src/main/java/de/infinimotion/persistence/CommandProcessor.java
deleted file mode 100644
index 9183201..0000000
--- a/src/main/java/de/infinimotion/persistence/CommandProcessor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package de.infinimotion.persistence;
-
-import de.infinimotion.model.persistence.*;
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-import jakarta.persistence.EntityManager;
-import jakarta.transaction.Transactional;
-import org.eclipse.microprofile.reactive.messaging.Incoming;
-import org.eclipse.microprofile.reactive.messaging.Outgoing;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@ApplicationScoped
-public class CommandProcessor {
-
- @Inject
- EntityManager em;
-
- private Map> processors
- = Map.of(CommandListKinosaal.class.getSimpleName(), this::processListKinosaal,
- CommandCreateKinosaal.class.getSimpleName(), this::processCreateKinosaal);
-
- @Incoming("command")
- @Outgoing("command-replies")
- public CommandWrapper process(CommandWrapper request) throws IOException {
- try {
- ThrowingFunction processor = processors.get(request.getType());
- if (processor == null) {
- CommandException e = new CommandException();
- e.setException("unknown processor");
- return e.serialize().copyIds(request);
- }
-
- return processor.apply(request).serialize().copyIds(request);
- } catch (Throwable t) {
- CommandException e = new CommandException();
- e.setException(t.getMessage());
- return e.serialize().copyIds(request);
- }
- }
-
- @Transactional
- Command processListKinosaal(CommandWrapper wrapper) throws IOException {
- CommandListKinosaal request = CommandListKinosaal.deserialize(wrapper);
- List results = em.createQuery("SELECT k FROM Kinosaal k", Kinosaal.class).getResultList();
- CommandListKinosaalResponse response = new CommandListKinosaalResponse();
- response.setList(results);
- return response;
- }
-
- @Transactional
- Command processCreateKinosaal(CommandWrapper wrapper) throws IOException {
- CommandCreateKinosaal request = CommandCreateKinosaal.deserialize(wrapper);
- Kinosaal hall = new Kinosaal();
- hall.setName(request.getName());
- em.persist(hall);
- CommandCreateKinosaalResponse response = new CommandCreateKinosaalResponse();
- response.setHall(hall);
- return response;
- }
-
-}
diff --git a/src/main/java/de/infinimotion/persistence/ThrowingFunction.java b/src/main/java/de/infinimotion/persistence/ThrowingFunction.java
deleted file mode 100644
index ec04237..0000000
--- a/src/main/java/de/infinimotion/persistence/ThrowingFunction.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package de.infinimotion.persistence;
-
-@FunctionalInterface
-public interface ThrowingFunction {
- R apply(T t) throws E;
-}
diff --git a/src/main/java/de/infinimotion/persistence/processor/KinosaalProcessor.java b/src/main/java/de/infinimotion/persistence/processor/KinosaalProcessor.java
new file mode 100644
index 0000000..f643db0
--- /dev/null
+++ b/src/main/java/de/infinimotion/persistence/processor/KinosaalProcessor.java
@@ -0,0 +1,37 @@
+package de.infinimotion.persistence.processor;
+
+import de.infinimotion.model.persistence.*;
+import io.quarkus.arc.Unremovable;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+import jakarta.transaction.Transactional;
+
+import java.util.List;
+
+@Unremovable
+@ApplicationScoped
+public class KinosaalProcessor implements CommandListKinosaalProcessor, CommandCreateKinosaalProcessor {
+
+ @Inject
+ EntityManager em;
+
+ @Transactional
+ public Command processCommandListKinosaal(CommandListKinosaal request) {
+ List results = em.createQuery("SELECT k FROM Kinosaal k", Kinosaal.class).getResultList();
+ CommandListKinosaalResponse response = new CommandListKinosaalResponse();
+ response.setList(results);
+ return response;
+ }
+
+ @Transactional
+ public Command processCommandCreateKinosaal(CommandCreateKinosaal request) {
+ Kinosaal hall = new Kinosaal();
+ hall.setName(request.getName());
+ em.persist(hall);
+ CommandCreateKinosaalResponse response = new CommandCreateKinosaalResponse();
+ response.setHall(hall);
+ return response;
+ }
+
+}