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

jgallimore pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee-chatterbox.git

commit 0a41080d443c9a5e1be6c133233af379577c2f9a
Author: Jonathan Gallimore <j...@jrg.me.uk>
AuthorDate: Wed Jun 9 12:07:52 2021 +0100

    Wrap the message in a proxy, so we don't need all the libraries the NATS 
Streaming client uses in TomEE's classpath
---
 chatterbox-nats/chatterbox-nats-api/pom.xml        |  6 ------
 .../tomee/chatterbox/nats/api/InboundListener.java |  4 +---
 .../api/{InboundListener.java => NATSMessage.java} | 24 ++++++++++++++--------
 chatterbox-nats/chatterbox-nats-impl/pom.xml       |  1 -
 .../nats/adapter/NATSResourceAdapter.java          | 16 +++++++++++++--
 chatterbox-nats/chatterbox-nats-sample-war/pom.xml |  7 -------
 .../src/main/java/org/superbiz/EchoBean.java       |  8 +++-----
 7 files changed, 34 insertions(+), 32 deletions(-)

diff --git a/chatterbox-nats/chatterbox-nats-api/pom.xml 
b/chatterbox-nats/chatterbox-nats-api/pom.xml
index db16e68..6f4ca62 100644
--- a/chatterbox-nats/chatterbox-nats-api/pom.xml
+++ b/chatterbox-nats/chatterbox-nats-api/pom.xml
@@ -45,11 +45,5 @@
       <artifactId>javaee-api</artifactId>
       <scope>provided</scope>
     </dependency>
-    <dependency>
-      <groupId>io.nats</groupId>
-      <artifactId>java-nats-streaming</artifactId>
-      <version>2.2.3</version>
-      <scope>provided</scope>
-    </dependency>
   </dependencies>
 </project>
diff --git 
a/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
 
b/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
index 94d6294..5f7ea6c 100644
--- 
a/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
+++ 
b/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
@@ -16,13 +16,11 @@
  */
 package org.apache.tomee.chatterbox.nats.api;
 
-import io.nats.streaming.Message;
-
 /**
  * @version $Revision$ $Date$
  */
 public interface InboundListener {
 
-    public void onMessage(final Message message) throws NATSException;
+    public void onMessage(final NATSMessage message) throws NATSException;
 
 }
diff --git 
a/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
 
b/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/NATSMessage.java
similarity index 64%
copy from 
chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
copy to 
chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/NATSMessage.java
index 94d6294..2335bf6 100644
--- 
a/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/InboundListener.java
+++ 
b/chatterbox-nats/chatterbox-nats-api/src/main/java/org/apache/tomee/chatterbox/nats/api/NATSMessage.java
@@ -16,13 +16,21 @@
  */
 package org.apache.tomee.chatterbox.nats.api;
 
