Download Firefox: WindowsMac OS X
logo       
Google Custom Search
    AddThis Social Bookmark Button

svn commit: r289379 [1/2] - in /jakarta/jcs/trunk: auxiliary-builds/jdk14/s: msg#00012

Subject: svn commit: r289379 [1/2] - in /jakarta/jcs/trunk: auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/ auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/ auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/l...
Author: asmuts
Date: Thu Sep 15 21:37:26 2005
New Revision: 289379

URL: http://svn.apache.org/viewcvs?rev=289379&view=rev
Log:
Finshed refactoring tcp lateral to use its own attributes, factory and manager.

I added allowGet, allowPut, issueRemoveOnPut, and filterRemoveByHashCode 
attributes

for TCP lateral, as discussed on the user list.  I Added unit test for all new 
features.

I will add documentation on the new features later.

I still need to get the jgroups factory in order after the lateral refactoring.


Added:
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/TCPLateralCacheAttributes.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/ITCPLateralCacheAttributes.java
    jakarta/jcs/trunk/src/test-conf/TestTCPLateralIssueRemoveCache.ccf
    jakarta/jcs/trunk/src/test-conf/TestTCPLateralRemoveFilter.ccf
    
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestLateralTCPFilterRemoveHashCode.java
    
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestLateralTCPIssueRemoveOnPut.java
Modified:
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/LateralJGCacheManager.java
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/IJGConstants.java
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/ILateralCacheJGListener.java
    
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/utils/JGRpcOpener.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheAttributes.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralElementDescriptor.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/behavior/ILateralCacheAttributes.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheManager.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPSender.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPService.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryManager.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryMessage.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryReceiver.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoverySender.java
    
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryService.java
    jakarta/jcs/trunk/src/test-conf/TestTCPLateralCache.ccf
    jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf
    jakarta/jcs/trunk/src/test-conf/TestUDPDiscovery.ccf
    jakarta/jcs/trunk/src/test-conf/log4j.properties
    
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestLateralTCPConcurrentRandom.java
    
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/TestTCPLateral.java
    
jakarta/jcs/trunk/src/test/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/TestUDPDiscovery.java

Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java
 Thu Sep 15 21:37:26 2005
@@ -25,9 +25,6 @@
 import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;

 import org.apache.jcs.auxiliary.lateral.javagroups.LateralCacheJGListener;

-import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener;

-import 
org.apache.jcs.auxiliary.lateral.socket.tcp.discovery.UDPDiscoveryManager;

-import 
org.apache.jcs.auxiliary.lateral.socket.tcp.discovery.UDPDiscoveryService;

 import org.apache.jcs.engine.behavior.ICache;

 import org.apache.jcs.engine.behavior.ICompositeCacheManager;

 

@@ -37,7 +34,9 @@
  * canl have multiple caches. The remote relationships are consolidated and

  * restored via these managers. The facade provides a front to the composite

  * cache so the implmenetation is transparent.

- *  

+ * 

+ * This can no longer create TCP laterals

+ * 

  * @deprecated use the new TYPE specific lateral factories.

  */

 public class LateralCacheFactory

@@ -76,40 +75,7 @@
             {

                 noWaits.add( ic );

             }

-        }

-

-        // for each server listed get the manager for that server.

-        // from that manager get the cache for this region name.

-        else if ( lac.getTransmissionType() == LateralCacheAttributes.TCP )

