This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 2bc9eb59906a8e0d20d7cfb8f1b734ffd2fc654f
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Feb 9 18:38:34 2024 -0500

    Updates for #1115
---
 .../camel/karavan/api/NotificationResource.java    | 63 ++++++++++++++++++++++
 .../camel/karavan/cache/KaravanCacheService.java   | 40 +++++++++-----
 .../camel/karavan/cache/model/CamelStatus.java     |  7 ++-
 .../karavan/cache/model/CamelStatusValue.java      |  8 ++-
 .../camel/karavan/cache/model/ContainerPort.java   |  8 ++-
 .../camel/karavan/cache/model/ContainerStatus.java |  7 ++-
 .../karavan/cache/model/DeploymentStatus.java      |  9 +++-
 .../camel/karavan/cache/model/GroupedKey.java      |  8 ++-
 .../apache/camel/karavan/cache/model/Project.java  |  7 ++-
 .../camel/karavan/cache/model/ProjectFile.java     |  8 ++-
 .../camel/karavan/cache/model/ServiceStatus.java   |  8 ++-
 .../camel/karavan/docker/DockerEventListener.java  |  4 --
 12 files changed, 152 insertions(+), 25 deletions(-)

diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/NotificationResource.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/NotificationResource.java
new file mode 100644
index 00000000..4ad4de25
--- /dev/null
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/api/NotificationResource.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.karavan.api;
+
+import io.quarkus.runtime.StartupEvent;
+import io.smallrye.mutiny.Multi;
+import io.vertx.core.json.JsonObject;
+import io.vertx.mutiny.core.Vertx;
+import io.vertx.mutiny.core.eventbus.EventBus;
+import jakarta.enterprise.event.Observes;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import org.jboss.logging.Logger;
+import org.jboss.resteasy.reactive.RestStreamElementType;
+
+import java.util.Date;
+
+@Path("/api/notification")
+public class NotificationResource {
+
+    private static final Logger LOGGER = 
Logger.getLogger(NotificationResource.class.getName());
+
+    void onStart(@Observes StartupEvent ev) throws Exception {
+        System.out.println("STARTING!!!!!");
+        vertx.setPeriodic(1000,
+                aLong -> {
+                    vertx.eventBus().publish("test0", new 
JsonObject().put("user", "test0").put("date", new Date().toString()));
+                    vertx.eventBus().publish("test1", new 
JsonObject().put("user", "test1").put("date", new Date().toString()));
+                });
+    }
+
+    @Inject
+    Vertx vertx;
+    @Inject
+    EventBus bus;
+
+
+    @GET
+    @Path("{name}")
+    @Produces(MediaType.SERVER_SENT_EVENTS)
+    @RestStreamElementType(MediaType.TEXT_PLAIN)
+    public Multi<String> greetingStream(@PathParam("name") String name) {
+        return bus.<String>consumer(name).bodyStream().toMulti();
+    }
+}
\ No newline at end of file
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
index a8aa1086..438c7913 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/KaravanCacheService.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.karavan.cache;
 
+import com.hazelcast.config.ClasspathXmlConfig;
 import com.hazelcast.config.ClasspathYamlConfig;
 import com.hazelcast.config.Config;
 import com.hazelcast.core.Hazelcast;
@@ -27,13 +28,12 @@ import io.quarkus.runtime.ShutdownEvent;
 import io.quarkus.runtime.StartupEvent;
 import jakarta.enterprise.event.Observes;
 import jakarta.enterprise.inject.Default;
