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

tv pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-jcs.git


The following commit(s) were added to refs/heads/master by this push:
     new a64397a8 JCS-229 adding support for custom Serializer to 
LateralTCPListener class
     new 3fc4a603 Merge pull request #89 from dorkau80/JCS-229
a64397a8 is described below

commit a64397a8a320e7683dab15a08fc93418cc6916bb
Author: Dorota OeknigkUrbanska <[email protected]>
AuthorDate: Thu Apr 7 10:28:43 2022 +0200

    JCS-229 adding support for custom Serializer to LateralTCPListener class
---
 .../lateral/socket/tcp/LateralTCPCacheFactory.java | 14 ++++----
 .../lateral/socket/tcp/LateralTCPListener.java     | 38 +++++++++++++++++++---
 .../lateral/socket/tcp/TestTCPLateralUnitTest.java | 30 +++++++++++++----
 3 files changed, 65 insertions(+), 17 deletions(-)

diff --git 
a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
 
b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
index 3ddae04d..9a63f269 100644
--- 
a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
+++ 
b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
@@ -109,13 +109,13 @@ public class LateralTCPCacheFactory
 
                 final LateralCacheNoWait<K, V> lateralNoWait = 
createCacheNoWait(lacClone, cacheEventLogger, elementSerializer);
 
-                addListenerIfNeeded( lacClone, cacheMgr );
+                addListenerIfNeeded( lacClone, cacheMgr, elementSerializer );
                 monitorCache(lateralNoWait);
                 noWaits.add( lateralNoWait );
             }
         }
 
-        final ILateralCacheListener<K, V> listener = createListener( lac, 
cacheMgr );
+        final ILateralCacheListener<K, V> listener = createListener( lac, 
cacheMgr, elementSerializer );
 
         // create the no wait facade.
         final LateralCacheNoWaitFacade<K, V> lcnwf =
@@ -330,15 +330,16 @@ public class LateralTCPCacheFactory
      * <p>
      * @param iaca cache configuration attributes
      * @param cacheMgr the composite cache manager
+     * @param serializer the serializer to use when receiving
      */