-import io.nats.streaming.Message;
-
-/**
- * @version $Revision$ $Date$
- */
-public interface InboundListener {
-
-    public void onMessage(final Message message) throws NATSException;
+import java.time.Instant;
 
+public interface NATSMessage {
+    Instant getInstant();
+    long getSequence();
+    String getSubject();
+    void setSubject(String subject);
+    String getReplyTo();
+    void setReplyTo(String reply);
+    byte[] getData();
+    void setData(byte[] data);
+    void setData(byte[] data, int offset, int length);
+    long getTimestamp();
+    public boolean isRedelivered();
+    public int getCrc32();
+    public void ack();
+    public String toString();
 }
diff --git a/chatterbox-nats/chatterbox-nats-impl/pom.xml 
b/chatterbox-nats/chatterbox-nats-impl/pom.xml
index d46e53a..fbe5f30 100644
--- a/chatterbox-nats/chatterbox-nats-impl/pom.xml
+++ b/chatterbox-nats/chatterbox-nats-impl/pom.xml
@@ -59,7 +59,6 @@
       <groupId>io.nats</groupId>
       <artifactId>java-nats-streaming</artifactId>
       <version>2.2.3</version>
-      <scope>provided</scope>
     </dependency>
   </dependencies>
 </project>
diff --git 
a/chatterbox-nats/chatterbox-nats-impl/src/main/java/org/apache/tomee/chatterbox/nats/adapter/NATSResourceAdapter.java
 
b/chatterbox-nats/chatterbox-nats-impl/src/main/java/org/apache/tomee/chatterbox/nats/adapter/NATSResourceAdapter.java
index 804a24f..4ed4485 100644
--- 
a/chatterbox-nats/chatterbox-nats-impl/src/main/java/org/apache/tomee/chatterbox/nats/adapter/NATSResourceAdapter.java
+++ 
b/chatterbox-nats/chatterbox-nats-impl/src/main/java/org/apache/tomee/chatterbox/nats/adapter/NATSResourceAdapter.java
@@ -24,6 +24,7 @@ import io.nats.streaming.StreamingConnectionFactory;
 import io.nats.streaming.Subscription;
 import org.apache.tomee.chatterbox.nats.api.InboundListener;
 import org.apache.tomee.chatterbox.nats.api.NATSException;
+import org.apache.tomee.chatterbox.nats.api.NATSMessage;
 
 import javax.resource.ResourceException;
 import javax.resource.spi.ActivationSpec;
@@ -38,7 +39,9 @@ import javax.resource.spi.work.Work;
 import javax.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import java.io.IOException;
+import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.lang.IllegalStateException;
@@ -51,7 +54,7 @@ public class NATSResourceAdapter implements ResourceAdapter {
 
     static {
         try {
-            ONMESSAGE = InboundListener.class.getMethod("onMessage", 
Message.class);
+            ONMESSAGE = InboundListener.class.getMethod("onMessage", 
NATSMessage.class);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -75,6 +78,7 @@ public class NATSResourceAdapter implements ResourceAdapter {
             connection = cf.createConnection();
         } catch (Throwable t) {
             // TODO: log this
+            t.printStackTrace();
         }
     }
 
@@ -154,7 +158,15 @@ public class NATSResourceAdapter implements 
ResourceAdapter {
             try {
                 try {
                     messageEndpoint.beforeDelivery(ONMESSAGE);
-                    ((InboundListener) messageEndpoint).onMessage(msg);
+
+                    final NATSMessage message = (NATSMessage) 
Proxy.newProxyInstance(getClass().getClassLoader(), new 
Class[]{InboundListener.class}, new InvocationHandler() {
+                        @Override
+                        public Object invoke(Object proxy, Method method, 
Object[] args) throws Throwable {
+                            return method.invoke(msg, args);
+                        }
+                    });
+
+                    ((InboundListener) messageEndpoint).onMessage(message);
                 } finally {
                     messageEndpoint.afterDelivery();
                 }
diff --git a/chatterbox-nats/chatterbox-nats-sample-war/pom.xml 
b/chatterbox-nats/chatterbox-nats-sample-war/pom.xml
index 25827a3..0dbf389 100644
--- a/chatterbox-nats/chatterbox-nats-sample-war/pom.xml
+++ b/chatterbox-nats/chatterbox-nats-sample-war/pom.xml
@@ -40,12 +40,6 @@
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>io.nats</groupId>
-      <artifactId>java-nats-streaming</artifactId>
-      <version>2.2.3</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>chatterbox-nats-impl</artifactId>
       <version>${project.version}</version>
@@ -95,7 +89,6 @@
           <tomeeClassifier>plus</tomeeClassifier>
           <libs>
             
<lib>org.apache.tomee.chatterbox:chatterbox-nats-api:${project.version}:jar</lib>
-            <lib>io.nats:java-nats-streaming:2.2.3:jar</lib>
           </libs>
           <apps>
             
<app>org.apache.tomee.chatterbox:chatterbox-nats-rar:${project.version}:rar</app>
diff --git 
a/chatterbox-nats/chatterbox-nats-sample-war/src/main/java/org/superbiz/EchoBean.java
 
b/chatterbox-nats/chatterbox-nats-sample-war/src/main/java/org/superbiz/EchoBean.java
index 2c0e81a..e66e0ff 100644
--- 
a/chatterbox-nats/chatterbox-nats-sample-war/src/main/java/org/superbiz/EchoBean.java
+++ 
b/chatterbox-nats/chatterbox-nats-sample-war/src/main/java/org/superbiz/EchoBean.java
@@ -17,12 +17,11 @@
 package org.superbiz;
 
 import org.apache.tomee.chatterbox.nats.api.InboundListener;
+import org.apache.tomee.chatterbox.nats.api.NATSMessage;
 import org.apache.tomee.chatterbox.nats.api.NATSException;
-import io.nats.streaming.Message;
 
 import javax.ejb.ActivationConfigProperty;
 import javax.ejb.MessageDriven;
-import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
 @MessageDriven(name = "Echo", activationConfig = {
@@ -30,15 +29,14 @@ import java.nio.charset.StandardCharsets;
 })
 public class EchoBean implements InboundListener {
 
-
     @Override
-    public void onMessage(final Message message) throws NATSException {
+    public void onMessage(final NATSMessage message) throws NATSException {
         try {
             final String text = new String(message.getData(), 
StandardCharsets.UTF_8);
             System.out.println(text);
 
             message.ack();
-        } catch (IOException e) {
+        } catch (Exception e) {
             throw new NATSException(e);
         }
     }

Reply via email to