+import jakarta.enterprise.inject.Produces;
 import jakarta.inject.Singleton;
 import org.apache.camel.karavan.cache.model.*;
 import org.jboss.logging.Logger;
 
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.io.*;
 import java.time.Instant;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -43,16 +43,17 @@ import java.util.stream.Collectors;
 @Singleton
 public class KaravanCacheService {
 
-    Config config = new ClasspathYamlConfig("hazelcast.yaml");
-    HazelcastInstance hz = Hazelcast.getOrCreateHazelcastInstance(config);
+    private final Config config = new ClasspathYamlConfig("hazelcast.yaml");
+    private final HazelcastInstance hz = 
Hazelcast.getOrCreateHazelcastInstance(config);
+
+    private IMap<GroupedKey, Project> projects;
+    private IMap<GroupedKey, ProjectFile> files;
+    private IMap<GroupedKey, DeploymentStatus> deploymentStatuses;
+    private IMap<GroupedKey, ContainerStatus> containerStatuses;
+    private IMap<GroupedKey, Boolean> transits;
+    private IMap<GroupedKey, ServiceStatus> serviceStatuses;
+    private IMap<GroupedKey, CamelStatus> camelStatuses;
 
-    private final IMap<GroupedKey, Project> projects = 
hz.getMap(Project.CACHE);
-    private final IMap<GroupedKey, ProjectFile> files = 
hz.getMap(ProjectFile.CACHE);
-    private final IMap<GroupedKey, DeploymentStatus> deploymentStatuses = 
hz.getMap(DeploymentStatus.CACHE);
-    private final IMap<GroupedKey, ContainerStatus> containerStatuses = 
hz.getMap(ContainerStatus.CACHE);
-    private final IMap<GroupedKey, Boolean> transits = hz.getMap("transits");
-    private final IMap<GroupedKey, ServiceStatus> serviceStatuses = 
hz.getMap(ServiceStatus.CACHE);
-    private final IMap<GroupedKey, CamelStatus> camelStatuses = 
hz.getMap(CamelStatus.CACHE);
 
     private final AtomicBoolean ready = new AtomicBoolean(false);
     private static final Logger LOGGER = 
Logger.getLogger(KaravanCacheService.class.getName());
@@ -60,8 +61,17 @@ public class KaravanCacheService {
     private static final String DEFAULT_ENVIRONMENT = "dev";
 
     void onStart(@Observes StartupEvent ev) {
+        LOGGER.info("KaravanCacheService is starting");
+        projects = hz.getMap(Project.CACHE);
+        files = hz.getMap(ProjectFile.CACHE);
+        deploymentStatuses = hz.getMap(DeploymentStatus.CACHE);
+        containerStatuses = hz.getMap(ContainerStatus.CACHE);
+        transits = hz.getMap("transits");
+        serviceStatuses = hz.getMap(ServiceStatus.CACHE);
+        camelStatuses = hz.getMap(CamelStatus.CACHE);
         LOGGER.info("KaravanCacheService is started");
         ready.set(true);
+
     }
 
     void onStop(@Observes ShutdownEvent ev) {
@@ -69,6 +79,12 @@ public class KaravanCacheService {
         ready.set(false);
     }
 
+    @Produces
+    HazelcastInstance createInstance() {
+        Config config = new ClasspathYamlConfig("hazelcast.yaml");
+        return Hazelcast.getOrCreateHazelcastInstance(config);
+    }
+
     public List<Project> getProjects() {
         return projects.values().stream().collect(Collectors.toList());
     }
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
index de2e1b96..977a7fbf 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatus.java
@@ -17,9 +17,14 @@
 
 package org.apache.camel.karavan.cache.model;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.List;
 
-public class CamelStatus {
+public class CamelStatus implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
 
     public static final String CACHE = "camel_statuses";
     String projectId;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
index 59cf946f..c00d6752 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/CamelStatusValue.java
@@ -17,7 +17,13 @@
 
 package org.apache.camel.karavan.cache.model;
 
-public class CamelStatusValue {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class CamelStatusValue implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
 
     public enum Name {
 
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
index c9e97589..55cf79ba 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerPort.java
@@ -17,7 +17,13 @@
 
 package org.apache.camel.karavan.cache.model;
 
-public class ContainerPort {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class ContainerPort implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
 
     Integer privatePort;
     Integer publicPort;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
index 94eed978..56905a97 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ContainerStatus.java
@@ -17,10 +17,15 @@
 
 package org.apache.camel.karavan.cache.model;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.time.Instant;
 import java.util.List;
 
-public class ContainerStatus {
+public class ContainerStatus implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
 
     public enum State {
         created,
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
index c67c4525..048b36ff 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/DeploymentStatus.java
@@ -18,7 +18,14 @@
 package org.apache.camel.karavan.cache.model;
 
 
-public class DeploymentStatus {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class DeploymentStatus implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
+
     public static final String CACHE = "deployment_statuses";
     String projectId;
     String namespace;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
index 7fb1b0be..8f03898b 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/GroupedKey.java
@@ -17,7 +17,13 @@
 
 package org.apache.camel.karavan.cache.model;
 
-public class GroupedKey {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class GroupedKey implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
 
     String projectId;
     String env;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
index df865970..3424f8cf 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/Project.java
@@ -19,10 +19,15 @@ package org.apache.camel.karavan.cache.model;
 
 import jakarta.validation.constraints.NotBlank;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.time.Instant;
 import java.util.Arrays;
 
-public class Project {
+public class Project implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
     public static final String CACHE = "projects";
 
     public enum Type {
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
index 1c0a5a4e..c0f9fa28 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ProjectFile.java
@@ -17,7 +17,13 @@
 
 package org.apache.camel.karavan.cache.model;
 
-public class ProjectFile {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class ProjectFile implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
     public static final String CACHE = "project_files";
     String name;
     String code;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
index 59ee19a9..ad249360 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/cache/model/ServiceStatus.java
@@ -17,7 +17,13 @@
 
 package org.apache.camel.karavan.cache.model;
 
-public class ServiceStatus {
+import java.io.Serial;
+import java.io.Serializable;
+
+public class ServiceStatus implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7777777L;
     public static final String CACHE = "service_statuses";
     String projectId;
     String namespace;
diff --git 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
index ceb205d8..5536b68a 100644
--- 
a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
+++ 
b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerEventListener.java
@@ -23,7 +23,6 @@ import com.github.dockerjava.api.model.Event;
 import com.github.dockerjava.api.model.EventType;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import org.apache.camel.karavan.cache.KaravanCacheService;
 import org.apache.camel.karavan.cache.model.ContainerStatus;
 import org.apache.camel.karavan.registry.RegistryService;
 import org.jboss.logging.Logger;
@@ -43,9 +42,6 @@ public class DockerEventListener implements 
ResultCallback<Event> {
     @Inject
     RegistryService registryService;
 
-    @Inject
-    KaravanCacheService karavanCacheService;
-
     private static final Logger LOGGER = 
Logger.getLogger(DockerEventListener.class.getName());
 
     @Override

Reply via email to