You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-dev@jakarta.apache.org by tv...@apache.org on 2007/05/10 18:04:27 UTC
svn commit: r536904 [2/38] - in /jakarta/jcs/trunk: ./
auxiliary-builds/javagroups/
auxiliary-builds/javagroups/src/java/org/apache/jcs/auxiliary/javagroups/
auxiliary-builds/javagroups/src/test/org/apache/jcs/auxiliary/javagroups/
auxiliary-builds/jdk...
Modified: jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCache.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCache.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCache.java (original)
+++ jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCache.java Thu May 10 09:03:42 2007
@@ -1,450 +1,453 @@
-package org.apache.jcs.auxiliary.javagroups;
-
-/*
- * 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 java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Set;
-import java.util.Vector;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.AuxiliaryCache;
-import org.apache.jcs.engine.CacheConstants;
-import org.apache.jcs.engine.CacheElement;
-import org.apache.jcs.engine.behavior.ICacheElement;
-import org.apache.jcs.engine.behavior.ICacheType;
-import org.apache.jcs.engine.behavior.ICompositeCacheManager;
-import org.apache.jcs.engine.control.CompositeCache;
-import org.apache.jcs.engine.stats.StatElement;
-import org.apache.jcs.engine.stats.Stats;
-import org.apache.jcs.engine.stats.behavior.IStatElement;
-import org.apache.jcs.engine.stats.behavior.IStats;
-import org.jgroups.Address;
-import org.jgroups.Channel;
-import org.jgroups.MembershipListener;
-import org.jgroups.Message;
-import org.jgroups.View;
-import org.jgroups.blocks.GroupRequest;
-import org.jgroups.blocks.MessageDispatcher;
-import org.jgroups.blocks.RequestHandler;
-import org.jgroups.util.RspList;
-
-/**
- * Auxiliary cache using javagroups. Expects to be created with a Channel, the
- * {@link JavaGroupsCacheFactory}is responsible for creating that channel. To
- * do so it uses configuration properties specified by an instance of
- * {@link JavaGroupsCacheAttributes}.
- * <p>
- * At creation time the provided channel is connected to a group having the same
- * name as the cache / region name this auxiliary is associated with. update /
- * remove / removeAll operations are broadcast to all members of the group. A
- * listener thread processes requests from other members of the group, and
- * dispatches to appropriate methods on the associated CompositeCache.
- * </p>
- * <p>
- * Calls to get are currently ignored.
- * <p>
- * Messages are sent to peers asynchronously. Synchronous messaging could be
- * added using MessageDispatcher or RpcDispatcher. Combined with a get
- * implementation this could provide much higher cache consistency (but with a
- * substantial speed penalty).
- *
- * @version $Id: JavaGroupsCache.java 264665 2005-08-30 01:10:34Z asmuts $
- */
-public class JavaGroupsCache
- implements AuxiliaryCache, RequestHandler, MembershipListener
-{
- private final Log log = LogFactory.getLog( JavaGroupsCache.class );
-
- private String cacheName;
-
- private int status;
-
- private boolean getFromPeers;
-
- private ICompositeCacheManager cacheMgr;
-
- private Channel channel;
-
- private MessageDispatcher dispatcher;
-
- public JavaGroupsCache( ICompositeCacheManager cache, String cacheName, Channel channel, boolean getFromPeers )
- throws Exception
- {
- this.cacheMgr = cacheMgr;
-
- this.cacheName = cacheName;
- this.channel = channel;
-
- this.getFromPeers = getFromPeers;
-
- // The adapter listens to the channel and fires MessageListener events
- // on this object.
-
- dispatcher = new MessageDispatcher( channel, null, this, this );
-
- // Connect channel to the 'group' for our region name
-
- channel.setOpt( Channel.LOCAL, Boolean.FALSE );
-
- channel.connect( cacheName );
-
- // If all the above succeed, the cache is now alive.
-
- this.status = CacheConstants.STATUS_ALIVE;
-
- log.info( "Initialized for cache: " + cacheName );
- }
-
- public void send( ICacheElement element, int command )
- {
- Request request = new Request( element, command );
-
- try
- {
- dispatcher.castMessage( null, new Message( null, null, request ), GroupRequest.GET_NONE, 0 );
-
- }
- catch ( Exception e )
- {
- log.error( "Failed to send JavaGroups message", e );
- }
- }
-
- // ----------------------------------------------- interface AuxiliaryCache
-
- /**
- * Sends the provided element to all peers (connected to the same channel
- * and region name).
- *
- * @param ce
- * CacheElement to replicate
- * @throws IOException
- * Never thrown by this implementation
- */
- public void update( ICacheElement ce )
- throws IOException
- {
- send( ce, Request.UPDATE );
- }
-
- /**
- * If 'getFromPeers' is true, this will attempt to get the requested element
- * from ant other members of the group.
- *
- * @param key
- * @return
- * @throws IOException
- * Never thrown by this implementation
- */
- public ICacheElement get( Serializable key )
- throws IOException
- {
- if ( getFromPeers )
- {
- CacheElement element = new CacheElement( cacheName, key, null );
-
- Request request = new Request( element, Request.GET );
-
- // Cast message and wait for all responses.
-
- // FIXME: we can stop waiting after the first not null response,
- // that is more difficult to implement however.
-
- RspList responses = dispatcher.castMessage( null, new Message( null, null, request ), GroupRequest.GET_ALL,
- 0 );
-
- // Get results only gives the responses which were not null
-
- Vector results = responses.getResults();
-
- // If there were any non null results, return the first
-
- if ( results.size() > 0 )
- {
- return (ICacheElement) results.get( 0 );
- }
- }
-
- return null;
- }
-
- /**
- * Sends a request to all peers to remove the element having the provided
- * key.
- *
- * @param key
- * Key of element to be removed
- * @throws IOException
- * Never thrown by this implementation
- */
- public boolean remove( Serializable key )
- throws IOException
- {
- CacheElement ce = new CacheElement( cacheName, key, null );
-
- send( ce, Request.REMOVE );
-
- return false;
- }
-
- /**
- * Sends a request to remove ALL elements from the peers
- *
- * @throws IOException
- * Never thrown by this implementation
- */
- public void removeAll()
- throws IOException
- {
- CacheElement ce = new CacheElement( cacheName, null, null );
-
- send( ce, Request.REMOVE_ALL );
- }
-
- /**
- * Dispose this cache, terminates the listener thread and disconnects the
- * channel from the group.
- *
- * @throws IOException
- */
- public void dispose()
- throws IOException
- {
- // This will join the scheduler thread and ensure everything terminates
-
- dispatcher.stop();
-
- // Now we can disconnect from the group and close the channel
-
- channel.disconnect();
- channel.close();
-
- status = CacheConstants.STATUS_DISPOSED;
-
- log.info( "Disposed for cache: " + cacheName );
- }
-
- /**
- * Since this is a lateral, size is not defined.
- *
- * @return Always returns 0
- */
- public int getSize()
- {
- return 0;
- }
-
- /**
- * Returns the status of this auxiliary.
- *
- * @return One of the status constants from {@link CacheConstants}
- */
- public int getStatus()
- {
- return status;
- }
-
- /**
- * Accessor for cacheName property
- *
- * @return Name of cache / region this auxiliary is associated with.
- */
- public String getCacheName()
- {
- return cacheName;
- }
-
- /**
- * Not implemented (I believe since get is not supported, this should also
- * not be).
- *
- * @param group
- * Ignored
- * @return Always reurns null
- */
- public Set getGroupKeys( String group )
- {
- return null;
- }
-
- // --------------------------------------------------- interface ICacheType
-
- /**
- * Get the cache type (always Lateral).
- *
- * @return Always returns ICacheType.LATERAL_CACHE
- */
- public int getCacheType()
- {
- return ICacheType.LATERAL_CACHE;
- }
-
- // ----------------------------------------------- interface RequestHandler
-
- /**
- * Handles a message from a peer. The message should contain a Request, and
- * depending on the command this will call localUpdate, localRemove, or
- * localRemoveAll on the associated CompositeCache.
- *
- * @param msg
- * The JavaGroups Message
- * @return Always returns null
- */
- public Object handle( Message msg )
- {
- try
- {
- Request request = (Request) msg.getObject();
-
- // Switch based on the command and invoke the
- // appropriate method on the associate composite cache
-
- switch ( request.getCommand() )
- {
- case Request.GET:
-
- return getCompositeCache().localGet( request.getCacheElement().getKey() );
- // break;
-
- case Request.UPDATE:
-
- getCompositeCache().localUpdate( request.getCacheElement() );
- break;
-
- case Request.REMOVE:
-
- getCompositeCache().localRemove( request.getCacheElement().getKey() );
- break;
-
- case Request.REMOVE_ALL:
-
- getCompositeCache().localRemoveAll();
- break;
-
- default:
-
- log.error( "Recieved unknown command" );
- }
- }
- catch ( Exception e )
- {
- log.error( "Failed to process received JavaGroups message", e );
- }
-
- return null;
- }
-
- /**
- * TODO speed this up. We don't want to ahve to go through the manager
- * everytime.
- *
- * @return ICompositeCache
- */
- private CompositeCache getCompositeCache()
- {
- return cacheMgr.getCache( this.cacheName );
- }
-
- // ------------------------------------------- interface MembershipListener
-
- public void viewAccepted( View view )
- {
- log.info( "View Changed: " + String.valueOf( view ) );
- }
-
- public void suspect( Address suspectedAddress )
- {
- }
-
- public void block()
- {
- }
-
- /**
- * getStats
- *
- * @return String
- */
- public String getStats()
- {
- return getStatistics().toString();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatistics()
- */
- public IStats getStatistics()
- {
- IStats stats = new Stats();
- stats.setTypeName( "JavaGroups Cache" );
-
- ArrayList elems = new ArrayList();
-
- IStatElement se = null;
-
- // no data gathered here
-
- // get an array and put them in the Stats object
- IStatElement[] ses = (IStatElement[]) elems.toArray( new StatElement[0] );
- stats.setStatElements( ses );
-
- return stats;
- }
-
- // ---------------------------------------------------------- inner classes
-
- /**
- * Object for messages, wraps the command type (update, remove, or remove
- * all) and original cache element to distribute.
- */
- static class Request
- implements Serializable
- {
- public final static int UPDATE = 1;
-
- public final static int REMOVE = 2;
-
- public final static int REMOVE_ALL = 3;
-
- public final static int GET = 5;
-
- private ICacheElement cacheElement;
-
- private int command;
-
- public Request( ICacheElement cacheElement, int command )
- {
- this.cacheElement = cacheElement;
- this.command = command;
- }
-
- public ICacheElement getCacheElement()
- {
- return cacheElement;
- }
-
- public int getCommand()
- {
- return command;
- }
- }
-}
+package org.apache.jcs.auxiliary.javagroups;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.Vector;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.AuxiliaryCache;
+import org.apache.jcs.engine.CacheConstants;
+import org.apache.jcs.engine.CacheElement;
+import org.apache.jcs.engine.behavior.ICacheElement;
+import org.apache.jcs.engine.behavior.ICacheType;
+import org.apache.jcs.engine.behavior.ICompositeCacheManager;
+import org.apache.jcs.engine.control.CompositeCache;
+import org.apache.jcs.engine.stats.StatElement;
+import org.apache.jcs.engine.stats.Stats;
+import org.apache.jcs.engine.stats.behavior.IStatElement;
+import org.apache.jcs.engine.stats.behavior.IStats;
+import org.jgroups.Address;
+import org.jgroups.Channel;
+import org.jgroups.MembershipListener;
+import org.jgroups.Message;
+import org.jgroups.View;
+import org.jgroups.blocks.GroupRequest;
+import org.jgroups.blocks.MessageDispatcher;
+import org.jgroups.blocks.RequestHandler;
+import org.jgroups.util.RspList;
+
+/**
+ * Auxiliary cache using javagroups. Expects to be created with a Channel, the
+ * {@link JavaGroupsCacheFactory}is responsible for creating that channel. To
+ * do so it uses configuration properties specified by an instance of
+ * {@link JavaGroupsCacheAttributes}.
+ * <p>
+ * At creation time the provided channel is connected to a group having the same
+ * name as the cache / region name this auxiliary is associated with. update /
+ * remove / removeAll operations are broadcast to all members of the group. A
+ * listener thread processes requests from other members of the group, and
+ * dispatches to appropriate methods on the associated CompositeCache.
+ * </p>
+ * <p>
+ * Calls to get are currently ignored.
+ * <p>
+ * Messages are sent to peers asynchronously. Synchronous messaging could be
+ * added using MessageDispatcher or RpcDispatcher. Combined with a get
+ * implementation this could provide much higher cache consistency (but with a
+ * substantial speed penalty).
+ *
+ * @version $Id: JavaGroupsCache.java 264665 2005-08-30 01:10:34Z asmuts $
+ */
+public class JavaGroupsCache
+ implements AuxiliaryCache, RequestHandler, MembershipListener
+{
+ private final Log log = LogFactory.getLog( JavaGroupsCache.class );
+
+ private String cacheName;
+
+ private int status;
+
+ private boolean getFromPeers;
+
+ private ICompositeCacheManager cacheMgr;
+
+ private Channel channel;
+
+ private MessageDispatcher dispatcher;
+
+ public JavaGroupsCache( ICompositeCacheManager cache, String cacheName, Channel channel, boolean getFromPeers )
+ throws Exception
+ {
+ this.cacheMgr = cacheMgr;
+
+ this.cacheName = cacheName;
+ this.channel = channel;
+
+ this.getFromPeers = getFromPeers;
+
+ // The adapter listens to the channel and fires MessageListener events
+ // on this object.
+
+ dispatcher = new MessageDispatcher( channel, null, this, this );
+
+ // Connect channel to the 'group' for our region name
+
+ channel.setOpt( Channel.LOCAL, Boolean.FALSE );
+
+ channel.connect( cacheName );
+
+ // If all the above succeed, the cache is now alive.
+
+ this.status = CacheConstants.STATUS_ALIVE;
+
+ log.info( "Initialized for cache: " + cacheName );
+ }
+
+ public void send( ICacheElement element, int command )
+ {
+ Request request = new Request( element, command );
+
+ try
+ {
+ dispatcher.castMessage( null, new Message( null, null, request ), GroupRequest.GET_NONE, 0 );
+
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed to send JavaGroups message", e );
+ }
+ }
+
+ // ----------------------------------------------- interface AuxiliaryCache
+
+ /**
+ * Sends the provided element to all peers (connected to the same channel
+ * and region name).
+ *
+ * @param ce
+ * CacheElement to replicate
+ * @throws IOException
+ * Never thrown by this implementation
+ */
+ public void update( ICacheElement ce )
+ throws IOException
+ {
+ send( ce, Request.UPDATE );
+ }
+
+ /**
+ * If 'getFromPeers' is true, this will attempt to get the requested element
+ * from ant other members of the group.
+ *
+ * @param key
+ * @return
+ * @throws IOException
+ * Never thrown by this implementation
+ */
+ public ICacheElement get( Serializable key )
+ throws IOException
+ {
+ if ( getFromPeers )
+ {
+ CacheElement element = new CacheElement( cacheName, key, null );
+
+ Request request = new Request( element, Request.GET );
+
+ // Cast message and wait for all responses.
+
+ // FIXME: we can stop waiting after the first not null response,
+ // that is more difficult to implement however.
+
+ RspList responses = dispatcher.castMessage( null, new Message( null, null, request ), GroupRequest.GET_ALL,
+ 0 );
+
+ // Get results only gives the responses which were not null
+
+ Vector results = responses.getResults();
+
+ // If there were any non null results, return the first
+
+ if ( results.size() > 0 )
+ {
+ return (ICacheElement) results.get( 0 );
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Sends a request to all peers to remove the element having the provided
+ * key.
+ *
+ * @param key
+ * Key of element to be removed
+ * @throws IOException
+ * Never thrown by this implementation
+ */
+ public boolean remove( Serializable key )
+ throws IOException
+ {
+ CacheElement ce = new CacheElement( cacheName, key, null );
+
+ send( ce, Request.REMOVE );
+
+ return false;
+ }
+
+ /**
+ * Sends a request to remove ALL elements from the peers
+ *
+ * @throws IOException
+ * Never thrown by this implementation
+ */
+ public void removeAll()
+ throws IOException
+ {
+ CacheElement ce = new CacheElement( cacheName, null, null );
+
+ send( ce, Request.REMOVE_ALL );
+ }
+
+ /**
+ * Dispose this cache, terminates the listener thread and disconnects the
+ * channel from the group.
+ *
+ * @throws IOException
+ */
+ public void dispose()
+ throws IOException
+ {
+ // This will join the scheduler thread and ensure everything terminates
+
+ dispatcher.stop();
+
+ // Now we can disconnect from the group and close the channel
+
+ channel.disconnect();
+ channel.close();
+
+ status = CacheConstants.STATUS_DISPOSED;
+
+ log.info( "Disposed for cache: " + cacheName );
+ }
+
+ /**
+ * Since this is a lateral, size is not defined.
+ *
+ * @return Always returns 0
+ */
+ public int getSize()
+ {
+ return 0;
+ }
+
+ /**
+ * Returns the status of this auxiliary.
+ *
+ * @return One of the status constants from {@link CacheConstants}
+ */
+ public int getStatus()
+ {
+ return status;
+ }
+
+ /**
+ * Accessor for cacheName property
+ *
+ * @return Name of cache / region this auxiliary is associated with.
+ */
+ public String getCacheName()
+ {
+ return cacheName;
+ }
+
+ /**
+ * Not implemented (I believe since get is not supported, this should also
+ * not be).
+ *
+ * @param group
+ * Ignored
+ * @return Always reurns null
+ */
+ public Set getGroupKeys( String group )
+ {
+ return null;
+ }
+
+ // --------------------------------------------------- interface ICacheType
+
+ /**
+ * Get the cache type (always Lateral).
+ *
+ * @return Always returns ICacheType.LATERAL_CACHE
+ */
+ public int getCacheType()
+ {
+ return ICacheType.LATERAL_CACHE;
+ }
+
+ // ----------------------------------------------- interface RequestHandler
+
+ /**
+ * Handles a message from a peer. The message should contain a Request, and
+ * depending on the command this will call localUpdate, localRemove, or
+ * localRemoveAll on the associated CompositeCache.
+ *
+ * @param msg
+ * The JavaGroups Message
+ * @return Always returns null
+ */
+ public Object handle( Message msg )
+ {
+ try
+ {
+ Request request = (Request) msg.getObject();
+
+ // Switch based on the command and invoke the
+ // appropriate method on the associate composite cache
+
+ switch ( request.getCommand() )
+ {
+ case Request.GET:
+
+ return getCompositeCache().localGet( request.getCacheElement().getKey() );
+ // break;
+
+ case Request.UPDATE:
+
+ getCompositeCache().localUpdate( request.getCacheElement() );
+ break;
+
+ case Request.REMOVE:
+
+ getCompositeCache().localRemove( request.getCacheElement().getKey() );
+ break;
+
+ case Request.REMOVE_ALL:
+
+ getCompositeCache().localRemoveAll();
+ break;
+
+ default:
+
+ log.error( "Recieved unknown command" );
+ }
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed to process received JavaGroups message", e );
+ }
+
+ return null;
+ }
+
+ /**
+ * TODO speed this up. We don't want to ahve to go through the manager
+ * everytime.
+ *
+ * @return ICompositeCache
+ */
+ private CompositeCache getCompositeCache()
+ {
+ return cacheMgr.getCache( this.cacheName );
+ }
+
+ // ------------------------------------------- interface MembershipListener
+
+ public void viewAccepted( View view )
+ {
+ log.info( "View Changed: " + String.valueOf( view ) );
+ }
+
+ public void suspect( Address suspectedAddress )
+ {
+ }
+
+ public void block()
+ {
+ }
+
+ /**
+ * getStats
+ *
+ * @return String
+ */
+ public String getStats()
+ {
+ return getStatistics().toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jcs.auxiliary.AuxiliaryCache#getStatistics()
+ */
+ public IStats getStatistics()
+ {
+ IStats stats = new Stats();
+ stats.setTypeName( "JavaGroups Cache" );
+
+ ArrayList elems = new ArrayList();
+
+ IStatElement se = null;
+
+ // no data gathered here
+
+ // get an array and put them in the Stats object
+ IStatElement[] ses = (IStatElement[]) elems.toArray( new StatElement[0] );
+ stats.setStatElements( ses );
+
+ return stats;
+ }
+
+ // ---------------------------------------------------------- inner classes
+
+ /**
+ * Object for messages, wraps the command type (update, remove, or remove
+ * all) and original cache element to distribute.
+ */
+ static class Request
+ implements Serializable
+ {
+ public final static int UPDATE = 1;
+
+ public final static int REMOVE = 2;
+
+ public final static int REMOVE_ALL = 3;
+
+ public final static int GET = 5;
+
+ private ICacheElement cacheElement;
+
+ private int command;
+
+ public Request( ICacheElement cacheElement, int command )
+ {
+ this.cacheElement = cacheElement;
+ this.command = command;
+ }
+
+ public ICacheElement getCacheElement()
+ {
+ return cacheElement;
+ }
+
+ public int getCommand()
+ {
+ return command;
+ }
+ }
+}
Modified: jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheAttributes.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheAttributes.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheAttributes.java (original)
+++ jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheAttributes.java Thu May 10 09:03:42 2007
@@ -1,107 +1,110 @@
-package org.apache.jcs.auxiliary.javagroups;
-
-/*
- * 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.AbstractAuxiliaryCacheAttributes;
-import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
-
-/**
- * Attributes used by {@link JavaGroupsCacheFactory#createCache}to configure an
- * instance of {@link JavaGroupsCache}.
- *
- * <h3>Configurable Properties:</h3>
- *
- * <dl>
- * <dt>channelFactoryClassName</dt>
- * <dd>Name of an {@link org.jgroups.ChannelFactory}implementation which will
- * be used to create the channel for the instance. Defaults to
- * {@link org.jgroups.JChannelFactory}.</dd>
- * <dt>channelProperties</dt>
- * <dd>A JavaGroups properties object which will be used by the channel to
- * create the protocol stack. Either a properties string, or the URL of a file
- * containing the properties in XML form is valid. Defaults to null which causes
- * the Channel implementation to use its defaults.</dd>
- * </dl>
- *
- * @version $Id: JavaGroupsCacheAttributes.java,v 1.2 2005/01/07 22:27:54 asmuts
- * Exp $
- */
-public class JavaGroupsCacheAttributes
- extends AbstractAuxiliaryCacheAttributes
- implements AuxiliaryCacheAttributes
-{
- private String channelFactoryClassName = "org.jgroups.JChannelFactory";
-
- private String channelProperties = null;
-
- private boolean getFromPeers = false;
-
- public String getChannelFactoryClassName()
- {
- return channelFactoryClassName;
- }
-
- public void setChannelFactoryClassName( String channelFactoryClassName )
- {
- this.channelFactoryClassName = channelFactoryClassName;
- }
-
- public String getJGChannelProperties()
- {
- return channelProperties;
- }
-
- public void setChannelProperties( String channelProperties )
- {
- this.channelProperties = channelProperties;
- }
-
- public boolean isGetFromPeers()
- {
- return getFromPeers;
- }
-
- public void setGetFromPeers( boolean getFromPeers )
- {
- this.getFromPeers = getFromPeers;
- }
-
- /**
- * Return a copy of this JavaGroupsCacheAttributes, cast to an
- * AuxiliaryCacheAttributes
- */
- public AuxiliaryCacheAttributes copy()
- {
- return (AuxiliaryCacheAttributes) this.clone();
- }
-
- /**
- * Return a clone of this JavaGroupsCacheAttributes
- */
- public Object clone()
- {
- JavaGroupsCacheAttributes copy = new JavaGroupsCacheAttributes();
-
- copy.cacheName = this.cacheName;
- copy.name = this.name;
-
- copy.channelFactoryClassName = this.channelFactoryClassName;
- copy.channelProperties = this.channelProperties;
-
- return copy;
- }
-}
+package org.apache.jcs.auxiliary.javagroups;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.AbstractAuxiliaryCacheAttributes;
+import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
+
+/**
+ * Attributes used by {@link JavaGroupsCacheFactory#createCache}to configure an
+ * instance of {@link JavaGroupsCache}.
+ *
+ * <h3>Configurable Properties:</h3>
+ *
+ * <dl>
+ * <dt>channelFactoryClassName</dt>
+ * <dd>Name of an {@link org.jgroups.ChannelFactory}implementation which will
+ * be used to create the channel for the instance. Defaults to
+ * {@link org.jgroups.JChannelFactory}.</dd>
+ * <dt>channelProperties</dt>
+ * <dd>A JavaGroups properties object which will be used by the channel to
+ * create the protocol stack. Either a properties string, or the URL of a file
+ * containing the properties in XML form is valid. Defaults to null which causes
+ * the Channel implementation to use its defaults.</dd>
+ * </dl>
+ *
+ * @version $Id: JavaGroupsCacheAttributes.java,v 1.2 2005/01/07 22:27:54 asmuts
+ * Exp $
+ */
+public class JavaGroupsCacheAttributes
+ extends AbstractAuxiliaryCacheAttributes
+ implements AuxiliaryCacheAttributes
+{
+ private String channelFactoryClassName = "org.jgroups.JChannelFactory";
+
+ private String channelProperties = null;
+
+ private boolean getFromPeers = false;
+
+ public String getChannelFactoryClassName()
+ {
+ return channelFactoryClassName;
+ }
+
+ public void setChannelFactoryClassName( String channelFactoryClassName )
+ {
+ this.channelFactoryClassName = channelFactoryClassName;
+ }
+
+ public String getJGChannelProperties()
+ {
+ return channelProperties;
+ }
+
+ public void setChannelProperties( String channelProperties )
+ {
+ this.channelProperties = channelProperties;
+ }
+
+ public boolean isGetFromPeers()
+ {
+ return getFromPeers;
+ }
+
+ public void setGetFromPeers( boolean getFromPeers )
+ {
+ this.getFromPeers = getFromPeers;
+ }
+
+ /**
+ * Return a copy of this JavaGroupsCacheAttributes, cast to an
+ * AuxiliaryCacheAttributes
+ */
+ public AuxiliaryCacheAttributes copy()
+ {
+ return (AuxiliaryCacheAttributes) this.clone();
+ }
+
+ /**
+ * Return a clone of this JavaGroupsCacheAttributes
+ */
+ public Object clone()
+ {
+ JavaGroupsCacheAttributes copy = new JavaGroupsCacheAttributes();
+
+ copy.cacheName = this.cacheName;
+ copy.name = this.name;
+
+ copy.channelFactoryClassName = this.channelFactoryClassName;
+ copy.channelProperties = this.channelProperties;
+
+ return copy;
+ }
+}
Modified: jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheFactory.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheFactory.java (original)
+++ jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/javagroups/JavaGroupsCacheFactory.java Thu May 10 09:03:42 2007
@@ -1,97 +1,100 @@
-package org.apache.jcs.auxiliary.javagroups;
-
-/*
- * 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.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.AuxiliaryCache;
-import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
-import org.apache.jcs.auxiliary.AuxiliaryCacheFactory;
-import org.apache.jcs.engine.behavior.ICompositeCacheManager;
-import org.jgroups.Channel;
-import org.jgroups.ChannelFactory;
-
-/**
- * AuxiliaryCacheFactory for creating instances of {@link JavaGroupsCache}for a
- * particular CompositeCache and {@link JavaGroupsCacheAttributes}.
- *
- * @version $Id: JavaGroupsCacheFactory.java,v 1.2 2004/06/12 02:34:13 asmuts
- * Exp $
- */
-public class JavaGroupsCacheFactory
- implements AuxiliaryCacheFactory
-{
- private final static Log log = LogFactory.getLog( JavaGroupsCacheFactory.class );
-
- private String name;
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jcs.auxiliary.AuxiliaryCacheFactory#createCache(org.apache.jcs.auxiliary.AuxiliaryCacheAttributes,
- * org.apache.jcs.engine.behavior.ICompositeCacheManager)
- */
- public AuxiliaryCache createCache( AuxiliaryCacheAttributes iaca, ICompositeCacheManager cacheMgr )
- {
- // ignore the maanger
-
- try
- {
- // Cast provided attributes to JavaGroupsCacheAttributes
-
- JavaGroupsCacheAttributes attributes = (JavaGroupsCacheAttributes) iaca;
-
- // Create a ChannelFactory using the classname specified in the
- // config as 'channelFactoryClassName'
-
- ChannelFactory factory = (ChannelFactory) Class.forName( attributes.getChannelFactoryClassName() )
- .newInstance();
-
- // Create a channel based on 'channelProperties' from the config
-
- Channel channel = factory.createChannel( attributes.getJGChannelProperties() );
-
- // Return a new JavaGroupsCache for the new channel.
-
- return new JavaGroupsCache( cacheMgr, attributes.getCacheName(), channel, attributes.isGetFromPeers() );
- }
- catch ( Exception e )
- {
- log.error( "Failed to create JavaGroupsCache", e );
-
- return null;
- }
- }
-
- /**
- * Accessor for name property
- * @return String
- */
- public String getName()
- {
- return this.name;
- }
-
- /**
- * Mutator for name property
- * @param name
- */
- public void setName( String name )
- {
- this.name = name;
- }
-}
+package org.apache.jcs.auxiliary.javagroups;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.AuxiliaryCache;
+import org.apache.jcs.auxiliary.AuxiliaryCacheAttributes;
+import org.apache.jcs.auxiliary.AuxiliaryCacheFactory;
+import org.apache.jcs.engine.behavior.ICompositeCacheManager;
+import org.jgroups.Channel;
+import org.jgroups.ChannelFactory;
+
+/**
+ * AuxiliaryCacheFactory for creating instances of {@link JavaGroupsCache}for a
+ * particular CompositeCache and {@link JavaGroupsCacheAttributes}.
+ *
+ * @version $Id: JavaGroupsCacheFactory.java,v 1.2 2004/06/12 02:34:13 asmuts
+ * Exp $
+ */
+public class JavaGroupsCacheFactory
+ implements AuxiliaryCacheFactory
+{
+ private final static Log log = LogFactory.getLog( JavaGroupsCacheFactory.class );
+
+ private String name;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jcs.auxiliary.AuxiliaryCacheFactory#createCache(org.apache.jcs.auxiliary.AuxiliaryCacheAttributes,
+ * org.apache.jcs.engine.behavior.ICompositeCacheManager)
+ */
+ public AuxiliaryCache createCache( AuxiliaryCacheAttributes iaca, ICompositeCacheManager cacheMgr )
+ {
+ // ignore the maanger
+
+ try
+ {
+ // Cast provided attributes to JavaGroupsCacheAttributes
+
+ JavaGroupsCacheAttributes attributes = (JavaGroupsCacheAttributes) iaca;
+
+ // Create a ChannelFactory using the classname specified in the
+ // config as 'channelFactoryClassName'
+
+ ChannelFactory factory = (ChannelFactory) Class.forName( attributes.getChannelFactoryClassName() )
+ .newInstance();
+
+ // Create a channel based on 'channelProperties' from the config
+
+ Channel channel = factory.createChannel( attributes.getJGChannelProperties() );
+
+ // Return a new JavaGroupsCache for the new channel.
+
+ return new JavaGroupsCache( cacheMgr, attributes.getCacheName(), channel, attributes.isGetFromPeers() );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed to create JavaGroupsCache", e );
+
+ return null;
+ }
+ }
+
+ /**
+ * Accessor for name property
+ * @return String
+ */
+ public String getName()
+ {
+ return this.name;
+ }
+
+ /**
+ * Mutator for name property
+ * @param name
+ */
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+}
Modified: jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheFactory.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- 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 May 10 09:03:42 2007
@@ -1,192 +1,195 @@
-package org.apache.jcs.auxiliary.lateral;
-
-/*
- * 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 java.util.ArrayList;
-import java.util.StringTokenizer;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.AuxiliaryCache;
-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.engine.behavior.ICache;
-import org.apache.jcs.engine.behavior.ICompositeCacheManager;
-
-/**
- * Constructs a LateralCacheNoWaitFacade for the given configuration. Each
- * lateral service / local relationship is managed by one manager. This manager
- * 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
- extends LateralCacheAbstractFactory
-{
- private final static Log log = LogFactory.getLog( LateralCacheFactory.class );
-
- private String name;
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jcs.auxiliary.AuxiliaryCacheFactory#createCache(org.apache.jcs.auxiliary.AuxiliaryCacheAttributes,
- * org.apache.jcs.engine.behavior.ICompositeCacheManager)
- */
- public AuxiliaryCache createCache( AuxiliaryCacheAttributes iaca, ICompositeCacheManager cacheMgr )
- {
-
- LateralCacheAttributes lac = (LateralCacheAttributes) iaca;
- ArrayList noWaits = new ArrayList();
-
- if ( lac.getTransmissionType() == LateralCacheAttributes.UDP )
- {
- LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
- ICache ic = lcm.getCache( lac.getCacheName() );
- if ( ic != null )
- {
- noWaits.add( ic );
- }
- }
- else if ( lac.getTransmissionType() == LateralCacheAttributes.JAVAGROUPS )
- {
- LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
- ICache ic = lcm.getCache( lac.getCacheName() );
- if ( ic != null )
- {
- noWaits.add( ic );
- }
-
- }
- else if ( lac.getTransmissionType() == LateralCacheAttributes.XMLRPC )
- {
-
- //pars up the tcp servers and set the tcpServer value and
- // get the manager and then get the cache
- //Iterator it = lac.tcpServers.iterator();
- //while( it.hasNext() ) {
-
- StringTokenizer it = new StringTokenizer( lac.getHttpServers(), "," );
- while ( it.hasMoreElements() )
- {
- //String server = (String)it.next();
- String server = (String) it.nextElement();
- //p( "tcp server = " + server );
- lac.setHttpServer( server );
- LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
- ICache ic = lcm.getCache( lac.getCacheName() );
- if ( ic != null )
- {
- noWaits.add( ic );
- }
- else
- {
- log.warn( "noWait is null" );
- }
- }
-
- }
- else if ( lac.getTransmissionType() == LateralCacheAttributes.HTTP )
- {
- StringTokenizer it = new StringTokenizer( lac.getHttpServers(), "," );
- while ( it.hasMoreElements() )
- {
- String server = (String) it.nextElement();
- lac.setHttpServer( server );
- LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
- ICache ic = lcm.getCache( lac.getCacheName() );
- if ( ic != null )
- {
- noWaits.add( ic );
- }
- }
- }
-
- createListener( lac, cacheMgr );
-
- // create the no wait facade.
- LateralCacheNoWaitFacade lcnwf = new LateralCacheNoWaitFacade( (LateralCacheNoWait[]) noWaits
- .toArray( new LateralCacheNoWait[0] ), iaca.getCacheName() );
-
- return lcnwf;
- }
-
- /*
- * (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 )
- {
- // don't create a listener if we are not receiving.
- if ( lac.isReceive() )
- {
-
- if ( log.isInfoEnabled() )
- {
- log.info( "Creating listener for " + lac );
- }
-
- try
- {
- if ( lac.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
- {
- LateralCacheJGListener.getInstance( lac, cacheMgr );
- }
-
- }
- catch ( Exception e )
- {
- log.error( "Problem creating lateral listener", e );
- }
- }
- else
- {
- if ( log.isDebugEnabled() )
- {
- log.debug( "Not creating a listener since we are not receiving." );
- }
- }
- }
-
- /**
- * Gets the name attribute of the LateralCacheFactory object
- *
- * @return The name value
- */
- public String getName()
- {
- return this.name;
- }
-
- /**
- * Sets the name attribute of the LateralCacheFactory object
- *
- * @param name
- * The new name value
- */
- public void setName( String name )
- {
- this.name = name;
- }
-}
+package org.apache.jcs.auxiliary.lateral;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.AuxiliaryCache;
+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.engine.behavior.ICache;
+import org.apache.jcs.engine.behavior.ICompositeCacheManager;
+
+/**
+ * Constructs a LateralCacheNoWaitFacade for the given configuration. Each
+ * lateral service / local relationship is managed by one manager. This manager
+ * 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
+ extends LateralCacheAbstractFactory
+{
+ private final static Log log = LogFactory.getLog( LateralCacheFactory.class );
+
+ private String name;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jcs.auxiliary.AuxiliaryCacheFactory#createCache(org.apache.jcs.auxiliary.AuxiliaryCacheAttributes,
+ * org.apache.jcs.engine.behavior.ICompositeCacheManager)
+ */
+ public AuxiliaryCache createCache( AuxiliaryCacheAttributes iaca, ICompositeCacheManager cacheMgr )
+ {
+
+ LateralCacheAttributes lac = (LateralCacheAttributes) iaca;
+ ArrayList noWaits = new ArrayList();
+
+ if ( lac.getTransmissionType() == LateralCacheAttributes.UDP )
+ {
+ LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
+ ICache ic = lcm.getCache( lac.getCacheName() );
+ if ( ic != null )
+ {
+ noWaits.add( ic );
+ }
+ }
+ else if ( lac.getTransmissionType() == LateralCacheAttributes.JAVAGROUPS )
+ {
+ LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
+ ICache ic = lcm.getCache( lac.getCacheName() );
+ if ( ic != null )
+ {
+ noWaits.add( ic );
+ }
+
+ }
+ else if ( lac.getTransmissionType() == LateralCacheAttributes.XMLRPC )
+ {
+
+ //pars up the tcp servers and set the tcpServer value and
+ // get the manager and then get the cache
+ //Iterator it = lac.tcpServers.iterator();
+ //while( it.hasNext() ) {
+
+ StringTokenizer it = new StringTokenizer( lac.getHttpServers(), "," );
+ while ( it.hasMoreElements() )
+ {
+ //String server = (String)it.next();
+ String server = (String) it.nextElement();
+ //p( "tcp server = " + server );
+ lac.setHttpServer( server );
+ LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
+ ICache ic = lcm.getCache( lac.getCacheName() );
+ if ( ic != null )
+ {
+ noWaits.add( ic );
+ }
+ else
+ {
+ log.warn( "noWait is null" );
+ }
+ }
+
+ }
+ else if ( lac.getTransmissionType() == LateralCacheAttributes.HTTP )
+ {
+ StringTokenizer it = new StringTokenizer( lac.getHttpServers(), "," );
+ while ( it.hasMoreElements() )
+ {
+ String server = (String) it.nextElement();
+ lac.setHttpServer( server );
+ LateralCacheManager lcm = LateralCacheManager.getInstance( lac, cacheMgr );
+ ICache ic = lcm.getCache( lac.getCacheName() );
+ if ( ic != null )
+ {
+ noWaits.add( ic );
+ }
+ }
+ }
+
+ createListener( lac, cacheMgr );
+
+ // create the no wait facade.
+ LateralCacheNoWaitFacade lcnwf = new LateralCacheNoWaitFacade( (LateralCacheNoWait[]) noWaits
+ .toArray( new LateralCacheNoWait[0] ), iaca.getCacheName() );
+
+ return lcnwf;
+ }
+
+ /*
+ * (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 )
+ {
+ // don't create a listener if we are not receiving.
+ if ( lac.isReceive() )
+ {
+
+ if ( log.isInfoEnabled() )
+ {
+ log.info( "Creating listener for " + lac );
+ }
+
+ try
+ {
+ if ( lac.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
+ {
+ LateralCacheJGListener.getInstance( lac, cacheMgr );
+ }
+
+ }
+ catch ( Exception e )
+ {
+ log.error( "Problem creating lateral listener", e );
+ }
+ }
+ else
+ {
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Not creating a listener since we are not receiving." );
+ }
+ }
+ }
+
+ /**
+ * Gets the name attribute of the LateralCacheFactory object
+ *
+ * @return The name value
+ */
+ public String getName()
+ {
+ return this.name;
+ }
+
+ /**
+ * Sets the name attribute of the LateralCacheFactory object
+ *
+ * @param name
+ * The new name value
+ */
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+}
Modified: jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java
URL: http://svn.apache.org/viewvc/jakarta/jcs/trunk/auxiliary-builds/jdk14/src/java/org/apache/jcs/auxiliary/lateral/LateralCacheManager.java?view=diff&rev=536904&r1=536903&r2=536904
==============================================================================
--- 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 May 10 09:03:42 2007
@@ -1,360 +1,363 @@
-package org.apache.jcs.auxiliary.lateral;
-
-/*
- * 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 java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jcs.auxiliary.AuxiliaryCache;
-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.ILateralCacheObserver;
-import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheService;
-import org.apache.jcs.auxiliary.lateral.javagroups.LateralCacheJGListener;
-import org.apache.jcs.auxiliary.lateral.javagroups.LateralJGService;
-import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener;
-import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService;
-import org.apache.jcs.engine.behavior.ICompositeCacheManager;
-
-/**
- * Creates lateral caches. Lateral caches are primarily used for removing non
- * laterally configured caches. Non laterally configured cache regions should
- * still bea ble to participate in removal. But if there is a non laterally
- * configured cache hub, then lateral removals may be necessary. For flat
- * webserver production environments, without a strong machine at the app server
- * level, distribution and search may need to occur at the lateral cache level.
- * This is currently not implemented in the lateral cache.
- * <p>
- *
- * @TODO: - need freeCache, release, getStats - need to find an interface
- * acceptible for all - cache managers or a manager within a type
- *
- * @deprecated use individual cache managers
- */
-public class LateralCacheManager
- implements ILateralCacheManager
-{
- private final static Log log = LogFactory.getLog( LateralCacheManager.class );
-
- private static LateralCacheMonitor monitor;
-
- final static Map instances = new HashMap();
-
- // each manager instance has caches
- final Map caches = new HashMap();
-
- /**
- * Description of the Field
- */
- protected ILateralCacheAttributes lca;
-
- private int clients;
-
- /**
- * Handle to the lateral cache service; or a zombie handle if failed to
- * connect.
- */
- private ILateralCacheService lateralService;
-
- /**
- * Wrapper of the lateral cache watch service; or wrapper of a zombie
- * service if failed to connect.
- */
- private LateralCacheWatchRepairable lateralWatch;
-
- private ICompositeCacheManager cacheMgr;
-
- /**
- * Returns an instance of the LateralCacheManager.
- *
- * @param lca
- * @param cacheMgr
- * this allows the auxiliary to be passed a cache manager.
- * @return
- */
- public static LateralCacheManager getInstance( ILateralCacheAttributes lca, ICompositeCacheManager cacheMgr )
- {
- LateralCacheManager ins = (LateralCacheManager) instances.get( lca.toString() );
- synchronized ( instances )
- {
- if ( ins == null )
- {
- log.info( "Instance for [" + lca.toString() + "] is null, creating" );
-
- ins = (LateralCacheManager) instances.get( lca.toString() );
- if ( ins == null )
- {
- ins = new LateralCacheManager( lca, cacheMgr );
- instances.put( lca.toString(), ins );
- }
- }
- }
-
- ins.clients++;
- // Fires up the monitoring daemon.
- if ( monitor == null )
- {
- monitor = new LateralCacheMonitor( ins );
- // Should never be null
- if ( monitor != null )
- {
- Thread t = new Thread( monitor );
- t.setDaemon( true );
- t.start();
- }
- }
- return ins;
- }
-
- /**
- * Constructor for the LateralCacheManager object
- *
- * @param lcaA
- * @param cacheMgr
- */
- private LateralCacheManager( ILateralCacheAttributes lcaA, ICompositeCacheManager cacheMgr )
- {
- this.lca = lcaA;
-
- this.cacheMgr = cacheMgr;
-
- if ( log.isDebugEnabled() )
- {
- log.debug( "Creating lateral cache service, lca = " + this.lca );
- }
-
- // need to create the service based on the type
-
- try
- {
- if ( this.lca.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
- {
- log.debug( "Creating JAVAGROUPS service" );
-
- this.lateralService = new LateralJGService( this.lca );
- }
-
- else
- {
- log.error( "Type not recognized, must zombie" );
-
- throw new Exception( "no known transmission type for lateral cache." );
- }
-
- if ( this.lateralService == null )
- {
- log.error( "No service created, must zombie" );
-
- throw new Exception( "No service created for lateral cache." );
- }
-
- this.lateralWatch = new LateralCacheWatchRepairable();
- this.lateralWatch.setCacheWatch( new ZombieLateralCacheWatch() );
-
- }
- catch ( Exception ex )
- {
- // Failed to connect to the lateral server.
- // Configure this LateralCacheManager instance to use the
- // "zombie" services.
-
- log.error( "Failure, lateral instance will use zombie service", ex );
-
- this.lateralService = new ZombieLateralCacheService();
- this.lateralWatch = new LateralCacheWatchRepairable();
- this.lateralWatch.setCacheWatch( new ZombieLateralCacheWatch() );
-
- // Notify the cache monitor about the error, and kick off
- // the recovery process.
- monitor.notifyError();
- }
- }
-
- /**
- * Adds the lateral cache listener to the underlying cache-watch service.
- *
- * @param cacheName
- * The feature to be added to the LateralCacheListener attribute
- * @param listener
- * The feature to be added to the LateralCacheListener attribute
- * @exception IOException
- */
- public void addLateralCacheListener( String cacheName, ILateralCacheListener listener )
- throws IOException
- {
- synchronized ( this.caches )
- {
- this.lateralWatch.addCacheListener( cacheName, listener );
- }
- }
-
- /**
- * Called to access a precreated region or construct one with defaults.
- * Since all aux cache access goes through the manager, this will never be
- * called.
- * <p>
- * After getting the manager instance for a server, the factory gets a cache
- * for the region name it is constructing.
- * <p>
- * There should be one manager per server and one cache per region per
- * manager.
- *
- * @return AuxiliaryCache
- * @param cacheName
- */
- public AuxiliaryCache getCache( String cacheName )
- {
- LateralCacheNoWait c = null;
- synchronized ( this.caches )
- {
- c = (LateralCacheNoWait) this.caches.get( cacheName );
- if ( c == null )
- {
- LateralCacheAttributes attr = (LateralCacheAttributes) lca.copy();
- attr.setCacheName( cacheName );
- LateralCache cache = new LateralCache( attr, this.lateralService, monitor );
- if ( log.isDebugEnabled() )
- {
- log.debug( "Created cache for noWait, cache = [" + cache + "]" );
- }
- c = new LateralCacheNoWait( cache );
- this.caches.put( cacheName, c );
-
- log.info( "Created LateralCacheNoWait for " + this.lca + " LateralCacheNoWait = [" + c + "]" );
- }
- }
-
- // don't create a listener if we are not receiving.
- if ( lca.isReceive() )
- {
- try
- {
- if ( this.lca.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
- {
- addLateralCacheListener( cacheName, LateralCacheJGListener.getInstance( this.lca, cacheMgr ) );
- }
- }
- catch ( IOException ioe )
- {
- log.error( "Problem creating lateral listener", ioe );
- }
- catch ( Exception e )
- {
- log.error( "Problem creating lateral listener", e );
- }
- }
- else
- {
- if ( log.isDebugEnabled() )
- {
- log.debug( "Not creating a listener since we are not receiving." );
- }
- }
-
- // TODO: need listener repair
-
- return c;
- }
-
- /**
- * Gets the cacheType attribute of the LateralCacheManager object
- *
- * @return The cache type value
- */
- public int getCacheType()
- {
- return LATERAL_CACHE;
- }
-
- /**
- * Gets the stats attribute of the LateralCacheManager object
- *
- * @return String
- */
- public String getStats()
- {
- // add something here
- return "";
- }
-
- /**
- * Fixes up all the caches managed by this cache manager.
- *
- * @param lateralService
- * @param lateralWatch
- */
- public void fixCaches( ILateralCacheService lateralService, ILateralCacheObserver lateralWatch )
- {
- log.debug( "Fixing lateral caches:" );
-
- synchronized ( this.caches )
- {
- this.lateralService = lateralService;
- // need to implment an observer for some types of laterals( http and
- // tcp)
- //this.lateralWatch.setCacheWatch(lateralWatch);
- for ( Iterator en = this.caches.values().iterator(); en.hasNext(); )
- {
- LateralCacheNoWait cache = (LateralCacheNoWait) en.next();
- cache.fixCache( this.lateralService );
- }
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#getInstances()
- */
- public Map getInstances()
- {
- return instances;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#getCaches()
- */
- public Map getCaches()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#fixService()
- */
- public Object fixService()
- throws IOException
- {
- Object service = null;
- try
- {
- // no op
- }
- catch ( Exception ex )
- {
- log.error( "Can't fix " + ex.getMessage() );
- throw new IOException( "Can't fix " + ex.getMessage() );
- }
- return service;
- }
-}
+package org.apache.jcs.auxiliary.lateral;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jcs.auxiliary.AuxiliaryCache;
+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.ILateralCacheObserver;
+import org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheService;
+import org.apache.jcs.auxiliary.lateral.javagroups.LateralCacheJGListener;
+import org.apache.jcs.auxiliary.lateral.javagroups.LateralJGService;
+import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPListener;
+import org.apache.jcs.auxiliary.lateral.socket.tcp.LateralTCPService;
+import org.apache.jcs.engine.behavior.ICompositeCacheManager;
+
+/**
+ * Creates lateral caches. Lateral caches are primarily used for removing non
+ * laterally configured caches. Non laterally configured cache regions should
+ * still bea ble to participate in removal. But if there is a non laterally
+ * configured cache hub, then lateral removals may be necessary. For flat
+ * webserver production environments, without a strong machine at the app server
+ * level, distribution and search may need to occur at the lateral cache level.
+ * This is currently not implemented in the lateral cache.
+ * <p>
+ *
+ * @TODO: - need freeCache, release, getStats - need to find an interface
+ * acceptible for all - cache managers or a manager within a type
+ *
+ * @deprecated use individual cache managers
+ */
+public class LateralCacheManager
+ implements ILateralCacheManager
+{
+ private final static Log log = LogFactory.getLog( LateralCacheManager.class );
+
+ private static LateralCacheMonitor monitor;
+
+ final static Map instances = new HashMap();
+
+ // each manager instance has caches
+ final Map caches = new HashMap();
+
+ /**
+ * Description of the Field
+ */
+ protected ILateralCacheAttributes lca;
+
+ private int clients;
+
+ /**
+ * Handle to the lateral cache service; or a zombie handle if failed to
+ * connect.
+ */
+ private ILateralCacheService lateralService;
+
+ /**
+ * Wrapper of the lateral cache watch service; or wrapper of a zombie
+ * service if failed to connect.
+ */
+ private LateralCacheWatchRepairable lateralWatch;
+
+ private ICompositeCacheManager cacheMgr;
+
+ /**
+ * Returns an instance of the LateralCacheManager.
+ *
+ * @param lca
+ * @param cacheMgr
+ * this allows the auxiliary to be passed a cache manager.
+ * @return
+ */
+ public static LateralCacheManager getInstance( ILateralCacheAttributes lca, ICompositeCacheManager cacheMgr )
+ {
+ LateralCacheManager ins = (LateralCacheManager) instances.get( lca.toString() );
+ synchronized ( instances )
+ {
+ if ( ins == null )
+ {
+ log.info( "Instance for [" + lca.toString() + "] is null, creating" );
+
+ ins = (LateralCacheManager) instances.get( lca.toString() );
+ if ( ins == null )
+ {
+ ins = new LateralCacheManager( lca, cacheMgr );
+ instances.put( lca.toString(), ins );
+ }
+ }
+ }
+
+ ins.clients++;
+ // Fires up the monitoring daemon.
+ if ( monitor == null )
+ {
+ monitor = new LateralCacheMonitor( ins );
+ // Should never be null
+ if ( monitor != null )
+ {
+ Thread t = new Thread( monitor );
+ t.setDaemon( true );
+ t.start();
+ }
+ }
+ return ins;
+ }
+
+ /**
+ * Constructor for the LateralCacheManager object
+ *
+ * @param lcaA
+ * @param cacheMgr
+ */
+ private LateralCacheManager( ILateralCacheAttributes lcaA, ICompositeCacheManager cacheMgr )
+ {
+ this.lca = lcaA;
+
+ this.cacheMgr = cacheMgr;
+
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Creating lateral cache service, lca = " + this.lca );
+ }
+
+ // need to create the service based on the type
+
+ try
+ {
+ if ( this.lca.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
+ {
+ log.debug( "Creating JAVAGROUPS service" );
+
+ this.lateralService = new LateralJGService( this.lca );
+ }
+
+ else
+ {
+ log.error( "Type not recognized, must zombie" );
+
+ throw new Exception( "no known transmission type for lateral cache." );
+ }
+
+ if ( this.lateralService == null )
+ {
+ log.error( "No service created, must zombie" );
+
+ throw new Exception( "No service created for lateral cache." );
+ }
+
+ this.lateralWatch = new LateralCacheWatchRepairable();
+ this.lateralWatch.setCacheWatch( new ZombieLateralCacheWatch() );
+
+ }
+ catch ( Exception ex )
+ {
+ // Failed to connect to the lateral server.
+ // Configure this LateralCacheManager instance to use the
+ // "zombie" services.
+
+ log.error( "Failure, lateral instance will use zombie service", ex );
+
+ this.lateralService = new ZombieLateralCacheService();
+ this.lateralWatch = new LateralCacheWatchRepairable();
+ this.lateralWatch.setCacheWatch( new ZombieLateralCacheWatch() );
+
+ // Notify the cache monitor about the error, and kick off
+ // the recovery process.
+ monitor.notifyError();
+ }
+ }
+
+ /**
+ * Adds the lateral cache listener to the underlying cache-watch service.
+ *
+ * @param cacheName
+ * The feature to be added to the LateralCacheListener attribute
+ * @param listener
+ * The feature to be added to the LateralCacheListener attribute
+ * @exception IOException
+ */
+ public void addLateralCacheListener( String cacheName, ILateralCacheListener listener )
+ throws IOException
+ {
+ synchronized ( this.caches )
+ {
+ this.lateralWatch.addCacheListener( cacheName, listener );
+ }
+ }
+
+ /**
+ * Called to access a precreated region or construct one with defaults.
+ * Since all aux cache access goes through the manager, this will never be
+ * called.
+ * <p>
+ * After getting the manager instance for a server, the factory gets a cache
+ * for the region name it is constructing.
+ * <p>
+ * There should be one manager per server and one cache per region per
+ * manager.
+ *
+ * @return AuxiliaryCache
+ * @param cacheName
+ */
+ public AuxiliaryCache getCache( String cacheName )
+ {
+ LateralCacheNoWait c = null;
+ synchronized ( this.caches )
+ {
+ c = (LateralCacheNoWait) this.caches.get( cacheName );
+ if ( c == null )
+ {
+ LateralCacheAttributes attr = (LateralCacheAttributes) lca.copy();
+ attr.setCacheName( cacheName );
+ LateralCache cache = new LateralCache( attr, this.lateralService, monitor );
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Created cache for noWait, cache = [" + cache + "]" );
+ }
+ c = new LateralCacheNoWait( cache );
+ this.caches.put( cacheName, c );
+
+ log.info( "Created LateralCacheNoWait for " + this.lca + " LateralCacheNoWait = [" + c + "]" );
+ }
+ }
+
+ // don't create a listener if we are not receiving.
+ if ( lca.isReceive() )
+ {
+ try
+ {
+ if ( this.lca.getTransmissionType() == ILateralCacheAttributes.JAVAGROUPS )
+ {
+ addLateralCacheListener( cacheName, LateralCacheJGListener.getInstance( this.lca, cacheMgr ) );
+ }
+ }
+ catch ( IOException ioe )
+ {
+ log.error( "Problem creating lateral listener", ioe );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Problem creating lateral listener", e );
+ }
+ }
+ else
+ {
+ if ( log.isDebugEnabled() )
+ {
+ log.debug( "Not creating a listener since we are not receiving." );
+ }
+ }
+
+ // TODO: need listener repair
+
+ return c;
+ }
+
+ /**
+ * Gets the cacheType attribute of the LateralCacheManager object
+ *
+ * @return The cache type value
+ */
+ public int getCacheType()
+ {
+ return LATERAL_CACHE;
+ }
+
+ /**
+ * Gets the stats attribute of the LateralCacheManager object
+ *
+ * @return String
+ */
+ public String getStats()
+ {
+ // add something here
+ return "";
+ }
+
+ /**
+ * Fixes up all the caches managed by this cache manager.
+ *
+ * @param lateralService
+ * @param lateralWatch
+ */
+ public void fixCaches( ILateralCacheService lateralService, ILateralCacheObserver lateralWatch )
+ {
+ log.debug( "Fixing lateral caches:" );
+
+ synchronized ( this.caches )
+ {
+ this.lateralService = lateralService;
+ // need to implment an observer for some types of laterals( http and
+ // tcp)
+ //this.lateralWatch.setCacheWatch(lateralWatch);
+ for ( Iterator en = this.caches.values().iterator(); en.hasNext(); )
+ {
+ LateralCacheNoWait cache = (LateralCacheNoWait) en.next();
+ cache.fixCache( this.lateralService );
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#getInstances()
+ */
+ public Map getInstances()
+ {
+ return instances;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#getCaches()
+ */
+ public Map getCaches()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jcs.auxiliary.lateral.behavior.ILateralCacheManager#fixService()
+ */
+ public Object fixService()
+ throws IOException
+ {
+ Object service = null;
+ try
+ {
+ // no op
+ }
+ catch ( Exception ex )
+ {
+ log.error( "Can't fix " + ex.getMessage() );
+ throw new IOException( "Can't fix " + ex.getMessage() );
+ }
+ return service;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-dev-help@jakarta.apache.org