diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 97357e6..0e4fcc6 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -12,8 +12,7 @@ permissions:
jobs:
ci:
- # run on 1) push, 2) external PRs, 3)
- # do not run on internal, non-steward PRs since those will be run by push to branch
+ # run on push, external PRs do not run on internal PRs since those will be run by push to branch
if: |
github.event_name == 'push' ||
github.event.pull_request.head.repo.full_name != github.repository
diff --git a/.gitignore b/.gitignore
index ff7a4f6..7a5ba5e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,24 +6,6 @@ target/
### IntelliJ IDEA ###
.idea
-### Eclipse ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
### VS Code ###
.vscode/
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..da0c292
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,22 @@
+volumes:
+ nats-storage:
+ driver: local
+
+services:
+ nats:
+ image: nats:2.10.7
+ command: [ "--jetstream", "-m", "8222" ]
+ deploy:
+ resources:
+ limits:
+ memory: 2g
+ reservations:
+ memory: 2g
+ volumes:
+ - nats-storage:/data
+ expose:
+ - "4222"
+ - "8222"
+ ports:
+ - "4222:4222"
+ - "8222:8222"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7784fc8..e2bebcd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,10 +3,10 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.softwaremill
- OtterJet
+ com.softwaremill.otter
+ jet
0.0.1
- war
+ jar
Visualization of messages from a NATS JetStream server
@@ -14,11 +14,16 @@
UTF-8
17
17
- 2.41.1
- 1.19.3
- 5.10.1
- 3.2.0
- 2023.0.0
+ 1.19.8
+ 3.3.0
+ 2023.0.2
+ 13.2.1
+ 3.25.0
+ 1.64.0
+ 1.0.2
+ 20240303
+ 2.18.1
+ 2.0.9
@@ -26,28 +31,14 @@
org.springframework.boot
spring-boot-dependencies
- ${spring-boot.version}
+ ${spring.boot.version}
pom
import
org.springframework.cloud
spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
- org.testcontainers
- testcontainers-bom
- ${testcontainers.version}
- pom
- import
-
-
- org.junit
- junit-bom
- ${junit.version}
+ ${spring.cloud.version}
pom
import
@@ -56,62 +47,6 @@
-
- com.google.protobuf
- protobuf-java-util
- 3.21.5
-
-
- com.fasterxml.jackson.module
- jackson-module-jakarta-xmlbind-annotations
- 2.16.0
-
-
- io.grpc
- grpc-protobuf
- 1.59.0
-
-
- com.google.protobuf
- protobuf-java
- 3.25.1
-
-
- io.envoyproxy.protoc-gen-validate
- pgv-java-stub
- 0.6.13
-
-
- javax.annotation
- javax.annotation-api
- 1.3.2
-
-
- io.grpc
- grpc-stub
- 1.59.0
-
-
- io.nats
- jnats
- 2.17.1
-
-
- org.slf4j
- slf4j-api
- 2.0.9
-
-
- javax
- javaee-web-api
- 7.0
- provided
-
-
- org.glassfish.ozark
- ozark
- 1.0.0-m02
-
org.springframework.boot
spring-boot-starter-web
@@ -143,56 +78,68 @@
io.github.openfeign
feign-jackson
+ ${feign.jackson.version}
- org.testcontainers
- testcontainers
- test
+ com.google.protobuf
+ protobuf-java-util
+ ${protobuf.java.version}
- com.github.javafaker
- javafaker
- 1.0.2
- test
+ com.google.protobuf
+ protobuf-java
+ ${protobuf.java.version}
- org.junit.jupiter
- junit-jupiter
- test
+ io.grpc
+ grpc-stub
+ ${grpc.version}
+
+
+ io.grpc
+ grpc-protobuf
+ ${grpc.version}
+
+ io.nats
+ jnats
+ ${jnats.version}
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j-api.version}
+
+
org.springframework.boot
spring-boot-starter-test
test
- org.awaitility
- awaitility
+ org.testcontainers
+ testcontainers
test
- org.assertj
- assertj-core
+ com.github.javafaker
+ javafaker
+ ${javafaker.version}
test
org.json
json
- 20231013
+ ${json.version}
test
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.4.0
-
org.springframework.boot
spring-boot-maven-plugin
+ 3.3.0
repackage
@@ -209,18 +156,9 @@
- com.diffplug.spotless
- spotless-maven-plugin
- ${spotless.plugin.version}
-
-
-
-
-
-
-
+ org.apache.maven.plugins
maven-surefire-plugin
- 3.2.1
+ 3.2.5
diff --git a/src/main/java/otterjet/OtterJetApplication.java b/src/main/java/otter/jet/OtterJetApplication.java
similarity index 96%
rename from src/main/java/otterjet/OtterJetApplication.java
rename to src/main/java/otter/jet/OtterJetApplication.java
index f0d86d9..16644fd 100644
--- a/src/main/java/otterjet/OtterJetApplication.java
+++ b/src/main/java/otter/jet/OtterJetApplication.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet;
import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/src/main/java/otterjet/monitoring/AccountDetailsResponse.java b/src/main/java/otter/jet/monitoring/AccountDetailsResponse.java
similarity index 87%
rename from src/main/java/otterjet/monitoring/AccountDetailsResponse.java
rename to src/main/java/otter/jet/monitoring/AccountDetailsResponse.java
index 3d6d95f..5016241 100644
--- a/src/main/java/otterjet/monitoring/AccountDetailsResponse.java
+++ b/src/main/java/otter/jet/monitoring/AccountDetailsResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
diff --git a/src/main/java/otterjet/monitoring/DirectMonitoringResponse.java b/src/main/java/otter/jet/monitoring/DirectMonitoringResponse.java
similarity index 78%
rename from src/main/java/otterjet/monitoring/DirectMonitoringResponse.java
rename to src/main/java/otter/jet/monitoring/DirectMonitoringResponse.java
index eb19e35..9cc76b8 100644
--- a/src/main/java/otterjet/monitoring/DirectMonitoringResponse.java
+++ b/src/main/java/otter/jet/monitoring/DirectMonitoringResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
public record DirectMonitoringResponse(JetStreamMonitoringResponse response)
implements MonitoringData {}
diff --git a/src/main/java/otterjet/monitoring/DirectNatsMonitoringDataLoader.java b/src/main/java/otter/jet/monitoring/DirectNatsMonitoringDataLoader.java
similarity index 94%
rename from src/main/java/otterjet/monitoring/DirectNatsMonitoringDataLoader.java
rename to src/main/java/otter/jet/monitoring/DirectNatsMonitoringDataLoader.java
index c9e528f..acd23b4 100644
--- a/src/main/java/otterjet/monitoring/DirectNatsMonitoringDataLoader.java
+++ b/src/main/java/otter/jet/monitoring/DirectNatsMonitoringDataLoader.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
class DirectNatsMonitoringDataLoader implements NatsMonitoringDataLoader {
diff --git a/src/main/java/otterjet/monitoring/JetStreamMonitoringResponse.java b/src/main/java/otter/jet/monitoring/JetStreamMonitoringResponse.java
similarity index 89%
rename from src/main/java/otterjet/monitoring/JetStreamMonitoringResponse.java
rename to src/main/java/otter/jet/monitoring/JetStreamMonitoringResponse.java
index a2ab231..7db0815 100644
--- a/src/main/java/otterjet/monitoring/JetStreamMonitoringResponse.java
+++ b/src/main/java/otter/jet/monitoring/JetStreamMonitoringResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
diff --git a/src/main/java/otterjet/monitoring/MonitoringController.java b/src/main/java/otter/jet/monitoring/MonitoringController.java
similarity index 96%
rename from src/main/java/otterjet/monitoring/MonitoringController.java
rename to src/main/java/otter/jet/monitoring/MonitoringController.java
index 8dd12cc..c1fd540 100644
--- a/src/main/java/otterjet/monitoring/MonitoringController.java
+++ b/src/main/java/otter/jet/monitoring/MonitoringController.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
diff --git a/src/main/java/otterjet/monitoring/MonitoringData.java b/src/main/java/otter/jet/monitoring/MonitoringData.java
similarity index 79%
rename from src/main/java/otterjet/monitoring/MonitoringData.java
rename to src/main/java/otter/jet/monitoring/MonitoringData.java
index 42a552e..58979ad 100644
--- a/src/main/java/otterjet/monitoring/MonitoringData.java
+++ b/src/main/java/otter/jet/monitoring/MonitoringData.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
public sealed interface MonitoringData
permits DirectMonitoringResponse, MonitoringNotConfiguredResponse {}
diff --git a/src/main/java/otterjet/monitoring/MonitoringNotConfiguredResponse.java b/src/main/java/otter/jet/monitoring/MonitoringNotConfiguredResponse.java
similarity index 72%
rename from src/main/java/otterjet/monitoring/MonitoringNotConfiguredResponse.java
rename to src/main/java/otter/jet/monitoring/MonitoringNotConfiguredResponse.java
index 054bd84..d1464fa 100644
--- a/src/main/java/otterjet/monitoring/MonitoringNotConfiguredResponse.java
+++ b/src/main/java/otter/jet/monitoring/MonitoringNotConfiguredResponse.java
@@ -1,3 +1,3 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
public final class MonitoringNotConfiguredResponse implements MonitoringData {}
diff --git a/src/main/java/otter/jet/monitoring/NatsMonitoringApiClient.java b/src/main/java/otter/jet/monitoring/NatsMonitoringApiClient.java
new file mode 100644
index 0000000..42b43d8
--- /dev/null
+++ b/src/main/java/otter/jet/monitoring/NatsMonitoringApiClient.java
@@ -0,0 +1,8 @@
+package otter.jet.monitoring;
+
+import org.springframework.web.bind.annotation.GetMapping;
+
+interface NatsMonitoringApiClient {
+ @GetMapping("/jsz?streams=true&config=true")
+ JetStreamMonitoringResponse getJetStreamMonitoringData();
+}
diff --git a/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java b/src/main/java/otter/jet/monitoring/NatsMonitoringAutoConfiguration.java
similarity index 96%
rename from src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java
rename to src/main/java/otter/jet/monitoring/NatsMonitoringAutoConfiguration.java
index dd8430e..2314694 100644
--- a/src/main/java/otterjet/monitoring/NatsMonitoringAutoConfiguration.java
+++ b/src/main/java/otter/jet/monitoring/NatsMonitoringAutoConfiguration.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import feign.Feign;
import feign.Logger;
@@ -16,7 +16,7 @@
class NatsMonitoringAutoConfiguration {
@Configuration
- @ConditionalOnExpression("'${nats.server.monitoring.port:}' != ''") // monitoring configured
+ @ConditionalOnExpression("'${nats.server.monitoring.port:}' != ''")
static class NatsMonitoringEnabledConfiguration {
@Bean
@@ -48,7 +48,7 @@ private static String createNatsMonitoringUrl(
}
@Configuration
- @ConditionalOnExpression("'${nats.server.monitoring.port:}' == ''") // monitoring not configured
+ @ConditionalOnExpression("'${nats.server.monitoring.port:}' == ''")
@AutoConfigureAfter(NatsMonitoringEnabledConfiguration.class)
static class NatsMonitoringDisabledConfiguration {
diff --git a/src/main/java/otterjet/monitoring/NatsMonitoringDataLoader.java b/src/main/java/otter/jet/monitoring/NatsMonitoringDataLoader.java
similarity index 79%
rename from src/main/java/otterjet/monitoring/NatsMonitoringDataLoader.java
rename to src/main/java/otter/jet/monitoring/NatsMonitoringDataLoader.java
index 12ee806..e1d5277 100644
--- a/src/main/java/otterjet/monitoring/NatsMonitoringDataLoader.java
+++ b/src/main/java/otter/jet/monitoring/NatsMonitoringDataLoader.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
public interface NatsMonitoringDataLoader {
boolean isMonitoringEnabled();
diff --git a/src/main/java/otterjet/monitoring/NoMonitoringConfiguredDataLoader.java b/src/main/java/otter/jet/monitoring/NoMonitoringConfiguredDataLoader.java
similarity index 89%
rename from src/main/java/otterjet/monitoring/NoMonitoringConfiguredDataLoader.java
rename to src/main/java/otter/jet/monitoring/NoMonitoringConfiguredDataLoader.java
index a3910ef..40ecd58 100644
--- a/src/main/java/otterjet/monitoring/NoMonitoringConfiguredDataLoader.java
+++ b/src/main/java/otter/jet/monitoring/NoMonitoringConfiguredDataLoader.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
class NoMonitoringConfiguredDataLoader implements NatsMonitoringDataLoader {
@Override
diff --git a/src/main/java/otterjet/monitoring/StreamConfigResponse.java b/src/main/java/otter/jet/monitoring/StreamConfigResponse.java
similarity index 74%
rename from src/main/java/otterjet/monitoring/StreamConfigResponse.java
rename to src/main/java/otter/jet/monitoring/StreamConfigResponse.java
index e14092b..ef8fce6 100644
--- a/src/main/java/otterjet/monitoring/StreamConfigResponse.java
+++ b/src/main/java/otter/jet/monitoring/StreamConfigResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import java.util.List;
diff --git a/src/main/java/otterjet/monitoring/StreamDetailsResponse.java b/src/main/java/otter/jet/monitoring/StreamDetailsResponse.java
similarity index 79%
rename from src/main/java/otterjet/monitoring/StreamDetailsResponse.java
rename to src/main/java/otter/jet/monitoring/StreamDetailsResponse.java
index 81b8dae..bcbdc80 100644
--- a/src/main/java/otterjet/monitoring/StreamDetailsResponse.java
+++ b/src/main/java/otter/jet/monitoring/StreamDetailsResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
public record StreamDetailsResponse(
String name, StreamConfigResponse config, StreamStateResponse state) {}
diff --git a/src/main/java/otterjet/monitoring/StreamStateResponse.java b/src/main/java/otter/jet/monitoring/StreamStateResponse.java
similarity index 83%
rename from src/main/java/otterjet/monitoring/StreamStateResponse.java
rename to src/main/java/otter/jet/monitoring/StreamStateResponse.java
index b191ab5..2b2c16e 100644
--- a/src/main/java/otterjet/monitoring/StreamStateResponse.java
+++ b/src/main/java/otter/jet/monitoring/StreamStateResponse.java
@@ -1,4 +1,4 @@
-package otterjet.monitoring;
+package otter.jet.monitoring;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/src/main/java/otterjet/plaintext/PlainTextMessageDeserializer.java b/src/main/java/otter/jet/plaintext/PlainTextMessageDeserializer.java
similarity index 74%
rename from src/main/java/otterjet/plaintext/PlainTextMessageDeserializer.java
rename to src/main/java/otter/jet/plaintext/PlainTextMessageDeserializer.java
index e72c13a..e5d6a95 100644
--- a/src/main/java/otterjet/plaintext/PlainTextMessageDeserializer.java
+++ b/src/main/java/otter/jet/plaintext/PlainTextMessageDeserializer.java
@@ -1,9 +1,9 @@
-package otterjet.plaintext;
+package otter.jet.plaintext;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
-import otterjet.DeserializedMessage;
-import otterjet.MessageDeserializer;
+import otter.jet.reader.DeserializedMessage;
+import otter.jet.reader.MessageDeserializer;
class PlainTextMessageDeserializer implements MessageDeserializer {
@Override
diff --git a/src/main/java/otterjet/plaintext/PlainTextMessageDeserializerConfiguration.java b/src/main/java/otter/jet/plaintext/PlainTextMessageDeserializerConfiguration.java
similarity index 86%
rename from src/main/java/otterjet/plaintext/PlainTextMessageDeserializerConfiguration.java
rename to src/main/java/otter/jet/plaintext/PlainTextMessageDeserializerConfiguration.java
index 2af5b77..c4a912e 100644
--- a/src/main/java/otterjet/plaintext/PlainTextMessageDeserializerConfiguration.java
+++ b/src/main/java/otter/jet/plaintext/PlainTextMessageDeserializerConfiguration.java
@@ -1,6 +1,6 @@
-package otterjet.plaintext;
+package otter.jet.plaintext;
-import otterjet.MessageDeserializer;
+import otter.jet.reader.MessageDeserializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/src/main/java/otterjet/proto/AnyProtoMessageToDynamicMessageDeserializer.java b/src/main/java/otter/jet/proto/AnyProtoMessageToDynamicMessageDeserializer.java
similarity index 95%
rename from src/main/java/otterjet/proto/AnyProtoMessageToDynamicMessageDeserializer.java
rename to src/main/java/otter/jet/proto/AnyProtoMessageToDynamicMessageDeserializer.java
index 1e925ec..a21149e 100644
--- a/src/main/java/otterjet/proto/AnyProtoMessageToDynamicMessageDeserializer.java
+++ b/src/main/java/otter/jet/proto/AnyProtoMessageToDynamicMessageDeserializer.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import com.google.protobuf.Any;
import com.google.protobuf.Descriptors;
diff --git a/src/main/java/otterjet/proto/FromAnyProtoMessageTypeNameSelector.java b/src/main/java/otter/jet/proto/FromAnyProtoMessageTypeNameSelector.java
similarity index 95%
rename from src/main/java/otterjet/proto/FromAnyProtoMessageTypeNameSelector.java
rename to src/main/java/otter/jet/proto/FromAnyProtoMessageTypeNameSelector.java
index 877a374..133aa71 100644
--- a/src/main/java/otterjet/proto/FromAnyProtoMessageTypeNameSelector.java
+++ b/src/main/java/otter/jet/proto/FromAnyProtoMessageTypeNameSelector.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import com.google.protobuf.Any;
import java.io.IOException;
diff --git a/src/main/java/otterjet/proto/MessageTypeNameSelector.java b/src/main/java/otter/jet/proto/MessageTypeNameSelector.java
similarity index 88%
rename from src/main/java/otterjet/proto/MessageTypeNameSelector.java
rename to src/main/java/otter/jet/proto/MessageTypeNameSelector.java
index 7cb7e4b..c36ce03 100644
--- a/src/main/java/otterjet/proto/MessageTypeNameSelector.java
+++ b/src/main/java/otter/jet/proto/MessageTypeNameSelector.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import java.io.IOException;
import java.nio.ByteBuffer;
diff --git a/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java b/src/main/java/otter/jet/proto/ProtoBufMessageDeserializer.java
similarity index 94%
rename from src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java
rename to src/main/java/otter/jet/proto/ProtoBufMessageDeserializer.java
index d077985..71c3323 100644
--- a/src/main/java/otterjet/proto/ProtoBufMessageDeserializer.java
+++ b/src/main/java/otter/jet/proto/ProtoBufMessageDeserializer.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import com.google.protobuf.DescriptorProtos.FileDescriptorProto;
import com.google.protobuf.DescriptorProtos.FileDescriptorSet;
@@ -14,10 +14,10 @@
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
-import otterjet.DeserializationException;
-import otterjet.DeserializedMessage;
-import otterjet.MessageDeserializer;
+
+import otter.jet.reader.DeserializationException;
+import otter.jet.reader.DeserializedMessage;
+import otter.jet.reader.MessageDeserializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,7 +52,7 @@ public DeserializedMessage deserializeMessage(ByteBuffer buffer) {
final var descriptors =
descs.stream()
.flatMap(desc -> desc.getMessageTypes().stream())
- .collect(Collectors.toList());
+ .toList();
final var messageDescriptor =
descriptors.stream()
.filter(desc -> messageTypeName.equals(desc.getName()) || messageTypeName.equals(desc.getFullName()))
diff --git a/src/main/java/otterjet/proto/ProtoMessageDeserializerConfiguration.java b/src/main/java/otter/jet/proto/ProtoMessageDeserializerConfiguration.java
similarity index 96%
rename from src/main/java/otterjet/proto/ProtoMessageDeserializerConfiguration.java
rename to src/main/java/otter/jet/proto/ProtoMessageDeserializerConfiguration.java
index fdd5d11..27859f7 100644
--- a/src/main/java/otterjet/proto/ProtoMessageDeserializerConfiguration.java
+++ b/src/main/java/otter/jet/proto/ProtoMessageDeserializerConfiguration.java
@@ -1,8 +1,8 @@
-package otterjet.proto;
+package otter.jet.proto;
import java.io.File;
import java.io.FileNotFoundException;
-import otterjet.MessageDeserializer;
+import otter.jet.reader.MessageDeserializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
diff --git a/src/main/java/otterjet/proto/ProtoMessageToDynamicMessageDeserializer.java b/src/main/java/otter/jet/proto/ProtoMessageToDynamicMessageDeserializer.java
similarity index 92%
rename from src/main/java/otterjet/proto/ProtoMessageToDynamicMessageDeserializer.java
rename to src/main/java/otter/jet/proto/ProtoMessageToDynamicMessageDeserializer.java
index dd55897..99ab97b 100644
--- a/src/main/java/otterjet/proto/ProtoMessageToDynamicMessageDeserializer.java
+++ b/src/main/java/otter/jet/proto/ProtoMessageToDynamicMessageDeserializer.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import com.google.protobuf.Descriptors;
import com.google.protobuf.DynamicMessage;
diff --git a/src/main/java/otterjet/proto/ProvidedProtoMessageTypeNameSelector.java b/src/main/java/otter/jet/proto/ProvidedProtoMessageTypeNameSelector.java
similarity index 93%
rename from src/main/java/otterjet/proto/ProvidedProtoMessageTypeNameSelector.java
rename to src/main/java/otter/jet/proto/ProvidedProtoMessageTypeNameSelector.java
index 5ab5bef..949b291 100644
--- a/src/main/java/otterjet/proto/ProvidedProtoMessageTypeNameSelector.java
+++ b/src/main/java/otter/jet/proto/ProvidedProtoMessageTypeNameSelector.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import java.nio.ByteBuffer;
diff --git a/src/main/java/otterjet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java b/src/main/java/otter/jet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java
similarity index 95%
rename from src/main/java/otterjet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java
rename to src/main/java/otter/jet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java
index 27832d9..f0c4784 100644
--- a/src/main/java/otterjet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java
+++ b/src/main/java/otter/jet/proto/SimpleProtoMessageToDynamicMessageDeserializer.java
@@ -1,4 +1,4 @@
-package otterjet.proto;
+package otter.jet.proto;
import com.google.protobuf.CodedInputStream;
import com.google.protobuf.Descriptors;
diff --git a/src/main/java/otterjet/DeserializationException.java b/src/main/java/otter/jet/reader/DeserializationException.java
similarity index 88%
rename from src/main/java/otterjet/DeserializationException.java
rename to src/main/java/otter/jet/reader/DeserializationException.java
index d66fd35..af964d9 100644
--- a/src/main/java/otterjet/DeserializationException.java
+++ b/src/main/java/otter/jet/reader/DeserializationException.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
public class DeserializationException extends RuntimeException {
private static final long serialVersionUID = -2575341690419824332L;
diff --git a/src/main/java/otterjet/DeserializedMessage.java b/src/main/java/otter/jet/reader/DeserializedMessage.java
similarity index 72%
rename from src/main/java/otterjet/DeserializedMessage.java
rename to src/main/java/otter/jet/reader/DeserializedMessage.java
index a64b919..b743445 100644
--- a/src/main/java/otterjet/DeserializedMessage.java
+++ b/src/main/java/otter/jet/reader/DeserializedMessage.java
@@ -1,3 +1,3 @@
-package otterjet;
+package otter.jet.reader;
public record DeserializedMessage(String name, String content) {}
diff --git a/src/main/java/otterjet/MessageDeserializer.java b/src/main/java/otter/jet/reader/MessageDeserializer.java
similarity index 85%
rename from src/main/java/otterjet/MessageDeserializer.java
rename to src/main/java/otter/jet/reader/MessageDeserializer.java
index 90020cb..6b2a2df 100644
--- a/src/main/java/otterjet/MessageDeserializer.java
+++ b/src/main/java/otter/jet/reader/MessageDeserializer.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
import java.nio.ByteBuffer;
diff --git a/src/main/java/otterjet/ReadMessage.java b/src/main/java/otter/jet/reader/ReadMessage.java
similarity index 83%
rename from src/main/java/otterjet/ReadMessage.java
rename to src/main/java/otter/jet/reader/ReadMessage.java
index bb0d26c..4725b1d 100644
--- a/src/main/java/otterjet/ReadMessage.java
+++ b/src/main/java/otter/jet/reader/ReadMessage.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
import java.time.LocalDateTime;
diff --git a/src/main/java/otterjet/ReaderConfiguration.java b/src/main/java/otter/jet/reader/ReaderConfiguration.java
similarity index 97%
rename from src/main/java/otterjet/ReaderConfiguration.java
rename to src/main/java/otter/jet/reader/ReaderConfiguration.java
index e77be66..544e265 100644
--- a/src/main/java/otterjet/ReaderConfiguration.java
+++ b/src/main/java/otter/jet/reader/ReaderConfiguration.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
diff --git a/src/main/java/otterjet/ReaderConfigurationProperties.java b/src/main/java/otter/jet/reader/ReaderConfigurationProperties.java
similarity index 96%
rename from src/main/java/otterjet/ReaderConfigurationProperties.java
rename to src/main/java/otter/jet/reader/ReaderConfigurationProperties.java
index 96e18f9..6aa245e 100644
--- a/src/main/java/otterjet/ReaderConfigurationProperties.java
+++ b/src/main/java/otter/jet/reader/ReaderConfigurationProperties.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
import java.util.Objects;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/src/main/java/otterjet/ReaderService.java b/src/main/java/otter/jet/reader/ReaderService.java
similarity index 99%
rename from src/main/java/otterjet/ReaderService.java
rename to src/main/java/otter/jet/reader/ReaderService.java
index 8ac7c9b..897721c 100644
--- a/src/main/java/otterjet/ReaderService.java
+++ b/src/main/java/otter/jet/reader/ReaderService.java
@@ -1,4 +1,4 @@
-package otterjet;
+package otter.jet.reader;
import io.nats.client.Connection;
import io.nats.client.JetStream;
diff --git a/src/main/java/otterjet/MainViewController.java b/src/main/java/otter/jet/rest/MainViewController.java
similarity index 88%
rename from src/main/java/otterjet/MainViewController.java
rename to src/main/java/otter/jet/rest/MainViewController.java
index 55a417f..73dcf54 100644
--- a/src/main/java/otterjet/MainViewController.java
+++ b/src/main/java/otter/jet/rest/MainViewController.java
@@ -1,6 +1,6 @@
-package otterjet;
+package otter.jet.rest;
-import otterjet.monitoring.NatsMonitoringDataLoader;
+import otter.jet.monitoring.NatsMonitoringDataLoader;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
diff --git a/src/main/java/otter/jet/rest/MsgsController.java b/src/main/java/otter/jet/rest/MsgsController.java
new file mode 100644
index 0000000..da5b140
--- /dev/null
+++ b/src/main/java/otter/jet/rest/MsgsController.java
@@ -0,0 +1,48 @@
+package otter.jet.rest;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import otter.jet.reader.ReadMessage;
+import otter.jet.reader.ReaderService;
+
+@Controller
+public class MsgsController {
+
+ private static final String TEMPLATE_NAME = "msgs-page";
+ private static final Logger LOG = LoggerFactory.getLogger(MsgsController.class);
+
+ private final ReaderService readerService;
+
+ public MsgsController(ReaderService readerService) {
+ this.readerService = readerService;
+ }
+
+ @GetMapping("/msgs")
+ public String page(
+ @RequestParam(value = "subject", required = false) String subject,
+ @RequestParam(value = "type", required = false) String type,
+ @RequestParam(value = "bodyContent", required = false) String bodyContent,
+ @RequestParam(value = "page", defaultValue = "0") int page,
+ @RequestParam(value = "size", defaultValue = "10") int size,
+ Model model) {
+ String subjectFilter = Optional.ofNullable(subject).orElse("");
+ String typeFilter = Optional.ofNullable(type).orElse("");
+ String bodyContentFilter = Optional.ofNullable(bodyContent).orElse("");
+ List filteredMessages = readerService.filter(subjectFilter, typeFilter, page, size, bodyContentFilter);
+ LOG.info("amount of read messages: " + filteredMessages.size());
+ model.addAttribute("messages", filteredMessages);
+ model.addAttribute("subject", subjectFilter);
+ model.addAttribute("type", typeFilter);
+ model.addAttribute("bodyContent", bodyContentFilter);
+ model.addAttribute("page", page);
+ model.addAttribute("size", size);
+ return TEMPLATE_NAME;
+ }
+}
diff --git a/src/main/java/otterjet/MsgsController.java b/src/main/java/otterjet/MsgsController.java
deleted file mode 100644
index e81debd..0000000
--- a/src/main/java/otterjet/MsgsController.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package otterjet;
-
-import java.util.List;
-import java.util.Optional;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-@Controller
-public class MsgsController {
-
- private static final String TEMPLATE_NAME = "msgs-page";
- private static final Logger LOG = LoggerFactory.getLogger(MsgsController.class);
-
- private final ReaderService readerService;
- private String subjectFilter;
- private String typeFilter;
- private String bodyContentFilter;
-
- public MsgsController(ReaderService readerService) {
- this.readerService = readerService;
- }
-
- @GetMapping("/msgs")
- public String page(
- @RequestParam(value = "subject", required = false) String subject,
- @RequestParam(value = "type", required = false) String type,
- @RequestParam(value = "bodyContent", required = false) String bodyContent,
- @RequestParam(value = "page", defaultValue = "0") int page,
- @RequestParam(value = "size", defaultValue = "10") int size,
- Model model) {
- this.subjectFilter = Optional.ofNullable(subject).orElse("");
- this.typeFilter = Optional.ofNullable(type).orElse("");
- this.bodyContentFilter = Optional.ofNullable(bodyContent).orElse("");
- List filteredMessages = readerService.filter(subjectFilter, typeFilter, page, size, bodyContentFilter);
- LOG.info("amount of read messages: " + filteredMessages.size());
- model.addAttribute("messages", filteredMessages);
- model.addAttribute("subject", subjectFilter);
- model.addAttribute("type", typeFilter);
- model.addAttribute("bodyContent", bodyContentFilter);
- model.addAttribute("page", page);
- model.addAttribute("size", size);
- return TEMPLATE_NAME;
- }
-}
diff --git a/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java b/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java
deleted file mode 100644
index 0e696bc..0000000
--- a/src/main/java/otterjet/monitoring/NatsMonitoringApiClient.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package otterjet.monitoring;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-
-interface NatsMonitoringApiClient {
- @RequestMapping(method = RequestMethod.GET, value = "/jsz?streams=true&config=true")
- JetStreamMonitoringResponse getJetStreamMonitoringData();
-}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6dd1c82..d01f0ae 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,7 +9,7 @@ server:
logging:
level:
- otterjet.monitoring.NatsMonitoringApiClient: DEBUG
+ otter.jet.monitoring.NatsMonitoringApiClient: DEBUG
nats:
server:
diff --git a/src/main/resources/static/css/index.css b/src/main/resources/static/css/index.css
index fb540a3..ac21624 100644
--- a/src/main/resources/static/css/index.css
+++ b/src/main/resources/static/css/index.css
@@ -36,3 +36,28 @@ input[type="text"] {
border: 1px solid #ddd;
border-radius: 4px;
}
+
+
+nav ul {
+ list-style-type: none;
+ padding: 0;
+}
+
+nav ul li {
+ display: inline;
+ margin-right: 10px;
+}
+
+nav ul li a {
+ display: inline-block;
+ color: #fff;
+ text-decoration: none;
+ background-color: #5C6BC0;
+ padding: 10px 15px;
+ border-radius: 4px;
+ transition: background-color 0.3s ease;
+}
+
+nav ul li a:hover {
+ background-color: #3F51B5;
+}
diff --git a/src/main/resources/templates/main.ftlh b/src/main/resources/templates/main.ftlh
index 93bea16..fedeaf7 100644
--- a/src/main/resources/templates/main.ftlh
+++ b/src/main/resources/templates/main.ftlh
@@ -16,30 +16,6 @@
padding: 15px;
}
- nav ul {
- list-style-type: none;
- padding: 0;
- }
-
- nav ul li {
- display: inline;
- margin-right: 10px;
- }
-
- nav ul li a {
- display: inline-block;
- color: #fff;
- text-decoration: none;
- background-color: #5C6BC0;
- padding: 10px 15px;
- border-radius: 4px;
- transition: background-color 0.3s ease;
- }
-
- nav ul li a:hover {
- background-color: #3F51B5;
- }
-
.header {
display: flex;
align-items: center;
diff --git a/src/main/resources/templates/monitoring.ftlh b/src/main/resources/templates/monitoring.ftlh
index de50d52..7c0fc71 100644
--- a/src/main/resources/templates/monitoring.ftlh
+++ b/src/main/resources/templates/monitoring.ftlh
@@ -68,5 +68,10 @@
#list>
#list>
+