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;