-        {

 

-            //pars up the tcp servers and set the tcpServer value and

-            // get the manager and then get the cache

-            StringTokenizer it = new StringTokenizer( lac.tcpServers, "," );

-            if ( log.isDebugEnabled() )

-            {

-                log.debug( "Configured for " + it.countTokens() + "  servers." 
);

-            }

-            while ( it.hasMoreElements() )

-            {

-                String server = (String) it.nextElement();

-                if ( log.isDebugEnabled() )

-                {

-                    log.debug( "tcp server = " + server );

-                }

-                LateralCacheAttributes lacC = (LateralCacheAttributes) 
lac.copy();

-                lacC.setTcpServer( server );

-                LateralCacheManager lcm = LateralCacheManager.getInstance( 
lacC, cacheMgr );

-                ICache ic = lcm.getCache( lacC.getCacheName() );

-                if ( ic != null )

-                {

-                    noWaits.add( ic );

-                }

-                else

-                {

-                    log.debug( "noWait is null, no lateral connection made" );

-                }

-            }

         }

         else if ( lac.getTransmissionType() == LateralCacheAttributes.XMLRPC )

         {

@@ -161,14 +127,14 @@
         LateralCacheNoWaitFacade lcnwf = new LateralCacheNoWaitFacade( 
(LateralCacheNoWait[]) noWaits

             .toArray( new LateralCacheNoWait[0] ), iaca.getCacheName() );

 

-        createDiscoveryService( lac, lcnwf, cacheMgr );

-

         return lcnwf;

     }

 

     /*

-     *  (non-Javadoc)

-     * @see 
org.apache.jcs.auxiliary.lateral.LateralCacheAbstractFactory#createListener(org.apache.jcs.auxiliary.lateral.LateralCacheAttributes,
 org.apache.jcs.engine.behavior.ICompositeCacheManager)

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.LateralCacheAbstractFactory#createListener(org.apache.jcs.auxiliary.lateral.LateralCacheAttributes,

+     *      org.apache.jcs.engine.behavior.ICompositeCacheManager)

      */

     public void createListener( LateralCacheAttributes lac, 
ICompositeCacheManager cacheMgr )

     {

@@ -183,12 +149,7 @@
 

             try

             {

-                if ( lac.getTransmissionType() == ILateralCacheAttributes.TCP )

-                {

-                    // make a listener. if one doesn't exist

-                    LateralTCPListener.getInstance( lac, cacheMgr );

-                }

-                else if ( lac.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

+                if ( lac.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

                 {

                     LateralCacheJGListener.getInstance( lac, cacheMgr );

                 }

@@ -206,45 +167,6 @@
                 log.debug( "Not creating a listener since we are not 
receiving." );

             }

         }

-    }

-

-    /**

-     * Creates the discovery service. Only creates this for tcp laterals right

-     * now.

-     * 

-     * @param lac

-     * @param lcnwf

-     * @param cacheMgr

-     * @return null if none is created.

-     */

-    private UDPDiscoveryService createDiscoveryService( LateralCacheAttributes 
lac, LateralCacheNoWaitFacade lcnwf,

-                                                       ICompositeCacheManager 
cacheMgr )

-    {

-        UDPDiscoveryService discovery = null;

-

-        //      create the UDP discovery for the TCP lateral

-        if ( lac.isUdpDiscoveryEnabled() )

-        {

-            if ( lac.getTransmissionType() != LateralCacheAttributes.TCP )

-            {

-                log

-                    .warn( "UdpDiscoveryEnabled is set to true, but the 
Lateral cache type is not TCP.  Discovery will not be enabled." );

-            }

-            else

-            {

-                // need a factory for this so it doesn't

-                // get dereferenced, also we don't want one for every region.

-                discovery = UDPDiscoveryManager.getInstance().getService( lac, 
cacheMgr );

-

-                discovery.addNoWaitFacade( lcnwf, lac.getCacheName() );

-

-                if ( log.isInfoEnabled() )

-                {

-                    log.info( "Created UDPDiscoveryService for TCP lateral 
cache." );

-                }

-            }

-        }

-        return discovery;

     }

 

     /**


Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java
 Thu Sep 15 21:37:26 2005
@@ -146,14 +146,7 @@
 

         try

         {

-            if ( this.lca.getTransmissionType() == ILateralCacheAttributes.TCP 
)

-            {

-                log.debug( "Creating TCP service" );

-                log.info( "Creating TCP service, lca = " + this.lca );

-

-                this.lateralService = new LateralTCPService( this.lca );

-            }

-            else if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

+            if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

             {

                 log.debug( "Creating JAVAGROUPS service" );

 

@@ -255,11 +248,7 @@
         {

             try

             {

-                if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.TCP )

-                {

-                    addLateralCacheListener( cacheName, 
LateralTCPListener.getInstance( this.lca, cacheMgr ) );

-                }

-                else if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

+                if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

                 {

                     addLateralCacheListener( cacheName, 
LateralCacheJGListener.getInstance( this.lca, cacheMgr ) );

                 }

@@ -359,10 +348,7 @@
         Object service = null;

         try

         {

-            if ( lca.getTransmissionType() == lca.TCP )

-            {

-                service = new LateralTCPService( lca );                

-            }

+            // no op

         }

         catch ( Exception ex )

         {


Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/LateralJGCacheManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/LateralJGCacheManager.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/LateralJGCacheManager.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/LateralJGCacheManager.java
 Thu Sep 15 21:37:26 2005
@@ -35,7 +35,6 @@
 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheListener;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheService;

-import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService;

 import org.apache.jcs.engine.behavior.ICompositeCacheManager;

 

 /**

@@ -112,13 +111,11 @@
             }

         }

 

-        

         createMonitor( ins );

-        

+

         return ins;

     }

 

-    

     /**

      * The monitor needs reference to one instance, acutally just a type.

      * 

@@ -128,7 +125,7 @@
      */

     private static synchronized void createMonitor( ILateralCacheManager 
instance )

     {

-//      only want one monitor per lateral type

+        //      only want one monitor per lateral type

         // Fires up the monitoring daemon.

         if ( monitor == null )

         {

@@ -143,7 +140,7 @@
         }

 

     }

-    

+

     /**

      * Constructor for the LateralCacheManager object

      * 

@@ -165,14 +162,7 @@
 

         try

         {

-            if ( this.lca.getTransmissionType() == ILateralCacheAttributes.TCP 
)

-            {

-                log.debug( "Creating TCP service" );

-                log.info( "Creating TCP service, lca = " + this.lca );

-

-                this.lateralService = new LateralTCPService( this.lca );

-            }

-            else if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

+            if ( this.lca.getTransmissionType() == 
ILateralCacheAttributes.JAVAGROUPS )

             {

                 log.debug( "Creating JAVAGROUPS service" );

 

@@ -211,7 +201,7 @@
 

             // Notify the cache monitor about the error, and kick off

             // the recovery process.

-            

+

             createMonitor( this );

             monitor.notifyError();

         }

@@ -312,8 +302,9 @@
         return instances;

     }

 

-

-    /* (non-Javadoc)

+    /*

+     * (non-Javadoc)

+     * 

      * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#fixService()

      */

     public Object fixService()


Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/IJGConstants.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/IJGConstants.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/IJGConstants.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/IJGConstants.java
 Thu Sep 15 21:37:26 2005
@@ -5,7 +5,7 @@
  * 

  * Licensed 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

+ * the License at 

  * 

  * http://www.apache.org/licenses/LICENSE-2.0

  * 


Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/ILateralCacheJGListener.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/ILateralCacheJGListener.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/ILateralCacheJGListener.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/behavior/ILateralCacheJGListener.java
 Thu Sep 15 21:37:26 2005
@@ -23,7 +23,7 @@
 

 /**

  * Listens for lateral cache event notification.

- * 

+ *  

  * @version $Id: ILateralCacheJGListener.java 224346 2005-06-04 02:01:59Z 
asmuts $

  */

 public interface ILateralCacheJGListener


Modified: 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/utils/JGRpcOpener.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/utils/JGRpcOpener.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/utils/JGRpcOpener.java
 (original)
+++ 
jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/javagroups/utils/JGRpcOpener.java
 Thu Sep 15 21:37:26 2005
@@ -47,12 +47,15 @@
 

     private ILateralCacheAttributes ilca;

 

-    /** Constructor for the SocketOpener object 

+    /**

+     * Constructor for the SocketOpener object

+     * 

      * @param ilcl

      * @param ilca

      * @param timeOut

      * @param groupName

-     * @return*/

+     * @return

+     */

     public static RpcDispatcher openSocket( ILateralCacheJGListener ilcl, 
ILateralCacheAttributes ilca, int timeOut,

                                            String groupName )

     {

@@ -72,10 +75,11 @@
 

     /**

      * Constructor for the SocketOpener object

+     * 

      * @param ilcl

      * @param ilca

      * @param groupName

-     * 

+     *  

      */

     public JGRpcOpener( ILateralCacheJGListener ilcl, ILateralCacheAttributes 
ilca, String groupName )

     {

@@ -103,7 +107,7 @@
             {

                 log.info( "Is Connected = " + rpcCh.isConnected() );

             }

-            

+

         }

         catch ( Exception e )

         {

@@ -111,8 +115,11 @@
         }

     }

 

-    /** Gets the socket attribute of the SocketOpener object 

-     * @return*/

+    /**

+     * Gets the socket attribute of the SocketOpener object

+     * 

+     * @return

+     */

     public RpcDispatcher getSocket()

     {

         return disp;


Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheAttributes.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheAttributes.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheAttributes.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheAttributes.java
 Thu Sep 15 21:37:26 2005
@@ -31,6 +31,9 @@
     extends AbstractAuxiliaryCacheAttributes
     implements Serializable, ILateralCacheAttributes
 {
+    
+    private static final boolean DEFAULT_RECEIVE = true;
+    
     String transmissionTypeName = "UDP";
 
     int transmissionType = UDP;
@@ -51,21 +54,6 @@
 
     int httpListenerPort = 8080;
 
-    // TCP --------------------------------------------
-    String tcpServers = "";
-
-    // used to identify the service that this manager will be
-    // operating on
-    String tcpServer = "";
-
-    int tcpListenerPort = 0;
-
-    // udp discovery for tcp server
-    private String udpDiscoveryAddr = "228.5.6.7";
-
-    private int udpDiscoveryPort = 6789;
-
-    private boolean udpDiscoveryEnabled = true;
 
     // JAVAGROUPS -------------------------
     private String jgChannelProperties = null;
@@ -76,7 +64,7 @@
 
     // do we receive and broadcast or only broadcast
     // this is useful when you don't want to get any notifications
-    private boolean receive = true;
+    private boolean receive = DEFAULT_RECEIVE;
 
     /**
      * Sets the httpServer attribute of the LateralCacheAttributes object
@@ -99,26 +87,7 @@
         return httpServer;
     }
 
-    /**
-     * Sets the tcpServers attribute of the LateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpServers value
-     */
-    public void setTcpServers( String val )
-    {
-        tcpServers = val;
-    }
 
-    /**
-     * Gets the tcpServers attribute of the LateralCacheAttributes object
-     * 
-     * @return The tcpServers value
-     */
-    public String getTcpServers()
-    {
-        return tcpServers;
-    }
 
     /**
      * Sets the httpServers attribute of the LateralCacheAttributes object
@@ -141,47 +110,7 @@
         return httpServers;
     }
 
-    /**
-     * Sets the tcpServer attribute of the LateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpServer value
-     */
-    public void setTcpServer( String val )
-    {
-        tcpServer = val;
-    }
-
-    /**
-     * Gets the tcpServer attribute of the LateralCacheAttributes object
-     * 
-     * @return The tcpServer value
-     */
-    public String getTcpServer()
-    {
-        return tcpServer;
-    }
-
-    /**
-     * Sets the tcpListenerPort attribute of the LateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpListenerPort value
-     */
-    public void setTcpListenerPort( int val )
-    {
-        this.tcpListenerPort = val;
-    }
-
-    /**
-     * Gets the tcpListenerPort attribute of the LateralCacheAttributes object
-     * 
-     * @return The tcpListenerPort value
-     */
-    public int getTcpListenerPort()
-    {
-        return this.tcpListenerPort;
-    }
+    
 
     /**
      * Sets the httpListenerPort attribute of the ILateralCacheAttributes 
object
@@ -380,40 +309,8 @@
         return this;
     }
 
-    /**
-     * @param udpDiscoveryAddr
-     *            The udpDiscoveryAddr to set.
-     */
-    public void setUdpDiscoveryAddr( String udpDiscoveryAddr )
-    {
-        this.udpDiscoveryAddr = udpDiscoveryAddr;
-    }
-
-    /**
-     * @return Returns the udpDiscoveryAddr.
-     */
-    public String getUdpDiscoveryAddr()
-    {
-        return udpDiscoveryAddr;
-    }
-
-    /**
-     * @param udpDiscoveryPort
-     *            The udpDiscoveryPort to set.
-     */
-    public void setUdpDiscoveryPort( int udpDiscoveryPort )
-    {
-        this.udpDiscoveryPort = udpDiscoveryPort;
-    }
-
-    /**
-     * @return Returns the udpDiscoveryPort.
-     */
-    public int getUdpDiscoveryPort()
-    {
-        return udpDiscoveryPort;
-    }
-
+    
+    
     /**
      * @param receive
      *            The receive to set.
@@ -431,22 +328,7 @@
         return receive;
     }
 
-    /**
-     * @param udpDiscoveryEnabled
-     *            The udpDiscoveryEnabled to set.
-     */
-    public void setUdpDiscoveryEnabled( boolean udpDiscoveryEnabled )
-    {
-        this.udpDiscoveryEnabled = udpDiscoveryEnabled;
-    }
-
-    /**
-     * @return Returns the udpDiscoveryEnabled.
-     */
-    public boolean isUdpDiscoveryEnabled()
-    {
-        return udpDiscoveryEnabled;
-    }
+    
 
     /*
      * (non-Javadoc)
@@ -461,8 +343,7 @@
         //buf.append( "transmissionTypeName=" + transmissionTypeName + "\n" );
         //buf.append( "transmissionType=" + transmissionType + "\n" );
         //buf.append( "tcpServer=" + tcpServer + "\n" );
-        buf.append( transmissionTypeName + httpServer + udpMulticastAddr + 
String.valueOf( udpMulticastPort )
-            + tcpServer );
+        buf.append( transmissionTypeName + httpServer + udpMulticastAddr + 
String.valueOf( udpMulticastPort ) );
         return buf.toString();
     }
 

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralElementDescriptor.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralElementDescriptor.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralElementDescriptor.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/LateralElementDescriptor.java
 Thu Sep 15 21:37:26 2005
@@ -21,7 +21,7 @@
 import org.apache.jcs.engine.behavior.ICacheElement;
 
 /**
- * Description of the Class
+ * This class wraps command to other laterals.
  *  
  */
 public class LateralElementDescriptor
@@ -53,6 +53,8 @@
     /** Description of the Field */
     public int command = UPDATE;
 
+    public int valHashCode = -1;
+    
     // for update command
     /** Constructor for the LateralElementDescriptor object */
     public LateralElementDescriptor()

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/behavior/ILateralCacheAttributes.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/behavior/ILateralCacheAttributes.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/behavior/ILateralCacheAttributes.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/behavior/ILateralCacheAttributes.java
 Thu Sep 15 21:37:26 2005
@@ -21,7 +21,12 @@
 import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
 
 /**
- * Description of the Interface
+ * This interface defines configuration options common to lateral cache
+ * plugins.  
+ * 
+ * TODO it needs to be trimmed down.  The old version had features for
+ * every lateral.  Now, the individual laterals have their own specific
+ * attributes interfaces.
  *  
  */
 public interface ILateralCacheAttributes
@@ -53,51 +58,7 @@
      */
     public String getHttpServer();
 
-    /**
-     * Sets the tcpServer attribute of the ILateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpServer value
-     */
-    public void setTcpServer( String val );
-
-    /**
-     * Gets the tcpServer attribute of the ILateralCacheAttributes object
-     * 
-     * @return The tcpServer value
-     */
-    public String getTcpServer();
-
-    /**
-     * Sets the tcpServers attribute of the ILateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpServers value
-     */
-    public void setTcpServers( String val );
-
-    /**
-     * Gets the tcpServers attribute of the ILateralCacheAttributes object
-     * 
-     * @return The tcpServers value
-     */
-    public String getTcpServers();
-
-    /**
-     * Sets the tcpListenerPort attribute of the ILateralCacheAttributes object
-     * 
-     * @param val
-     *            The new tcpListenerPort value
-     */
-    public void setTcpListenerPort( int val );
-
-    /**
-     * Gets the tcpListenerPort attribute of the ILateralCacheAttributes object
-     * 
-     * @return The tcpListenerPort value
-     */
-    public int getTcpListenerPort();
-
+    
     /**
      * Sets the httpListenerPort attribute of the ILateralCacheAttributes 
object
      * 
@@ -242,51 +203,5 @@
      */
     public boolean isReceive();
 
-    /**
-     * Can setup UDP Discovery. This only works for TCp laterals right now. It
-     * allows TCP laterals to find each other by broadcasting to a multicast
-     * port.
-     * 
-     * @param udpDiscoveryEnabled
-     *            The udpDiscoveryEnabled to set.
-     */
-    public void setUdpDiscoveryEnabled( boolean udpDiscoveryEnabled );
-
-    /**
-     * Whether or not TCP laterals can try to find each other by multicast
-     * communication.
-     * 
-     * @return Returns the udpDiscoveryEnabled.
-     */
-    public boolean isUdpDiscoveryEnabled();
-
-    /**
-     * The port to use if UDPDiscovery is enabled.
-     * 
-     * @return Returns the udpDiscoveryPort.
-     */
-    public int getUdpDiscoveryPort();
-
-    /**
-     * Sets the port to use if UDPDiscovery is enabled.
-     * 
-     * @param udpDiscoveryPort
-     *            The udpDiscoveryPort to set.
-     */
-    public void setUdpDiscoveryPort( int udpDiscoveryPort );
-
-    /**
-     * The address to broadcast to if UDPDiscovery is enabled.
-     * 
-     * @return Returns the udpDiscoveryAddr.
-     */
-    public String getUdpDiscoveryAddr();
-
-    /**
-     * Sets the address to broadcast to if UDPDiscovery is enabled.
-     * 
-     * @param udpDiscoveryAddr
-     *            The udpDiscoveryAddr to set.
-     */
-    public void setUdpDiscoveryAddr( String udpDiscoveryAddr );
+    
 }

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheFactory.java
 Thu Sep 15 21:37:26 2005
@@ -27,6 +27,7 @@
 import org.apache.jcs.auxiliary.lateral.LateralCacheAttributes;

 import org.apache.jcs.auxiliary.lateral.LateralCacheNoWait;

 import org.apache.jcs.auxiliary.lateral.LateralCacheNoWaitFacade;

+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;

 import 
org.apache.jcs.auxiliary.lateral.socket.tcp.discovery.UDPDiscoveryManager;

 import 
org.apache.jcs.auxiliary.lateral.socket.tcp.discovery.UDPDiscoveryService;

 import org.apache.jcs.engine.behavior.ICache;

@@ -54,7 +55,7 @@
     public AuxiliaryCache createCache( AuxiliaryCacheAttributes iaca, 
ICompositeCacheManager cacheMgr )

     {

 

-        LateralCacheAttributes lac = (LateralCacheAttributes) iaca;

+        ITCPLateralCacheAttributes lac = (ITCPLateralCacheAttributes) iaca;

         ArrayList noWaits = new ArrayList();

 

         //pars up the tcp servers and set the tcpServer value and

@@ -74,14 +75,14 @@
                 {

                     log.debug( "tcp server = " + server );

                 }

-                LateralCacheAttributes lacC = (LateralCacheAttributes) 
lac.copy();

+                ITCPLateralCacheAttributes lacC = (ITCPLateralCacheAttributes) 
lac.copy();

                 lacC.setTcpServer( server );

                 LateralTCPCacheManager lcm = 
LateralTCPCacheManager.getInstance( lacC, cacheMgr );

                 ICache ic = lcm.getCache( lacC.getCacheName() );

                 if ( ic != null )

                 {

                     noWaits.add( ic );

-                }

+                } 

                 else

                 {

                     log.debug( "noWait is null, no lateral connection made" );

@@ -89,7 +90,7 @@
             }

         }

 

-        createListener( lac, cacheMgr );

+        createListener( (LateralCacheAttributes)iaca, cacheMgr );

 

         // create the no wait facade.

         LateralCacheNoWaitFacade lcnwf = new LateralCacheNoWaitFacade( 
(LateralCacheNoWait[]) noWaits

@@ -109,8 +110,10 @@
      */

     public void createListener( LateralCacheAttributes lac, 
ICompositeCacheManager cacheMgr )

     {

+        

+        ITCPLateralCacheAttributes attr = (ITCPLateralCacheAttributes)lac;

         // don't create a listener if we are not receiving.

-        if ( lac.isReceive() )

+        if ( attr.isReceive() )

         {

 

             if ( log.isInfoEnabled() )

@@ -122,7 +125,7 @@
             {

 

                 // make a listener. if one doesn't exist

-                LateralTCPListener.getInstance( lac, cacheMgr );

+                LateralTCPListener.getInstance( attr, cacheMgr );

 

             }

             catch ( Exception e )

@@ -143,12 +146,12 @@
      * Creates the discovery service. Only creates this for tcp laterals right

      * now.

      * 

-     * @param lac

+     * @param lac ITCPLateralCacheAttributes

      * @param lcnwf

      * @param cacheMgr

      * @return null if none is created.

      */

-    private UDPDiscoveryService createDiscoveryService( LateralCacheAttributes 
lac, LateralCacheNoWaitFacade lcnwf,

+    private UDPDiscoveryService createDiscoveryService( 
ITCPLateralCacheAttributes lac, LateralCacheNoWaitFacade lcnwf,

                                                        ICompositeCacheManager 
cacheMgr )

     {

         UDPDiscoveryService discovery = null;


Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheManager.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheManager.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPCacheManager.java
 Thu Sep 15 21:37:26 2005
@@ -31,10 +31,10 @@
 import org.apache.jcs.auxiliary.lateral.LateralCacheWatchRepairable;

 import org.apache.jcs.auxiliary.lateral.ZombieLateralCacheService;

 import org.apache.jcs.auxiliary.lateral.ZombieLateralCacheWatch;

-import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheListener;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager;

 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheService;

+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;

 import org.apache.jcs.engine.behavior.ICompositeCacheManager;

 

 /**

@@ -60,9 +60,9 @@
     protected static Map instances = new HashMap();

 

     /**

-     * Description of the Field

+     * ITCPLateralCacheAttributes

      */

-    protected ILateralCacheAttributes lca;

+    protected ITCPLateralCacheAttributes lca;

 

     private int clients;

 

@@ -88,7 +88,7 @@
      *            this allows the auxiliary to be passed a cache manager.

      * @return

      */

-    public static LateralTCPCacheManager getInstance( ILateralCacheAttributes 
lca, ICompositeCacheManager cacheMgr )

+    public static LateralTCPCacheManager getInstance( 
ITCPLateralCacheAttributes lca, ICompositeCacheManager cacheMgr )

     {

         LateralTCPCacheManager ins = (LateralTCPCacheManager) instances.get( 
lca.toString() );

         synchronized ( instances )

@@ -145,7 +145,7 @@
      * @param lcaA

      * @param cacheMgr

      */

-    private LateralTCPCacheManager( ILateralCacheAttributes lcaA, 
ICompositeCacheManager cacheMgr )

+    private LateralTCPCacheManager( ITCPLateralCacheAttributes lcaA, 
ICompositeCacheManager cacheMgr )

     {

         this.lca = lcaA;

 


Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPListener.java
 Thu Sep 15 21:37:26 2005
@@ -29,8 +29,8 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.jcs.auxiliary.lateral.LateralCacheInfo;
 import org.apache.jcs.auxiliary.lateral.LateralElementDescriptor;
-import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;
 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheListener;
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.engine.behavior.ICacheElement;
 import org.apache.jcs.engine.behavior.ICompositeCacheManager;
 import org.apache.jcs.engine.control.CompositeCache;
@@ -62,7 +62,7 @@
     /** The socket listener */
     private ListenerThread receiver;
 
-    private ILateralCacheAttributes ilca;
+    private ITCPLateralCacheAttributes tcpLateralCacheAttributes;
 
     private int port;
 
@@ -84,9 +84,11 @@
      * Gets the instance attribute of the LateralCacheTCPListener class.
      * 
      * @param ilca
+     *            ITCPLateralCacheAttributes
+     * @param cacheMgr
      * @return The instance value
      */
-    public synchronized static ILateralCacheListener getInstance( 
ILateralCacheAttributes ilca,
+    public synchronized static ILateralCacheListener getInstance( 
ITCPLateralCacheAttributes ilca,
                                                                  
ICompositeCacheManager cacheMgr )
     {
         ILateralCacheListener ins = (ILateralCacheListener) instances.get( 
String.valueOf( ilca.getTcpListenerPort() ) );
@@ -118,9 +120,9 @@
      * 
      * @param ilca
      */
-    protected LateralTCPListener( ILateralCacheAttributes ilca )
+    protected LateralTCPListener( ITCPLateralCacheAttributes ilca )
     {
-        this.ilca = ilca;
+        this.setTcpLateralCacheAttributes( ilca );
     }
 
     /**
@@ -130,7 +132,7 @@
     {
         try
         {
-            this.port = ilca.getTcpListenerPort();
+            this.port = getTcpLateralCacheAttributes().getTcpListenerPort();
 
             receiver = new ListenerThread();
             receiver.setDaemon( true );
@@ -201,7 +203,8 @@
         {
             if ( getPutCnt() % 100 == 0 )
             {
-                log.info( "Put Count (port " + ilca.getTcpListenerPort() + ") 
= " + getPutCnt() );
+                log.info( "Put Count (port " + 
getTcpLateralCacheAttributes().getTcpListenerPort() + ") = "
+                    + getPutCnt() );
             }
         }
 
@@ -353,6 +356,23 @@
     }
 
     /**
+     * @param tcpLateralCacheAttributes
+     *            The tcpLateralCacheAttributes to set.
+     */
+    public void setTcpLateralCacheAttributes( ITCPLateralCacheAttributes 
tcpLateralCacheAttributes )
+    {
+        this.tcpLateralCacheAttributes = tcpLateralCacheAttributes;
+    }
+
+    /**
+     * @return Returns the tcpLateralCacheAttributes.
+     */
+    public ITCPLateralCacheAttributes getTcpLateralCacheAttributes()
+    {
+        return tcpLateralCacheAttributes;
+    }
+
+    /**
      * Processes commands from the server socket. There should be one listener
      * for each configured TCP lateral.
      */
@@ -506,6 +526,34 @@
             }
             else if ( led.command == LateralElementDescriptor.REMOVE )
             {
+                // if a hashcode was given and filtering is on
+                // check to see if they are the same
+                // if so, then don't remvoe, otherwise issue a remove
+                if ( led.valHashCode != -1 )
+                {
+                    if ( 
getTcpLateralCacheAttributes().isFilterRemoveByHashCode() )
+                    {
+                        ICacheElement test = getCache( cacheName ).localGet( 
key );
+                        if ( test != null )
+                        {
+                            if ( test.getVal().hashCode() == led.valHashCode )
+                            {
+                                if ( log.isDebugEnabled() )
+                                {
+                                    log.debug( "Filtering detected identical 
hashCode [" + led.valHashCode + "], not issuing a remove for led " + led );
+                                }                                
+                                return;
+                            }
+                            else
+                            {
+                                if ( log.isDebugEnabled() )
+                                {
+                                    log.debug( "Different hashcodes, in cache 
[" + test.getVal().hashCode() + "] sent [" + led.valHashCode + "]" );
+                                }
+                            }
+                        }
+                    }        
+                }
                 handleRemove( cacheName, key );
             }
             else if ( led.command == LateralElementDescriptor.REMOVEALL )

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPSender.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPSender.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPSender.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPSender.java
 Thu Sep 15 21:37:26 2005
@@ -27,7 +27,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.jcs.auxiliary.lateral.LateralElementDescriptor;
-import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.auxiliary.lateral.socket.tcp.utils.SocketOpener;
 import org.apache.jcs.engine.CacheElement;
 import org.apache.jcs.engine.behavior.ICacheElement;
@@ -42,7 +42,7 @@
 {
     private final static Log log = LogFactory.getLog( LateralTCPSender.class );
 
-    private ILateralCacheAttributes ilca;
+    private ITCPLateralCacheAttributes tcpLateralCacheAttributes;
 
     private String remoteHost;
 
@@ -80,10 +80,10 @@
      * @param lca
      * @exception IOException
      */
-    public LateralTCPSender( ILateralCacheAttributes lca )
+    public LateralTCPSender( ITCPLateralCacheAttributes lca )
         throws IOException
     {
-        this.ilca = lca;
+        this.setTcpLateralCacheAttributes( lca );
 
         String p1 = lca.getTcpServer();
         if ( p1 != null )
@@ -110,14 +110,14 @@
      * 
      * @param host
      * @param port
-     * @throws IOException 
+     * @throws IOException
      */
     protected void init( String host, int port )
         throws IOException
     {
         this.port = port;
         this.address = getAddressByName( host );
-        this.remoteHost = host;
+        this.setRemoteHost( host );
 
         try
         {
@@ -128,7 +128,7 @@
 
             if ( socket == null )
             {
-                throw new IOException( "Socket is null, cannot connect to " + 
host + ":" + port  );
+                throw new IOException( "Socket is null, cannot connect to " + 
host + ":" + port );
             }
 
             socket.setSoTimeout( LateralTCPSender.timeOut );
@@ -153,7 +153,10 @@
     /**
      * Gets the addressByName attribute of the LateralTCPSender object
      * 
+     * @param host
+     * 
      * @return The addressByName value
+     * @throws IOException
      */
     private InetAddress getAddressByName( String host )
         throws IOException
@@ -169,7 +172,10 @@
         }
     }
 
-    /** Sends commands to the lateral cache listener. */
+    /** Sends commands to the lateral cache listener. 
+     * @param led
+     * @throws IOException
+     */
     public void send( LateralElementDescriptor led )
         throws IOException
     {
@@ -226,6 +232,10 @@
      * is not recommended for performance reasons. If you have 10 laterals, 
then
      * you have to make 10 failed gets to find out none of the caches have the
      * item.
+     * 
+     * @param led
+     * @return
+     * @throws IOException
      */
     public ICacheElement sendAndReceive( LateralElementDescriptor led )
         throws IOException
@@ -324,6 +334,8 @@
      * conneciton. Dispose request should come into the facade and be sent to
      * all lateral cache sevices. The lateral cache service will then call this
      * method.
+     * @param cache
+     * @throws IOException
      */
     public void dispose( String cache )
         throws IOException
@@ -332,7 +344,40 @@
         oos.close();
     }
 
-    /** Description of the Method */
+    /**
+     * @param tcpLateralCacheAttributes The tcpLateralCacheAttributes to set.
+     */
+    public void setTcpLateralCacheAttributes( ITCPLateralCacheAttributes 
tcpLateralCacheAttributes )
+    {
+        this.tcpLateralCacheAttributes = tcpLateralCacheAttributes;
+    }
+
+    /**
+     * @return Returns the tcpLateralCacheAttributes.
+     */
+    public ITCPLateralCacheAttributes getTcpLateralCacheAttributes()
+    {
+        return tcpLateralCacheAttributes;
+    }
+
+    /**
+     * @param remoteHost The remoteHost to set.
+     */
+    public void setRemoteHost( String remoteHost )
+    {
+        this.remoteHost = remoteHost;
+    }
+
+    /**
+     * @return Returns the remoteHost.
+     */
+    public String getRemoteHost()
+    {
+        return remoteHost;
+    }
+
+    /** testing Method 
+     * @param args*/
     public static void main( String args[] )
     {
         try

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPService.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPService.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPService.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/LateralTCPService.java
 Thu Sep 15 21:37:26 2005
@@ -17,27 +17,22 @@
  */
 
 import java.io.BufferedReader;
-import java.io.InputStreamReader;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.Serializable;
 import java.util.Set;
 
-import org.apache.jcs.auxiliary.lateral.LateralCacheAttributes;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.jcs.auxiliary.lateral.LateralCacheInfo;
 import org.apache.jcs.auxiliary.lateral.LateralElementDescriptor;
-
-import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;
 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheObserver;
 import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheService;
-
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.engine.CacheElement;
-
 import org.apache.jcs.engine.behavior.ICacheElement;
 import org.apache.jcs.engine.behavior.ICacheListener;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
 /**
  * A lateral cache service implementation. Does not implement getGroupKey
  * 
@@ -48,7 +43,7 @@
 {
     private final static Log log = LogFactory.getLog( LateralTCPService.class 
);
 
-    private ILateralCacheAttributes ilca;
+    private ITCPLateralCacheAttributes tcpLateralCacheAttributes;
 
     private LateralTCPSender sender;
 
@@ -56,20 +51,21 @@
      * use the vmid by default
      */
     private long listenerId = LateralCacheInfo.listenerId;
-    
+
     /**
      * Constructor for the LateralTCPService object
      * 
      * @param lca
+     *            ITCPLateralCacheAttributes
      * @exception IOException
      */
-    public LateralTCPService( ILateralCacheAttributes lca )
+    public LateralTCPService( ITCPLateralCacheAttributes lca )
         throws IOException
     {
-        this.ilca = lca;
+        this.setTcpLateralCacheAttributes( lca );
         try
         {
-            log.debug( "creating sender, attributes = " + ilca );
+            log.debug( "creating sender, attributes = " + 
getTcpLateralCacheAttributes() );
 
             sender = new LateralTCPSender( lca );
 
@@ -91,7 +87,7 @@
     /**
      * @param item
      * @throws IOException
-     * 
+     *  
      */
     public void update( ICacheElement item )
         throws IOException
@@ -108,10 +104,41 @@
     public void update( ICacheElement item, long requesterId )
         throws IOException
     {
-        LateralElementDescriptor led = new LateralElementDescriptor( item );
-        led.requesterId = requesterId;
-        led.command = LateralElementDescriptor.UPDATE;
-        sender.send( led );
+        
+        // if we don't allow put, see if we should remove on put
+        if ( !this.getTcpLateralCacheAttributes().isAllowPut() )
+        {
+            // if we can't remove on put, and we can't put then return
+            if ( !this.getTcpLateralCacheAttributes().isIssueRemoveOnPut() )
+            {
+                return;
+            }
+        }
+
+        // if we shouldn't remove on put, then put
+        if ( !this.getTcpLateralCacheAttributes().isIssueRemoveOnPut() )
+        {
+            LateralElementDescriptor led = new LateralElementDescriptor( item 
);
+            led.requesterId = requesterId;
+            led.command = LateralElementDescriptor.UPDATE;
+            sender.send( led );
+        }
+        // else issue a remove with the hashcode for remove check on
+        // on the other end, this will be a server config option
+        else
+        {            
+            if ( log.isDebugEnabled() )
+            {
+                log.debug( "Issuing a remvoe for a put" );
+            }
+            // set the value to null so we don't send the item
+            CacheElement ce = new CacheElement( item.getCacheName(), 
item.getKey(), null );
+            LateralElementDescriptor led = new LateralElementDescriptor( ce );
+            led.requesterId = requesterId;
+            led.command = LateralElementDescriptor.REMOVE;
+            led.valHashCode = item.getVal().hashCode();
+            sender.send( led );
+        }
     }
 
     /*
@@ -153,7 +180,9 @@
         // nothing needs to be done
     }
 
-    /** Will close the connection. 
+    /**
+     * Will close the connection.
+     * 
      * @param cache
      * @throws IOException
      */
@@ -184,18 +213,26 @@
     public ICacheElement get( String cacheName, Serializable key )
         throws IOException
     {
-        CacheElement ce = new CacheElement( cacheName, key, null );
-        LateralElementDescriptor led = new LateralElementDescriptor( ce );
-        //led.requesterId = requesterId; // later
-        led.command = LateralElementDescriptor.GET;
-        return sender.sendAndReceive( led );
-        //return null;
-        // nothing needs to be done
+        // if get is not allowed return
+        if ( this.getTcpLateralCacheAttributes().isAllowGet() )
+        {
+            CacheElement ce = new CacheElement( cacheName, key, null );
+            LateralElementDescriptor led = new LateralElementDescriptor( ce );
+            //led.requesterId = requesterId; // later
+            led.command = LateralElementDescriptor.GET;
+            return sender.sendAndReceive( led );            
+        }
+        else
+        {
+            // nothing needs to be done
+            return null;            
+        }
     }
 
     /**
      * Gets the set of keys of objects currently in the group throws
      * UnsupportedOperationException
+     * 
      * @param cacheName
      * @param group
      * @return Set
@@ -244,7 +281,7 @@
     {
         try
         {
-            LateralTCPSender sender = new LateralTCPSender( new 
LateralCacheAttributes() );
+            LateralTCPSender sender = new LateralTCPSender( new 
TCPLateralCacheAttributes() );
 
             // process user input till done
             boolean notDone = true;
@@ -318,7 +355,8 @@
     }
 
     /**
-     * @param listernId The listernId to set.
+     * @param listernId
+     *            The listernId to set.
      */
     protected void setListenerId( long listernId )
     {
@@ -331,6 +369,23 @@
     protected long getListenerId()
     {
         return listenerId;
+    }
+
+    /**
+     * @param tcpLateralCacheAttributes
+     *            The tcpLateralCacheAttributes to set.
+     */
+    public void setTcpLateralCacheAttributes( ITCPLateralCacheAttributes 
tcpLateralCacheAttributes )
+    {
+        this.tcpLateralCacheAttributes = tcpLateralCacheAttributes;
+    }
+
+    /**
+     * @return Returns the tcpLateralCacheAttributes.
+     */
+    public ITCPLateralCacheAttributes getTcpLateralCacheAttributes()
+    {
+        return tcpLateralCacheAttributes;
     }
 
 }

Added: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/TCPLateralCacheAttributes.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/TCPLateralCacheAttributes.java?rev=289379&view=auto
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/TCPLateralCacheAttributes.java
 (added)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/TCPLateralCacheAttributes.java
 Thu Sep 15 21:37:26 2005
@@ -0,0 +1,302 @@
+package org.apache.jcs.auxiliary.lateral.socket.tcp;

+

+/*

+ * Copyright 2001-2004 The Apache Software Foundation.

+ *

+ * Licensed 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.

+ */

+import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;

+import org.apache.jcs.auxiliary.lateral.LateralCacheAttributes;

+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;

+

+/**

+ * This interface defines functions that are particular to the TCP Lateral 
Cache

+ * plugin. It extends the generic LateralCacheAttributes interface which in 
turn

+ * extends the AuxiliaryCache interface.

+ * 

+ * @author Aaron Smuts

+ *  

+ */

+public class TCPLateralCacheAttributes

+    extends LateralCacheAttributes

+    implements ITCPLateralCacheAttributes

+{

+

+    private static final String DEFAULT_UDP_DISCOVERY_ADDRESS = "228.5.6.7";

+

+    private static final int DEFAULT_UDP_DISCOVERY_PORT = 6789;

+

+    private static final boolean DEFAULT_UDP_DISCOVERY_ENABLED = true;

+

+    private static final boolean DEFAULT_ALLOW_GET = true;

+

+    private static final boolean DEFAULT_ALLOW_PUT = true;

+

+    private static final boolean DEFAULT_ISSUE_REMOVE_FOR_PUT = false;

+

+    private static final boolean DEFAULT_FILTER_REMOVE_BY_HASH_CODE = true;

+

+    // TCP --------------------------------------------

+    private String tcpServers = "";

+

+    // used to identify the service that this manager will be

+    // operating on

+    private String tcpServer = "";

+

+    private int tcpListenerPort = 0;

+

+    // udp discovery for tcp server

+    private String udpDiscoveryAddr = DEFAULT_UDP_DISCOVERY_ADDRESS;

+

+    private int udpDiscoveryPort = DEFAULT_UDP_DISCOVERY_PORT;

+

+    private boolean udpDiscoveryEnabled = DEFAULT_UDP_DISCOVERY_ENABLED;

+

+    private boolean allowPut = DEFAULT_ALLOW_GET;

+

+    private boolean allowGet = DEFAULT_ALLOW_PUT;

+

+    private boolean issueRemoveOnPut = DEFAULT_ISSUE_REMOVE_FOR_PUT;

+

+    private boolean filterRemoveByHashCode = 
DEFAULT_FILTER_REMOVE_BY_HASH_CODE;

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setTcpServer(java.lang.String)

+     */

+    public void setTcpServer( String val )

+    {

+        this.tcpServer = val;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#getTcpServer()

+     */

+    public String getTcpServer()

+    {

+        return this.tcpServer;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setTcpServers(java.lang.String)

+     */

+    public void setTcpServers( String val )

+    {

+        this.tcpServers = val;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#getTcpServers()

+     */

+    public String getTcpServers()

+    {

+        return this.tcpServers;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setTcpListenerPort(int)

+     */

+    public void setTcpListenerPort( int val )

+    {

+        this.tcpListenerPort = val;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#getTcpListenerPort()

+     */

+    public int getTcpListenerPort()

+    {

+        return this.tcpListenerPort;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setUdpDiscoveryEnabled(boolean)

+     */

+    public void setUdpDiscoveryEnabled( boolean udpDiscoveryEnabled )

+    {

+        this.udpDiscoveryEnabled = udpDiscoveryEnabled;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#isUdpDiscoveryEnabled()

+     */

+    public boolean isUdpDiscoveryEnabled()

+    {

+        return this.udpDiscoveryEnabled;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#getUdpDiscoveryPort()

+     */

+    public int getUdpDiscoveryPort()

+    {

+        return this.udpDiscoveryPort;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setUdpDiscoveryPort(int)

+     */

+    public void setUdpDiscoveryPort( int udpDiscoveryPort )

+    {

+        this.udpDiscoveryPort = udpDiscoveryPort;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#getUdpDiscoveryAddr()

+     */

+    public String getUdpDiscoveryAddr()

+    {

+        return this.udpDiscoveryAddr;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes#setUdpDiscoveryAddr(java.lang.String)

+     */

+    public void setUdpDiscoveryAddr( String udpDiscoveryAddr )

+    {

+        this.udpDiscoveryAddr = udpDiscoveryAddr;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#setAllowGet(boolean)

+     */

+    public void setAllowGet( boolean allowGet )

+    {

+        this.allowGet = allowGet;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#isAllowGet()

+     */

+    public boolean isAllowGet()

+    {

+        return this.allowGet;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#setAllowPut(boolean)

+     */

+    public void setAllowPut( boolean allowPut )

+    {

+        this.allowPut = allowPut;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#isAllowPut()

+     */

+    public boolean isAllowPut()

+    {

+        return this.allowPut;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#setIssueRemoveOnPut(boolean)

+     */

+    public void setIssueRemoveOnPut( boolean issueRemoveOnPut )

+    {

+        this.issueRemoveOnPut = issueRemoveOnPut;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#isIssueRemoveOnPut()

+     */

+    public boolean isIssueRemoveOnPut()

+    {

+        return this.issueRemoveOnPut;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see org.apache.jcs.auxiliary.AuxiliaryCacheAttributes#copy()

+     */

+    public AuxiliaryCacheAttributes copy()

+    {

+        try

+        {

+            return (AuxiliaryCacheAttributes) this.clone();

+        }

+        catch ( Exception e )

+        {

+            //noop

+        }

+        return this;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#isFilterRemoveByHashCode()

+     */

+    public boolean isFilterRemoveByHashCode()

+    {

+        return this.filterRemoveByHashCode;

+    }

+

+    /*

+     * (non-Javadoc)

+     * 

+     * @see 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes#setFilterRemoveByHashCode(boolean)

+     */

+    public void setFilterRemoveByHashCode( boolean filter )

+    {

+        this.filterRemoveByHashCode = filter;

+    }

+

+    /**

+     * Used to key the instance TODO create another method for this and use

+     * toString for debugging only.

+     * 

+     * @return String

+     */

+    public String toString()

+    {

+        return this.getTcpServer() + ":" + this.getTcpListenerPort();

+    }

+

+}


Added: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/ITCPLateralCacheAttributes.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/ITCPLateralCacheAttributes.java?rev=289379&view=auto
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/ITCPLateralCacheAttributes.java
 (added)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/behavior/ITCPLateralCacheAttributes.java
 Thu Sep 15 21:37:26 2005
@@ -0,0 +1,200 @@
+package org.apache.jcs.auxiliary.lateral.socket.tcp.behavior;

+

+/*

+ * Copyright 2001-2004 The Apache Software Foundation.

+ *

+ * Licensed 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.

+ */

+

+import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheAttributes;

+

+/**

+ * This interface defines functions that are particular to the

+ * TCP Lateral Cache plugin.  It extends the generic LateralCacheAttributes 
interface

+ * which in turn extends the AuxiliaryCache interface.

+ * 

+ * @author Aaron Smuts

+ */

+public interface ITCPLateralCacheAttributes

+    extends ILateralCacheAttributes

+{

+

+    /**

+     * Sets the tcpServer attribute of the ILateralCacheAttributes object

+     * 

+     * @param val

+     *            The new tcpServer value

+     */

+    public void setTcpServer( String val );

+

+    /**

+     * Gets the tcpServer attribute of the ILateralCacheAttributes object

+     * 

+     * @return The tcpServer value

+     */

+    public String getTcpServer();

+

+    /**

+     * Sets the tcpServers attribute of the ILateralCacheAttributes object

+     * 

+     * @param val

+     *            The new tcpServers value

+     */

+    public void setTcpServers( String val );

+

+    /**

+     * Gets the tcpServers attribute of the ILateralCacheAttributes object

+     * 

+     * @return The tcpServers value

+     */

+    public String getTcpServers();

+

+    /**

+     * Sets the tcpListenerPort attribute of the ILateralCacheAttributes object

+     * 

+     * @param val

+     *            The new tcpListenerPort value

+     */

+    public void setTcpListenerPort( int val );

+

+    /**

+     * Gets the tcpListenerPort attribute of the ILateralCacheAttributes object

+     * 

+     * @return The tcpListenerPort value

+     */

+    public int getTcpListenerPort();

+    

+    /**

+     * Can setup UDP Discovery. This only works for TCp laterals right now. It

+     * allows TCP laterals to find each other by broadcasting to a multicast

+     * port.

+     * 

+     * @param udpDiscoveryEnabled

+     *            The udpDiscoveryEnabled to set.

+     */

+    public void setUdpDiscoveryEnabled( boolean udpDiscoveryEnabled );

+

+    /**

+     * Whether or not TCP laterals can try to find each other by multicast

+     * communication.

+     * 

+     * @return Returns the udpDiscoveryEnabled.

+     */

+    public boolean isUdpDiscoveryEnabled();

+

+    /**

+     * The port to use if UDPDiscovery is enabled.

+     * 

+     * @return Returns the udpDiscoveryPort.

+     */

+    public int getUdpDiscoveryPort();

+

+    /**

+     * Sets the port to use if UDPDiscovery is enabled.

+     * 

+     * @param udpDiscoveryPort

+     *            The udpDiscoveryPort to set.

+     */

+    public void setUdpDiscoveryPort( int udpDiscoveryPort );

+

+    /**

+     * The address to broadcast to if UDPDiscovery is enabled.

+     * 

+     * @return Returns the udpDiscoveryAddr.

+     */

+    public String getUdpDiscoveryAddr();

+

+    /**

+     * Sets the address to broadcast to if UDPDiscovery is enabled.

+     * 

+     * @param udpDiscoveryAddr

+     *            The udpDiscoveryAddr to set.

+     */

+    public void setUdpDiscoveryAddr( String udpDiscoveryAddr );

+    

+    

+    /**

+     * Is the lateral allowed to try and get from other laterals.

+     * <p>

+     * This replaces the old putOnlyMode

+     * 

+     * @param allowGet

+     */

+    public void setAllowGet( boolean allowGet );

+    

+    /**

+     * Is the lateral allowed to try and get from other laterals.

+     * 

+     * @return true if the lateral will try to get

+     */

+    public boolean isAllowGet();

+    

+    /**

+     * Is the lateral allowed to put objects to other laterals.

+     * 

+     * @param allowPut

+     */

+    public void setAllowPut( boolean allowPut );

+    

+    /**

+     * Is the lateral allowed to put objects to other laterals.

+     * 

+     * @return true if puts are allowed

+     */

+    public boolean isAllowPut();

+

+    /**

+     * Should the client send a remove command rather than a put when

+     * update is called.  This is a client option, not a receiver option.

+     * This allows you to prevent the lateral from serializing objects.

+     * 

+     * @param issueRemoveOnPut

+     */

+    public void setIssueRemoveOnPut( boolean issueRemoveOnPut );

+    

+    /**

+     * Should the client send a remove command rather than a put when

+     * update is called.  This is a client option, not a receiver option.

+     * This allows you to prevent the lateral from serializing objects.

+     * 

+     * @return true if updates will result in a remove command being sent.

+     */

+    public boolean isIssueRemoveOnPut();

+

+    

+    /**

+     * Should the receiver try to match hashcodes.

+     * If true, the receiver will see if the client supplied a hshcode.  

+     * If it did, then it will try to get the item locally.  If the item

+     * exists, then it will compare the hashcode.  if they are

+     * the same, it will not remove.  This isn't perfect since different 
objects can

+     * have the same hashcode, but it is unlikely of objects of the same

+     * type.

+     * 

+     * @return

+     */

+    public boolean isFilterRemoveByHashCode();

+    

+    /**

+     * Should the receiver try to match hashcodes.

+     * If true, the receiver will see if the client supplied a hshcode.  

+     * If it did, then it will try to get the item locally.  If the item

+     * exists, then it will compare the hashcode.  if they are

+     * the same, it will not remove.  This isn't perfect since different 
objects can

+     * have the same hashcode, but it is unlikely of objects of the same

+     * type.

+     * @param filter

+     */

+    public void setFilterRemoveByHashCode( boolean filter );

+    

+}


Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryManager.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryManager.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryManager.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryManager.java
 Thu Sep 15 21:37:26 2005
@@ -5,7 +5,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.lateral.LateralCacheAttributes;
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.engine.behavior.ICompositeCacheManager;
 
 /**
@@ -43,9 +43,11 @@
      * Returns the UDP Discovery service associated with this instance.
      * 
      * @param lca
+     *            ITCPLateralCacheAttributes
+     * @param cacheMgr
      * @return
      */
-    public synchronized UDPDiscoveryService getService( LateralCacheAttributes 
lca, ICompositeCacheManager cacheMgr )
+    public synchronized UDPDiscoveryService getService( 
ITCPLateralCacheAttributes lca, ICompositeCacheManager cacheMgr )
     {
         String key = lca.getTcpServer() + ":" + lca.getTcpListenerPort();
 

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryMessage.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryMessage.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryMessage.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryMessage.java
 Thu Sep 15 21:37:26 2005
@@ -34,7 +34,7 @@
     /** Description of the Field */
     private long requesterId;
 
-    private ArrayList cacheNames = new ArrayList();;
+    private ArrayList cacheNames = new ArrayList();
 
     /**
      * @param port

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryReceiver.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryReceiver.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryReceiver.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryReceiver.java
 Thu Sep 15 21:37:26 2005
@@ -31,6 +31,8 @@
 import org.apache.jcs.auxiliary.lateral.LateralCacheInfo;
 import org.apache.jcs.auxiliary.lateral.LateralCacheNoWait;
 import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheManager;
+import org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes;
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.engine.behavior.ICache;
 import org.apache.jcs.engine.behavior.ICompositeCacheManager;
 import org.apache.jcs.engine.behavior.ShutdownObserver;
@@ -307,14 +309,14 @@
                     // get a cache and add it to the no waits
                     // the add method should not add the same.
                     // we need the listener port from the original config.
-                    LateralCacheAttributes lca = null;
-                    if ( service.getLca() != null )
+                    ITCPLateralCacheAttributes lca = null;
+                    if ( service.getTcpLateralCacheAttributes() != null )
                     {
-                        lca = (LateralCacheAttributes) service.getLca().copy();
+                        lca = (ITCPLateralCacheAttributes) 
service.getTcpLateralCacheAttributes().copy();
                     }
                     else
                     {
-                        lca = new LateralCacheAttributes();
+                        lca = new TCPLateralCacheAttributes();
                     }
                     lca.setTransmissionType( LateralCacheAttributes.TCP );
                     lca.setTcpServer( message.getHost() + ":" + 
message.getPort() );

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoverySender.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoverySender.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoverySender.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoverySender.java
 Thu Sep 15 21:37:26 2005
@@ -100,6 +100,7 @@
     
     /**
      * Just being careful about closing the socket.
+     * @throws Throwable
      */
     public void finalize()
     throws Throwable

Modified: 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryService.java
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryService.java?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryService.java
 (original)
+++ 
jakarta/jcs/trunk/src/java/org/apache/jcs/auxiliary/lateral/socket/tcp/discovery/UDPDiscoveryService.java
 Thu Sep 15 21:37:26 2005
@@ -10,9 +10,9 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.lateral.LateralCacheAttributes;
 import org.apache.jcs.auxiliary.lateral.LateralCacheNoWait;
 import org.apache.jcs.auxiliary.lateral.LateralCacheNoWaitFacade;
+import 
org.apache.jcs.auxiliary.lateral.socket.tcp.behavior.ITCPLateralCacheAttributes;
 import org.apache.jcs.engine.behavior.ICompositeCacheManager;
 import org.apache.jcs.engine.behavior.ShutdownObservable;
 import org.apache.jcs.engine.behavior.ShutdownObserver;
@@ -33,43 +33,45 @@
  * @author Aaron Smuts
  *  
  */
-public class UDPDiscoveryService implements ShutdownObserver
+public class UDPDiscoveryService
+    implements ShutdownObserver
 {
 
     private final static Log log = LogFactory.getLog( 
UDPDiscoveryService.class );
 
-     //The background broadcaster.
+    //The background broadcaster.
     private static ClockDaemon senderDaemon;
 
     // thread that listens for messages
     private Thread udpReceiverThread;
-    
+
     // the runanble that the receiver thread runs
     private UDPDiscoveryReceiver receiver;
 
     private Map facades = new HashMap();
 
-    private LateralCacheAttributes lca = null;
+    private ITCPLateralCacheAttributes tcpLateralCacheAttributes = null;
 
     // the runanble that sends messages via the clock daemon
     private UDPDiscoverySenderThread sender = null;
-    
+
     private String hostAddress = "unknown";
-    
+
     /**
      * 
      * @param facade
      * @param lca
+     *            ITCPLateralCacheAttributes
      * @param cacheMgr
      * @param receivingPort
      */
-    public UDPDiscoveryService( LateralCacheAttributes lca, 
ICompositeCacheManager cacheMgr )
+    public UDPDiscoveryService( ITCPLateralCacheAttributes lca, 
ICompositeCacheManager cacheMgr )
     {
         // register for shutdown notification
-        ((ShutdownObservable)cacheMgr).registerShutdownObserver( this );
+        ( (ShutdownObservable) cacheMgr ).registerShutdownObserver( this );
+
+        this.setTcpLateralCacheAttributes( lca );
 
-        this.setLca( lca );
-        
         try
         {
             // todo, you should be able to set this
@@ -88,8 +90,8 @@
         {
             // todo need some kind of recovery here.
             receiver = new UDPDiscoveryReceiver( this, 
lca.getUdpDiscoveryAddr(), lca.getUdpDiscoveryPort(), cacheMgr );
-            udpReceiverThread = new Thread(receiver);
-            udpReceiverThread.setDaemon(true);
+            udpReceiverThread = new Thread( receiver );
+            udpReceiverThread.setDaemon( true );
             //udpReceiverThread.setName( t.getName() + "--UDPReceiver" );
             udpReceiverThread.start();
         }
@@ -105,11 +107,11 @@
             senderDaemon = new ClockDaemon();
             senderDaemon.setThreadFactory( new MyThreadFactory() );
         }
-        
+
         // create a sender thread
-        sender = new UDPDiscoverySenderThread( lca.getUdpDiscoveryAddr(), lca
-                                      .getUdpDiscoveryPort(), hostAddress, 
lca.getTcpListenerPort(), this.getCacheNames() );
-        
+        sender = new UDPDiscoverySenderThread( lca.getUdpDiscoveryAddr(), 
lca.getUdpDiscoveryPort(), hostAddress, lca
+            .getTcpListenerPort(), this.getCacheNames() );
+
         senderDaemon.executePeriodically( 30 * 1000, sender, false );
     }
 
@@ -127,8 +129,8 @@
      */
     public synchronized boolean addNoWaitFacade( LateralCacheNoWaitFacade 
facade, String cacheName )
     {
-        boolean isNew = !facades.containsKey(cacheName);
-        
+        boolean isNew = !facades.containsKey( cacheName );
+
         // override or put anew, it doesn't matter
         facades.put( cacheName, facade );
 
@@ -137,10 +139,10 @@
             if ( sender != null )
             {
                 // need to reset the cache names since we have a new one
-                sender.setCacheNames( this.getCacheNames() );                  
          
+                sender.setCacheNames( this.getCacheNames() );
             }
         }
-        
+
         return isNew;
 
     }
@@ -179,10 +181,11 @@
     }
 
     /**
-     * Send a passive broadcast in response to a request broadcast.  Never 
send a request for a request.
-     * We can respond to our own reques, since a request broadcast is not 
intended as a connection request.
-     * We might want to only send messages, so we would send a request, but 
never a passive broadcast.
-     *
+     * Send a passive broadcast in response to a request broadcast. Never send 
a
+     * request for a request. We can respond to our own reques, since a request
+     * broadcast is not intended as a connection request. We might want to only
+     * send messages, so we would send a request, but never a passive 
broadcast.
+     *  
      */
     protected void serviceRequestBroadcast()
     {
@@ -191,9 +194,11 @@
         {
             // create this connection each time.
             // more robust
-            sender = new UDPDiscoverySender( getLca().getUdpDiscoveryAddr(), 
getLca().getUdpDiscoveryPort() );
+            sender = new UDPDiscoverySender( 
getTcpLateralCacheAttributes().getUdpDiscoveryAddr(),
+                                             
getTcpLateralCacheAttributes().getUdpDiscoveryPort() );
 
-            sender.passiveBroadcast( hostAddress, 
getLca().getTcpListenerPort(), this.getCacheNames() );
+            sender.passiveBroadcast( hostAddress, 
getTcpLateralCacheAttributes().getTcpListenerPort(), this
+                .getCacheNames() );
 
             // todo we should consider sending a request broadcast every so
             // often.
@@ -207,23 +212,23 @@
         catch ( Exception e )
         {
             log.error( "Problem calling the UDP Discovery Sender", e );
-        }      
+        }
         finally
         {
             try
             {
                 if ( sender != null )
                 {
-                    sender.destroy();                                    
+                    sender.destroy();
                 }
             }
             catch ( Exception e )
             {
                 log.error( "Problem closing Passive Broadcast sender, while 
servicing a request broadcast.", e );
             }
-        }        
+        }
     }
-    
+
     /**
      * Get all the cache names we have facades for.
      * 
@@ -243,19 +248,20 @@
     }
 
     /**
-     * @param lca The lca to set.
+     * @param lca
+     *            The lca to set.
      */
-    public void setLca( LateralCacheAttributes lca )
+    public void setTcpLateralCacheAttributes( ITCPLateralCacheAttributes lca )
     {
-        this.lca = lca;
+        this.tcpLateralCacheAttributes = lca;
     }
 
     /**
      * @return Returns the lca.
      */
-    public LateralCacheAttributes getLca()
+    public ITCPLateralCacheAttributes getTcpLateralCacheAttributes()
     {
-        return lca;
+        return tcpLateralCacheAttributes;
     }
 
     /**
@@ -283,21 +289,23 @@
 
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.apache.jcs.engine.behavior.ShutdownObserver#shutdown()
      */
     public void shutdown()
-    {   
+    {
         if ( log.isInfoEnabled() )
         {
             log.info( "Shutting down UDP discovery service receiver." );
         }
-        
+
         try
         {
             // no good way to do this right now.
-            receiver.shutdown();                        
-            udpReceiverThread.interrupt();    
+            receiver.shutdown();
+            udpReceiverThread.interrupt();
         }
         catch ( Exception e )
         {
@@ -308,9 +316,9 @@
         {
             log.info( "Shutting down UDP discovery service sender." );
         }
-        
+
         try
-        {            
+        {
             // interrupt all the threads.
             senderDaemon.shutDown();
         }
@@ -318,6 +326,6 @@
         {
             log.error( "Problem shutting down UDP sender." );
         }
-        
+
     }
 }

Modified: jakarta/jcs/trunk/src/test-conf/TestTCPLateralCache.ccf
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/test-conf/TestTCPLateralCache.ccf?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test-conf/TestTCPLateralCache.ccf (original)
+++ jakarta/jcs/trunk/src/test-conf/TestTCPLateralCache.ccf Thu Sep 15 21:37:26 
2005
@@ -19,10 +19,10 @@
 
 # simple Lateral TCP auxiliary
 
jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory
-jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheAttributes
+jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes
 jcs.auxiliary.LTCP.attributes.TcpServers=localhost:1111
 jcs.auxiliary.LTCP.attributes.TcpListenerPort=1110
-jcs.auxiliary.LTCP.attributes.PutOnlyMode=true
+jcs.auxiliary.LTCP.attributes.AllowGet=false
 
 ##############################################################
 ################## THREAD POOL CONFIGURATION ###################

Modified: jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf?rev=289379&r1=289378&r2=289379&view=diff
==============================================================================
--- jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf (original)
+++ jakarta/jcs/trunk/src/test-conf/TestTCPLateralCacheConcurrent.ccf Thu Sep 
15 21:37:26 2005
@@ -6,10 +6,10 @@
 ##### AUXILIARY CACHES

 # simple Lateral TCP auxiliary

 
jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory

-jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheAttributes

+jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes

 jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP

 #jcs.auxiliary.LTCP.attributes.TcpServers=

 jcs.auxiliary.LTCP.attributes.TcpListenerPort=1102

-jcs.auxiliary.LTCP.attributes.PutOnlyMode=true

+jcs.auxiliary.LTCP.attributes.AllowGet=false

 

 


Added: jakarta/jcs/trunk/src/test-conf/TestTCPLateralIssueRemoveCache.ccf
URL: 
http://svn.apache.org/viewcvs/jakarta/jcs/trunk/src/test-conf/TestTCPLateralIssueRemoveCache.ccf?rev=289379&view=auto
==============================================================================
--- jakarta/jcs/trunk/src/test-conf/TestTCPLateralIssueRemoveCache.ccf (added)
+++ jakarta/jcs/trunk/src/test-conf/TestTCPLateralIssueRemoveCache.ccf Thu Sep 
15 21:37:26 2005
@@ -0,0 +1,56 @@
+# Cache configuration for the 'TestDiskCache' test. The memory cache has a

+# a maximum of 100 objects, so objects should get pushed into the disk cache

+

+jcs.default=LTCP

+jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.default.cacheattributes.MaxObjects=10000

+jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

+

+

+##### CACHE REGIONS FOR TEST

+

+jcs.region.testTcpRegion1=LTCP

+jcs.region.testTcpRegion1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

+jcs.region.testTcpRegion1.cacheattributes.MaxObjects=10000

+jcs.region.testTcpRegion1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

+

+

+##### AUXILIARY CACHES

+

+# simple Lateral TCP auxiliary

+jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory

+jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes

+jcs.auxiliary.LTCP.attributes.TcpServers=localhost:1111

+jcs.auxiliary.LTCP.attributes.TcpListenerPort=1110

+jcs.auxiliary.LTCP.attributes.AllowGet=false

+jcs.auxiliary.LTCP.attributes.IssueRemoveOnPut=true

+

+

+##############################################################

+################## THREAD POOL CONFIGURATION ###################

+# Default thread pool config

+thread_pool.default.boundarySize=2000

+thread_pool.default.maximumPoolSize=150

+thread_pool.default.minimumPoolSize=4

+thread_pool.default.keepAliveTime=350000

+#RUN ABORT WAIT BLOCK DISCARDOLDEST

+thread_pool.default.whenBlockedPolicy=RUN

+thread_pool.default.startUpSize=4

+

+# Default Cache Event Queue thread pool config, used by auxiliaries

+thread_pool.cache_event_queue.useBoundary=false

+#thread_pool.cache_event_queue.boundarySize=2000

+#thread_pool.cache_event_queue.maximumPoolSize=10

+thread_pool.cache_event_queue.minimumPoolSize=5

+thread_pool.cache_event_queue.keepAliveTime=3500

+#thread_pool.cache_event_queue.whenBlockedPolicy=RUN

+thread_pool.cache_event_queue.startUpSize=5

+

+# Remote cache client thread pool config

+thread_pool.remote_cache_client.boundarySize=75

+thread_pool.remote_cache_client.maximumPoolSize=150

+thread_pool.remote_cache_client.minimumPoolSize=4

+thread_pool.remote_cache_client.keepAliveTime=350000

+thread_pool.remote_cache_client.whenBlockedPolicy=RUN

+thread_pool.remote_cache_client.startUpSize=4

+


<Prev in Thread] Current Thread [Next in Thread>