-    private void addListenerIfNeeded( final ITCPLateralCacheAttributes iaca, 
final ICompositeCacheManager cacheMgr )
+    private void addListenerIfNeeded( final ITCPLateralCacheAttributes iaca, 
final ICompositeCacheManager cacheMgr, final IElementSerializer 
elementSerializer )
     {
         // don't create a listener if we are not receiving.
         if ( iaca.isReceive() )
         {
             try
             {
-                addLateralCacheListener(iaca.getCacheName(), 
createListener(iaca, cacheMgr));
+                addLateralCacheListener(iaca.getCacheName(), 
createListener(iaca, cacheMgr, elementSerializer));
             }
             catch ( final IOException ioe )
             {
@@ -375,11 +376,12 @@ public class LateralTCPCacheFactory
      * <p>
      * @param attr  ITCPLateralCacheAttributes
      * @param cacheMgr the composite cache manager
+     * @param serializer the serializer to use when receiving
      *
      * @return the listener if created, else null
      */
     private static <K, V> ILateralCacheListener<K, V> createListener( final 
ITCPLateralCacheAttributes attr,
-            final ICompositeCacheManager cacheMgr )
+            final ICompositeCacheManager cacheMgr, final IElementSerializer 
elementSerializer )
     {
         ILateralCacheListener<K, V> listener = null;
 
@@ -389,7 +391,7 @@ public class LateralTCPCacheFactory
             log.info( "Getting listener for {0}", attr );
 
             // make a listener. if one doesn't exist
-            listener = LateralTCPListener.getInstance( attr, cacheMgr );
+            listener = LateralTCPListener.getInstance( attr, cacheMgr, 
elementSerializer );
 
             // register for shutdown notification
             cacheMgr.registerShutdownObserver( (IShutdownObserver) listener );
diff --git 
a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPListener.java
 
b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPListener.java
index daefb18a..4d1154da 100644
--- 
a/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPListener.java
+++ 
b/commons-jcs-core/src/main/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/LateralTCPListener.java
@@ -108,15 +108,43 @@ public class LateralTCPListener<K, V>
      * @param ilca ITCPLateralCacheAttributes
      * @param cacheMgr
      * @return The instance value
+     * @deprecated Specify serializer
+     */
+    @Deprecated
+    @SuppressWarnings("unchecked") // Need to cast because of common map for 
all instances
+    public static <K, V> LateralTCPListener<K, V>
+        getInstance( final ITCPLateralCacheAttributes ilca, final 
ICompositeCacheManager cacheMgr)
+    {
+        return (LateralTCPListener<K, V>) instances.computeIfAbsent(
+                String.valueOf( ilca.getTcpListenerPort() ),
+                k -> {
+                    final LateralTCPListener<K, V> newIns = new 
LateralTCPListener<>( ilca, new StandardSerializer() );
+
+                    newIns.init();
+                    newIns.setCacheManager( cacheMgr );
+
+                    log.info("Created new listener {0}", 
ilca::getTcpListenerPort);
+
+                    return newIns;
+                });
+    }
+    
+    /**
+     * Gets the instance attribute of the LateralCacheTCPListener class.
+     * <p>
+     * @param ilca ITCPLateralCacheAttributes
+     * @param cacheMgr
+     * @param serializer the serializer to use when receiving
+     * @return The instance value
      */
     @SuppressWarnings("unchecked") // Need to cast because of common map for 
all instances
     public static <K, V> LateralTCPListener<K, V>
-        getInstance( final ITCPLateralCacheAttributes ilca, final 
ICompositeCacheManager cacheMgr )
+        getInstance( final ITCPLateralCacheAttributes ilca, final 
ICompositeCacheManager cacheMgr, final IElementSerializer serializer )
     {
         return (LateralTCPListener<K, V>) instances.computeIfAbsent(
                 String.valueOf( ilca.getTcpListenerPort() ),
                 k -> {
-                    final LateralTCPListener<K, V> newIns = new 
LateralTCPListener<>( ilca );
+                    final LateralTCPListener<K, V> newIns = new 
LateralTCPListener<>( ilca, serializer );
 
                     newIns.init();
                     newIns.setCacheManager( cacheMgr );
@@ -131,10 +159,12 @@ public class LateralTCPListener<K, V>
      * Only need one since it does work for all regions, just reference by 
multiple region names.
      * <p>
      * @param ilca
+     * @param serializer the serializer to use when receiving
      */
-    protected LateralTCPListener( final ITCPLateralCacheAttributes ilca )
+    protected LateralTCPListener( final ITCPLateralCacheAttributes ilca, final 
IElementSerializer serializer )
     {
         this.setTcpLateralCacheAttributes( ilca );
+        this.serializer = serializer;
     }
 
     /**
@@ -151,8 +181,6 @@ public class LateralTCPListener<K, V>
             terminated.set(false);
             shutdown.set(false);
 
-            serializer = new StandardSerializer();
-
             final ServerSocketChannel serverSocket = 
ServerSocketChannel.open();
 
             SocketAddress endPoint;
diff --git 
a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/TestTCPLateralUnitTest.java
 
b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/TestTCPLateralUnitTest.java
index d69f8ea2..986ec83b 100644
--- 
a/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/TestTCPLateralUnitTest.java
+++ 
b/commons-jcs-core/src/test/java/org/apache/commons/jcs3/auxiliary/lateral/socket/tcp/TestTCPLateralUnitTest.java
@@ -30,11 +30,13 @@ import 
org.apache.commons.jcs3.auxiliary.lateral.LateralElementDescriptor;
 import org.apache.commons.jcs3.engine.CacheElement;
 import org.apache.commons.jcs3.engine.behavior.ICacheElement;
 import org.apache.commons.jcs3.engine.behavior.ICompositeCacheManager;
+import org.apache.commons.jcs3.engine.behavior.IElementSerializer;
 import org.apache.commons.jcs3.engine.control.CompositeCache;
 import org.apache.commons.jcs3.engine.control.CompositeCacheManager;
 import org.apache.commons.jcs3.engine.control.MockCompositeCacheManager;
 import org.apache.commons.jcs3.engine.control.group.GroupAttrName;
 import org.apache.commons.jcs3.engine.control.group.GroupId;
+import org.apache.commons.jcs3.utils.serialization.EncryptingSerializer;
 import org.apache.commons.jcs3.utils.serialization.StandardSerializer;
 import org.apache.commons.jcs3.utils.timing.SleepUtil;
 
@@ -70,7 +72,7 @@ public class TestTCPLateralUnitTest
         // get the listener started
         // give it our mock cache manager
         //LateralTCPListener listener = (LateralTCPListener)
-        LateralTCPListener.getInstance( lattr, cacheMgr );
+        LateralTCPListener.getInstance( lattr, cacheMgr, new 
StandardSerializer());
 
         return cache;
     }
@@ -98,22 +100,38 @@ public class TestTCPLateralUnitTest
     public void testSimpleSend()
         throws Exception
     {
-        // SETUP
+       simpleSend(new StandardSerializer(), 8111);
+    }
+    
+    /**
+     * @throws Exception
+     */
+    public void testSimpleEncriptedSend()
+            throws Exception
+    {
+       EncryptingSerializer serializer = new EncryptingSerializer();
+       serializer.setPreSharedKey("my_key");
+       simpleSend(serializer, 8112);
+    }
+    
+    private void simpleSend(final IElementSerializer serializer, final int 
port ) throws IOException {
+       // SETUP
         // force initialization
         JCS.getInstance( "test" );
 
         final TCPLateralCacheAttributes lac = new TCPLateralCacheAttributes();
         lac.setTransmissionType(LateralCacheAttributes.Type.TCP);
-        lac.setTcpServer( "localhost:" + 8111 );
-        lac.setTcpListenerPort( 8111 );
+        lac.setTcpServer( "localhost:" + port );
+        lac.setTcpListenerPort( port );
 
         final ICompositeCacheManager cacheMgr = 
CompositeCacheManager.getInstance();
 
+
         // start the listener
-        final LateralTCPListener<String, String> listener = 
LateralTCPListener.getInstance( lac, cacheMgr );
+        final LateralTCPListener<String, String> listener = 
LateralTCPListener.getInstance( lac, cacheMgr, serializer );
 
         // send to the listener
-        final LateralTCPSender lur = new LateralTCPSender(lac,  new 
StandardSerializer());
+        final LateralTCPSender lur = new LateralTCPSender(lac,  serializer);
 
         // DO WORK
         final int numMes = 10;

Reply via email to