<?xml version="1.0" encoding="UTF-8"?>
	<!--
		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.
	-->
<document>
	<properties>
		<title>JCS Change Log</title>
		<author email="dev@commons.apache.org">Apache Commons Developers</author>
	</properties>
	<body>
        <release version="2.2" date="unreleased">
        </release>
        <release version="2.1" date="2017-02-05">
            <action dev="tv" type="fix">
                SoftReference cache did not work because of strong references being 
                stored in payload of DoubleLinkedListNode
            </action>
            <action issue="JCS-172" dev="tv" type="fix" due-to="Tom Schroeder">
                ElementAttributes.clone() not updating createTime causes cache elements
                to expire immediately 
            </action>
            <action issue="JCS-171" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Multiple CacheEventQueue.QProcessor spawned for the same cache region 
            </action>
            <action issue="JCS-170" dev="rmannibucau" type="fix">
                Replace at least commas for jmx registration
            </action>
        </release>
        <release version="2.0" date="2016-12-25" description="JDK 1.6 based major release">
            <action issue="JCS-119" dev="tv" type="update">
                Improve concurrency in
                - CompositeCacheManager
                - CacheEventQueue
                - CacheWatchRepairable
                - LHMLRUMemoryCache
            </action>
            <action issue="JCS-169" dev="rmannibucau" type="fix">
                JCache Access Expiry not respected
            </action>
            <action issue="JCS-168" dev="rmannibucau" type="fix">
                cdi/nocdi jcache jar doesnt contain the right 
                META-INF/services/javax.enterprise.inject.spi.Extension file
            </action>
            <action dev="tv" type="update">
                Deprecate JCS.defineRegion() methods
            </action>
        </release>
        <release version="2.0-beta-2" date="2016-11-01" description="JDK 1.6 based major release (beta-2)">
            <action dev="tv" type="remove">
                Remove size limitation configuration of indexed cache recycle bin
            </action>
            <action dev="tv" type="remove">
                Replace SortedPreferentialArray with JDK ConcurrentSkipListSet
            </action>
            <action dev="tv" type="remove">
                Replace SingleLinkedList with JDK ConcurrentLinkedQueue
            </action>
            <action issue="JCS-130" dev="tv" type="update">
                Simplify management of auxiliary caches
            </action>
            <action issue="JCS-165" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Fix: BlockDiskCache partial remove / group remove doesn't work
            </action>
            <action issue="JCS-156" dev="sebb" type="fix" due-to="Ryan Fong">
                BlockDiskCache is limited to 2GB
            </action>
            <action issue="JCS-162" dev="tv" type="fix" due-to="Ryan Fong">
                Fix: Memory region properties documentation incorrect
            </action>
            <action issue="JCS-161" dev="tv" type="fix" due-to="Ryan Fong">
                Fix: Dynamic regions leak memory upon dispose due to ShrinkerTask
            </action>
            <action issue="JCS-54" dev="tv" type="add" due-to="Tore Halset">
                Add soft reference memory cache
            </action>
            <action issue="JCS-78" dev="tv" type="fix" due-to="Marko Stipanov">
                Fix: RemoteCacheStartupServlet can't start with config outside classpath
            </action>
            <action dev="tv" type="add" due-to="Wiktor Niesiobedzki">
                Add verification of block disk cache key file.
            </action>
            <action issue="JCS-159" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Fix: BlockDiskCache overwrites data after loading from disk
            </action>
            <action dev="tv" type="fix" due-to="Mat Jaggard">
                Fix Javadoc for Java 8
            </action>
            <action issue="JCS-116" dev="tv" type="fix" due-to="Sebb">
                Fix: CompositeCacheManager is thread-hostile
            </action>
            <action issue="JCS-158" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Fix NullPointerException in IndexedDiskCache.addToRecycleBin(...)
            </action>
            <action dev="tv" type="update">
                Reduce synchronization
            </action>
            <action issue="JCS-153" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Fix file size limitation for Block Disk Cache and Indexed Disk Cache
            </action>
            <action issue="JCS-149" dev="tv" type="fix" due-to="Youngho Cho">
                When reading keys from disk, a StreamCorruptedException happens when a custom serializer is applied
            </action>
            <action issue="JCS-48" dev="tv" type="update" due-to="Hanasaki Jiji">
                Replace PoolAccess with a DataSourceFactory model borrowed from DB-Torque
            </action>
            <action dev="tv" type="fix">
                Fix removal of items from group cache, added several tests
            </action>
            <action dev="tv" type="add">
                Add orderly shutdown of ThreadPoolManager
            </action>
            <action issue="JCS-124" dev="tv" type="update" due-to="Richard Eigenmann">
                Make the code in Step 5 on the JCS overview page a full working class that can compile
            </action>
            <action issue="JCS-140" dev="rmannibucau" type="fix" due-to="liangjiarui">
                JCacheFilter code logic error, first hit always fails
            </action>
            <action issue="JCS-147" dev="tv" type="add" due-to="Wiktor Niesiobedzki">
                Provide file size limitation for Block Disk Cache and Indexed Disk Cache
            </action>
            <action issue="JCS-96" dev="tv" type="fix" due-to="Gregory Fernandez">
                Incomplete shutdown of RemoteCacheServer
            </action>
            <action issue="JCS-148" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                Unnecessary use of FileChannel.force() in Indexed and Block Disk Caches
            </action>
            <action issue="JCS-146" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                IndexedDiskCache: Mismatched memory and disk length (0) for 
                [DED:  pos = 63802 len = 9658] during optimization
            </action>
            <action issue="JCS-145" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                AbstractDiskCacheAttributes logs error, when directory already exists
            </action>
            <action issue="JCS-144" dev="tv" type="fix" due-to="Wiktor Niesiobedzki">
                BlockDiskCache hangs on SEVERE: Region [TMS] Failure getting from disk--IOException
            </action>
            <action issue="JCS-141" dev="tv" type="fix" due-to="validruk">
                RemoteCacheServerFactory ignores configuration
            </action>
        </release>
		<release version="2.0-beta-1" date="2015-02-19" description="JDK 1.6 based major release (beta 1)">
            <action issue="JCS-139" dev="tv" type="fix" due-to="Youngho Cho">
                PropertySetter doesn't set Enum properly. Added a test.
            </action>
            <action issue="JCS-136" dev="tv" type="fix" due-to="Youngho Cho">
                OutOfMemoryError when using compressing serializer
            </action>
            <action issue="JCS-133" dev="sebb" type="fix">
                RemoteUtils.getNamingURL does not handle IPv6 numeric addresses properly
            </action>
            <action issue="JCS-131" dev="tv" type="remove">
                Remove KeyGeneratorUtil and AddressUtil as they are not used
            </action>
            <action issue="JCS-113" dev="tv" type="fix">
                Improve error handling by bubbling up exceptions
            </action>
            <action dev="rmannibucau" type="add">
                jcache-extra module to provide basic classes based on JCache API.
            </action>
            <action dev="rmannibucau" type="add">
                Web CacheFilter to cache http responses.
            </action>
            <action dev="rmannibucau" type="add">
                OpenJPA L2 Cache based on JCache API.
            </action>
            <action dev="rmannibucau" type="update">
                Allow configuration to set its TimeFactorForMilliseconds and
                use second by default.
                This has as impact to remove "Seconds" suffix from corresponding configurations.
            </action>
            <action issue="JCS-115" dev="tv" type="fix">
                JDBCDiskCachePoolAccessManager is thread hostile
            </action>
            <action issue="JCS-118" dev="olamy" type="add" due-to="Romain Manni-Bucau">
                Add jcache implementation
            </action>
            <action issue="JCS-113" dev="sebb" type="fix">
                Potential NPE in JDBCDiskCache
                Fixed NPEs in getSize() and getStatistics()
            </action>
            <action issue="JCS-112" dev="sebb" type="fix">
                RemoteCacheServer.logUpdateInfo bug updating put count
            </action>
            <action dev="tv" type="fix">
                Fix updating of last access time, add tests for event handling
            </action>
            <action dev="tv" type="update">
                Update documentation to reflect generics and API changes
            </action>
            <action dev="tv" type="remove">
                Remove dependency on commons-lang3
            </action>
            <action dev="tv" type="add">
                Add simple JMX monitoring feature by exposing the JCSAdminBean to JMX
            </action>
            <action dev="tv" type="update" issue="JCS-109" due-to="Xiong LIU">
                Improve performance of BlockDisk.write(Serializable)
            </action>
            <action dev="tv" type="fix" issue="JCS-102" due-to="Robert Clark">
                Reworked the interfaces to make the group cache typesafe
            </action>
            <action dev="tv" type="fix" issue="JCS-108" due-to="Xiong LIU">
                Fix return value of BlockDisk.write(long, byte[])
            </action>
            <action dev="tv" type="update">
                Change package to org.apache.commons.jcs, groupId to org.apache.commons,
                artifactId to commons-jcs and version to 2.0-SNAPSHOT
            </action>
            <action dev="tv" type="fix" issue="JCS-95" due-to="Nicolas Gomez Navarrete">
                Map region names to valid file names.
            </action>
            <action dev="tv" type="fix" issue="JCS-106" due-to="Johannes Weberhofer">
                Bad comparison of int with Long.MAX_VALUE.
            </action>
            <action dev="tv" type="fix" issue="JCS-103" due-to="Pavel Novak">
                MaxMemoryIdleTimeSeconds default value is wrongly documented.
            </action>
            <action dev="tv" type="update">
                Use central thread pool instance to clean up the code.
            </action>
            <action dev="tv" type="update">
                Use type-safe enums instead of integer constants to clean up the code.
            </action>
            <action dev="tv" type="fix" issue="JCS-91" due-to="Diego Rivera">
                JCS fails to properly dispose of the lateral TCP listener thread.
                If a webapp that uses JCS lateral TCP cache is undeployed, the listener is left
                hanging with no hope for exit.
            </action>
            <action dev="tv" type="fix" issue="JCS-49" due-to="David Easley">
                Contradictory documentation on RemoveUponRemotePut default value.
            </action>
            <action dev="tv" type="add" issue="JCS-94" due-to="Andrew Leamon">
                Add getGroupNames() to all caches.
            </action>
            <action dev="tv" type="add" issue="JCS-94" due-to="Andrew Leamon">
                LateralTCPService should implement getGroupKeys.
            </action>
            <action dev="tv" type="update" issue="JCS-75" due-to="Chiat Lam">
                CompositeCache: Add method to get auxiliary caches, changed
                visibility of isExpired() to protected.
            </action>
            <action dev="tv" type="fix" issue="JCS-73" due-to="Alexander Kleymenov">
                Concurrent cache access causes values loss.
            </action>
            <action dev="tv" type="fix" issue="JCS-77" due-to="Matt Morrisson">
                NullPointerException thrown by IndexedDiskCache if IndexedDisk calls fail to
                initialize.
            </action>
            <action dev="tv" type="fix" issue="JCS-90" due-to="Diego Rivera">
                When issuing a shutDown() command, JCS fails to clean up the Queue Processor
                thread.
            </action>
            <action dev="tv" type="fix" issue="JCS-89" due-to="Diego Rivera">
                UDP Discovery fails to report correct IP address to peers for back-connect
                when InetAddress.getLocalHost() fails to return an externally-visible
                address (i.e. returns a local address)
            </action>
            <action dev="tv" type="fix" issue="JCS-88" due-to="Diego Rivera">
                Add a test to verify correct block size calculation
            </action>
            <action dev="tv" type="update">
                Change the interfaces to use generics
            </action>
            <action dev="tv" type="fix" issue="JCS-86" due-to="Roman Solo">
                Fix region properties documentation.
            </action>
            <action dev="tv" type="fix" issue="JCS-22" due-to="Michael Jordan">
                Throw an explicit CacheException when a cache manager instance cannot
                read its configuration.
            </action>
            <action dev="tv" type="fix" issue="JCS-79" due-to="Graham Leggett">
                Fix NPE in CompositeCacheConfigurator.parseRegion
            </action>
            <action dev="tv" type="fix" issue="JCS-68" due-to="Niall Gallagher">
                Made RemoteCacheServer public, added remote cache remove feature to
                JCSAdminBean
            </action>
            <action dev="tv" type="fix" issue="JCS-82" due-to="Nikunj Trivedi">
                Use oos.writeUnshared() for LateralTCPSender
            </action>
            <action dev="tv" type="fix" issue="JCS-69" due-to="Michael Stevens">
                Ensure shutdown of LateralCacheMonitor
            </action>
            <action dev="tv" type="fix" issue="JCS-11" due-to="Peter Schwarz">
                Add method for programmatic configuration to JCS
            </action>
            <action dev="tv" type="fix" issue="JCS-84" due-to="Aleksandar Ivanisevic">
                Increase precision of CREATE_TIME, fix name of UPDATE_TIME_SECONDS
                column.
            </action>
            <action dev="tv" type="update">
                Update IndexDisk and BlockDisk to use NIO in an attempt to fix
                a timing-dependent test failure.
            </action>
            <action dev="tv" type="update">
                Update build files to make JCS a true Apache Commons component.
            </action>
            <action dev="tv" type="update">
                Set UTF-8 encoding on all source files
            </action>
            <action dev="tv" type="update">
                Move site generation to Maven 2. Integrate site into Apache Commons.
            </action>
            <action dev="tv" type="fix">
                Fix VelocityServlet deprecation
            </action>
			<action dev="bayard" type="add">
			    Upgraded Commons Lang dependency to 3.0
			</action>
            <action dev="tv" type="update">
                Move to JDK 5 Generics
            </action>
            <action dev="tv" type="update">
                Move to JDK 5 Concurrent
            </action>
            <action dev="tv" type="update">
                Move build system to Maven 2
            </action>
		</release>
		<release version="1.3.3.5" date="2009-08-12" description="tempbuild">
			<action dev="asmuts" type="fix" issue="JCS-67">Fixed bug in
				indexed disk cache. Partial key removal was adding duplicates in the
				recycle bin. This lead to the multiple keys pointing to the same spot
				on disk.</action>
		</release>
		<release version="1.3.3.4" date="2009-08-11" description="tempbuild">
			<action dev="asmuts" type="fix" issue="JCS-66">Fixed bug in block
				disk cache. It couldn't handle items with more than 127 blocks. Now
				it can. (Note: for performance reasons, you should try to fit your
				items in as few blocks as possible.)</action>
		</release>
		<release version="1.3.3.3" date="2009-07-23" description="tempbuild">
			<action dev="asmuts" type="update">TCP Lateral now uses a queuing
				zombie service during recovery.</action>
			<action dev="asmuts" type="update">Refactored UDP Discovery.
			</action>
			<action dev="asmuts" type="fix" issue="JCS-60">Slots for same key
				updates now get added to the recycle bin.</action>
			<action dev="asmuts" type="update" issue="JCS-58">Added File Disk
				Cache.</action>
			<action dev="asmuts" type="fix" issue="JCS-53">Default
				properties should now work.</action>
			<action dev="asmuts" type="update">Caught Throwable in JDBC disk
				cache shrinker, so it won't die.</action>
		</release>
		<release version="1.3.3.2" date="2009-06-11" description="tempbuild">
			<action dev="asmuts" type="update">Added a compressing serializer.
			</action>
			<action dev="asmuts" type="update">Added an LHMLRUMemoryCache.
			</action>
		</release>
		<release version="1.3.3.1" date="2009-05-22" description="tempbuild">
			<action dev="asmuts" type="update">Added a clearDiskOnStartup
				configuration option for the IndexedDisk Cache. False by default.
			</action>
			<action dev="asmuts" type="fix" issue="JCS-56">Fixed data chunking
				bug in BlockDisk.</action>
		</release>
		<release version="1.3.3.0" date="2009-05-22" description="tempbuild">
			<action dev="asmuts" type="update">Made "openTimeOut" and
				"socketTimeOut" configurable on the TCP Lateral.</action>
		</release>
		<release version="1.3.2.9" date="2009-02-02" description="tempbuild">
			<action dev="asmuts" type="fix">Fixed bug in Remote Http Client
				URL creation for query strings.</action>
			<action dev="asmuts" type="fix" issue="JCS-55" due-to="Alexander Sofronov"> Fixed
				disk cache custom serializer injection.</action>
		</release>
		<release version="1.3.2.8" date="2008-12-16" description="tempbuild">
			<action dev="asmuts" type="fix">Fixed bug remote cache listener
				interface.</action>
		</release>
		<release version="1.3.2.7" date="2008-12-15" description="tempbuild">
			<action dev="asmuts" type="update">Added a simple http remote
				cache client and server.</action>
			<action dev="asmuts" type="fix">Fixed bug in the MySQLDiskCache
				optimizer. It can now use a shared pool.</action>
		</release>
		<release version="1.3.2.6" date="2008-12-01" description="tempbuild">
			<action dev="asmuts" type="fix">Fixed balking bug in
				getMatching( String pattern ) API.</action>
			<action dev="asmuts" type="fix">Fixed event naming bug in
				getMatching( String pattern ) API.</action>
		</release>
		<release version="1.3.2.5" date="2008-11-20" description="tempbuild">
			<action dev="asmuts" type="update">Added a getMatching( String
				pattern ) API.</action>
		</release>
		<release version="1.3.2.4" date="2008-?" description="tempbuild">
			<action dev="asmuts" type="update">Added the ability to inject a
				custom event queue. You simply specify the classname as the type.
			</action>
			<action dev="asmuts" type="update">Added the ability to share a
				connection pool amongst different JBC disk cache instances.</action>
		</release>
		<release version="1.3.2.3" date="2008-09-26" description="tempbuild">
			<action dev="asmuts" type="update">Added the ability to inject a
				custom RMI socket factory to be used by the remote cache server.
			</action>
		</release>
		<release version="1.3.2.2" date="2008-09-17" description="tempbuild">
			<action dev="asmuts" type="update">Added a registry keep alive and
				restore option for the remote cache server.</action>
		</release>
		<release version="1.3.2.1" date="2008-09-08" description="tempbuild">
			<action dev="asmuts" type="update">Made all disk cache managers
				handle custom event loggers.</action>
		</release>
		<release version="1.3.2.0" date="2008-08-29" description="tempbuild">
			<action dev="asmuts" type="update"> Added eventLogging to major
				auxiliaries and to the auxiliary factory interface. This allows you
				to time and monitor the internal working of the cache.</action>
			<action dev="asmuts" type="update">Moving to JDK 1.4 compliance.
				1.3 not supported.</action>
			<action dev="asmuts" type="update"> Added the ability to inject custom
				serializers into auxiliary caches.</action>
			<action dev="asmuts" type="fix" issue="JCS-40" due-to="Niall Gallagher"> Added a
				work-around to the host address resolution used by the TCP lateral
				and the remote cache.</action>
			<action dev="asmuts" type="fix" issue="JCS-38" due-to="Timothy Cronin"> Added
				getSource to IElementEvent interface.</action>
			<action dev="asmuts" type="update" issue="JCS-44" due-to="Maxim Gordienko"> Made
				spool chunk size configurable.</action>
			<action dev="asmuts" type="fix" issue="JCS-41" due-to="Niall Gallagher"> Added
				RMI socket connect timeout. Made this configurable on the server and
				client.</action>
			<action dev="asmuts" type="fix" issue="JCS-36" due-to="Matthias Kerkhoff">Fixed
				client decrement count in indexed disk cache.</action>
			<action dev="asmuts" type="fix" issue="JCS-32" due-to="Andy">Moved
				shutdown hook from disk cache to composite cache manager.</action>
		</release>
		<release version="1.3.1.0" date="2008-04-11" description="tempbuild">
			<action dev="asmuts" type="update" due-to="Chris Fairbanks"> Added getMultiple()
				method to ICache</action>
		</release>
		<release version="1.3" date="2007-06-05" description="First formal release">
			<action dev="tv" type="update"> Updated/added license headers in all
				files.</action>
		</release>
		<release version="1.2.7.9.3" date="in SVN">
			<action dev="asmuts" type="fix" issue="JCS-15" due-to="Kevin Preece"> Fixed
				partial key and group id removal bug in indexed disk cache.</action>
			<action dev="asmuts" type="fix" issue="JCS-20" due-to="Alistair Forbes"> Fixed
				partial key removal SQL syntax problem with the JDBC disk cache.
			</action>
			<action dev="asmuts" type="fix" issue="JCS-21" due-to="Michael Stevens"> Fixed a
				few minor missing locks.</action>
		</release>
		<release version="1.2.7.9.2" date="in SVN">
			<action dev="asmuts" type="update"> Added a summary page to the
				JCSAdmin.jsp that just dumps the stats for a region. It doesn't
				display all the keys.</action>
			<action dev="asmuts" type="update"> Added get, put, and remove counts
				to the lateral and remote stats. Added hit count to disk cache
				stats.</action>
			<action dev="asmuts" type="fix" issue="JCS-12" due-to="John Klame"> Fixed
				non thread safe OOS writes in the TCP Lateral Sender. This was
				causing endless loops deep down in the OOS code.</action>
		</release>
		<release version="1.2.7.9" date="in SVN">
			<action dev="asmuts" type="fix" issue="JCS-1"> Fixed last element too
				small recycle bin bug.</action>
			<action dev="asmuts" type="update" issue="JCS-2"> Added the ability to
				send all items to disk or to use the disk merely as a swap. This is
				done by setting the DiskUsagePattern on the cache attributes for a
				region.</action>
			<action dev="asmuts" type="fix" issue="JCS-3" due-to="Peter Schwarz"> Disk
				optimization now occurs in place, without using additional files. It
				is far more efficient.</action>
			<action dev="asmuts" type="fix" issue="JCS-4"> The disk cache will not
				optimize on shutdown if the freedata size is 0.</action>
			<action dev="asmuts" type="fix" issue="JCS-8"> Remote cache client
				will now shutdown properly.</action>
			<action dev="asmuts" type="fix" issue="JCS-9"> Only send memory items
				to disk auxiliaries on shutdown.</action>
		</release>
		<release version="1.2.7.8" date="in SVN">
			<action dev="asmuts" type="update"> Added the ability to schedule
				optimizations for the MySQL disk cache. It can also recover from
				optimization failure and repair the table. It's been tested and is
				running in a production environment.</action>
		</release>
		<release version="1.2.7.7" date="in SVN">
			<action dev="asmuts" type="fix" due-to="Brian Crow  @noteworthyms.com"> Fixed the array index
				out of bounds exception in the Sorted Preferential Array.</action>
		</release>
		<release version="1.2.7.6" date="in SVN">
			<action dev="asmuts" type="fix" due-to="Rick Szeto @vizible.com"> Fixed UDP discovery
				configuration problem. The discovery address was not being used. It
				was broken in the last release.</action>
			<action dev="asmuts" type="fix" due-to="Alistair Forbes"> Fixed disk cache class
				cast problem when running inside the remote cache. The disk cache
				was casting to an instance and not the ICacheElement interface.
			</action>
		</release>
		<release version="1.2.7.3" date="in SVN">
			<action dev="asmuts" type="update" due-to=""> You can now
				configure the remote cache client to not receive from the remote
				server.</action>
			<action dev="asmuts" type="update" due-to=""> Added a new xdoc
				for the Remote Cache properties.</action>
			<action dev="asmuts" type="update" due-to=""> Improved the jcs
				admin jsp: added stats details, better navigation, item lookup, and
				remove confirmation.</action>
		</release>
		<release version="1.2.7.2" date="in SVN">
			<action dev="asmuts" type="update" due-to=""> You can configure
				the remote cache to use a custom RMI Socket Factory with socket
				timeouts.</action>
			<action dev="hchar" type="fix" due-to=""> Removed redundant
				system out logging from remote cache server.</action>
			<action dev="asmuts" type="update" due-to=""> Added additional
				stats for remote cache.</action>
		</release>
		<release version="1.2.7.1" date="in SVN">
			<action dev="asmuts" type="update" due-to=""> Added a JDBC disk
				cache. It has been tested with MYSql and HSQL.</action>
			<action dev="asmuts" type="update" due-to=""> Added a special
				HSQL implementation of the JDBC disk cache. This replaces the
				previous experimental HSQL implementation.</action>
			<action dev="asmuts" type="update" due-to=""> Added a new xdoc
				for the JDBC Disk Cache properties.</action>
		</release>
		<release version="1.2.7.0" date="in SVN">
			<action dev="asmuts" type="update" due-to=""> Removed
				dependencies on commons-lang and on commons-collections from the
				core of JCS.</action>
			<action dev="asmuts" type="update" due-to=""> Increased test
				coverage.</action>
			<action dev="asmuts" type="fix" due-to=""> Fixed entry set
				creation problem in LRUMap.</action>
		</release>
		<release version="1.2.6.9" date="in SVN">
			<action dev="asmuts" type="update" due-to=""> The remote cache
				now sends a byte array to the server instead of the class. This
				allows you to run the remote server without copies of your objects
				in its classpath. This makes the remote server far easier to use.
			</action>
			<action dev="asmuts" type="update" due-to=""> Created an
				interface for cache element serializers and made a default
				implementation. This will allow use to use other serialization
				mechanisms in the future. I converted the remote cache to use the
				standard serializer.</action>
			<action dev="asmuts" type="update" due-to=""> Added several new
				unit tests.</action>
			<action dev="asmuts" type="update" due-to=""> Improved Javadocs
				throughout.</action>
		</release>
		<release version="1.2.6.8" date="in SVN">
			<action dev="asmuts" type="fix" due-to=""> Moved synchronization
				from the client to the sorted preferential array. This solved the
				index out of bounds exception that appeared periodically on disk
				cleanup.</action>
			<action dev="asmuts" type="update" due-to=""> Improved Javadocs
				throughout.</action>
		</release>
		<release version="1.2.6.7" date="in SVN">
			<action dev="asmuts" type="fix" due-to="Adam Siefker @amazon.com"> Fixed shutdown for
				lateral. Added shutdown observer framework. Changed listener thread
				to a daemon. Made executor on listener use a daemon setting thread
				factory.</action>
			<action dev="asmuts" type="fix" due-to=""> Fixed abstract inner
				class references for Jikes.</action>
			<action dev="asmuts" type="update" due-to=""> Improved Javadocs
				throughout.</action>
		</release>
		<release version="1.2.6.6" date="in SVN">
			<action dev="asmuts" type="fix"> Properties are loaded using the
				current thread's classloader by default.</action>
			<action dev="asmuts" type="fix"> When a config file is not found a
				descriptive error message is printed to the logs.</action>
			<action dev="asmuts" type="update"> Made an interface for the cache
				manager to improve testability.</action>
			<action dev="asmuts" type="update"> Auxiliaries are assigned a cache
				manager and the lateral TCP has a settable source id, so it can be
				tested.</action>
			<action dev="asmuts" type="update"> Increased JGroups version to 2.2.8.
				It works again. The old JGroups didn't work for unknown reasons.
			</action>
			<action dev="asmuts" type="update"> Cleaned up some javadocs.</action>
			<action dev="asmuts" type="update"> Improved info level logging for TCP
				lateral.</action>
			<action dev="asmuts" type="update"> Added configuration properties
				xdocs for TCP lateral, indexed disk, and memory cache.</action>
			<action dev="asmuts" type="update"> Created concurrent tests for TCP
				lateral to verify correct region behavior.</action>
			<action dev="asmuts" type="update"> Made BDBJE work with new auxiliary
				changes.</action>
			<action dev="asmuts" type="fix"> UDP discovery no longer activates
				if the lateral type isn't TCP.</action>
			<action dev="asmuts" type="fix"> Reduced lateral get timeout to 1
				second, rather than 10. We still need to disable gets when a timeout
				occurs.</action>
		</release>
	</body>
</document>
