* = bug fix + = new feature or improvement ! = change that makes the new behavior incompatible with the previous behavior -------------------------------------------------------------------------------- Release 1.2, 2011.04.10 ================================================================================ + Added the org.entityfs.at4jzip.At4jZipFileSystemBuilder for building Zip (and JAR) file systems based on the At4J Zip implementation. http://www.at4j.org/ * Zip files with root nodes occurring after other nodes are now allowed by the Zip file system. Release 1.1.5, 2010.05.26 ================================================================================ ! Backslashes are now allowed in entity names and in AbsoluteLocation and RelativeLocation paths. * Added entity name validation to the EntityClassloader so that an invalid entity name results in a ClassNotFoundException. + Added the EntityLocations.isEntityNameValid method. ! The FS and RAM file system implementations have now been moved from the core Jar to entityfs-fsfs and entityfs-ram, respectively. + Small performance enhancement in FSDirectoryAdapter.getChildEntityType. Release 1.1.4, 2009.09.21 ================================================================================ + Upgraded HeliDB to version 1.1.1. + EFileNameExtensionFilter constructors now take Collection instead of Set arguments. + Made a lot of EntityFilter implementations non-final. + Made AbstractFSEntityAdapter.getAbsolutePathInBackend non-recursive. + Reimplemented path validation and normalization in AbsoluteLocation and RelativeLocation to improve performance. + Updated the documentation style sheet. + Added the getFile method to FileReadableFile and FileWritableFile. + Added varargs constructors to the EFileNameExtensionFilter. */! Fixed a bug in the PollingDirectoryMonitorer that made it report files as stabilized although they were not when running on Windows. This may change the behavior of PollingDirectoryMonitorer when run on Windows. + New toString method on AbstractChildEntitiesEvent. Release 1.1.3, 2009.07.15 ================================================================================ + Upgraded HeliDB to version 1.0.2. + Moved the MetadataUnixAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.unix.metadata package. Created a stub proxy class in the old location. + Moved the MetadataNtfsAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.ntfs.metadata package. Created a stub proxy class in the old location. + Moved the MetadataCustomAttributesCapabilityProvider class to the org.entityfs.cap.entityattrs.custom.metadata package. Created a proxy class in the old location. + Reduced the number of projects in the Eclipse workspace. + Added the FileWritableFile class. + Made the toString methods of file systems and entities return more relevant texts. ! Removed the FileSystemImplementation.getToStringDescription and FileSystemDelegate.getToStringDescription methods. + Added more trace logging to the EntityClassLoader. + Reimplemented the build script in Groovy. + Added the DirectoryContainsFilter. + Added return types to a lot of methods in Files and Entities. + Added the GrepFilter and FGrepFilter. + Wrote the Using EntityFS in a Groovy program article. + Added bitwiseNegate and isCase methods to AbstractConvenientFilter. It makes inheriting classes easier to use in Groovy programs. + Added the Files.lineIterator methods. + Added the CloseableIterator interface. Release 1.1.2, 2009.04.13 ================================================================================ ! Deleted the AbstractRandomAccessProxy class. + Added the Entities.deleteRecursively method with an boolean argument that controls whether the passed entity itself will be deleted or not. + The run_unit_tests.js script now supports Emma coverage analysis. + Read/write locking can now be debugged by setting the entityfs.locking.debug system property. + Added EntityLocations.convertWindowsSlashes * Enabled validation of relative paths. Release 1.1.1, 2009.03.17 ================================================================================ + Reintroduced the EntityFilter interface for documentation purposes. + Added the Entities.copy methods that can copy collections of source entities. Release 1.1, 2009.02.06 ================================================================================ + Upgraded HeliDB to version 1.0.1. + Made FilteringIterator more generic. + Added the EntityFilterToEntityAndRelativeLocationFilterAdapter class. + Added the Files.measureDataSize method. + Added the Files.copyContents method. + Added the Directories.size method. + Added the OverwriteStrategy interface and implementations Made all overwriting classes use the strategy interface. + Added the CountingDataSource class. ! Added the generic Filter and ConvenientFilter classes with implementations and refactored the existing filters to inherit them. Deleted EntityFilter, ConvenientEntityFilter and EntityFilter implementation of logic functions. Use Filter instead of EntityFilter. ! Added the available() method to the DataSource interface. + Added the DataSink and DataSource interfaces and the InputStreamToDataSourceAdapter, OutputStreamToDataSinkAdapter, DataSourceToInputStreamAdapter and DataSinkToOutputStreamAdapter classes. + Added the Charsets support class. ! Moved the getSize and getDataSize methods from ReadWritableFile to ReadableFile. Made Files.getSize and getDataSize take ReadableFile arguments. + Added the StreamUtil.readChannelFully method. ! Renamed LockAwareRandomAccessProxy to LockAwareRandomAccess. + Added section on input and output stream implementations to the utility classes chapter in the Programmer's guide. + Added section on adapters to the utility classes chapter in the Programmer's guide. + Wrote the What is a file? chapter in the Programmer's guide. ! Deleted the LockAwareGatheringByteChannel and LockAwareScatteringByteChannel classes and added the LockAwareWritableByteChannel and LockAwareReadableByteChannel classes to replace them. ! WritableFile now returns WritableByteChannel instead of GatheringByteChannel. ! ReadableFile now returns ReadableByteChannel instead of ScatteringByteChannel. + Deletable now extends WriteLockable. + Added the ClasspathNamedReadableFile class. + Added the GZipReadableFile and GZipWritableFile classes. + Copied DataInputOutputRandomAccessAdapter to the new RandomAccessToDataInputOutputAdapter class and made DataInputOutputRandomAccessAdapter deprecated. + Copied RandomAccessInputStreamAdapter to the new RandomAccessToInputStreamAdapter class and made RandomAccessInputStreamAdapter deprecated. + Copied RandomAccessOutputStreamAdapter to the new RandomAccessToOutputStreamAdapter class and made RandomAccessOutputStreamAdapter deprecated. + Added the Entities.deleteRecursively method. + Added the Entities.rename method that uses an EntityRenameSpecification. + Added the Entities.copy method that uses an EntityCopySpecification. + Upgraded Docbook spec version to 4.5 for documentation. + Fixed ByteArrayRandomAccess.read(byte[]...) methods to return -1 instead of 0 at EOF + Added the RangeRandomAccess class. + Files.readTextFile no longer throws UnsupportedEncodingException. ! Trailing slashes are no longer allowed in AbsoluteLocations or RelativeLocations. + ReadWritableFileAdapter now implements NamedReadableFile. + Added an option to the RandomAccessInputStreamAdapter and the RandomAccessOutputStreamAdapter that cause them to not close the underlying RandomAccess when the adapters are closed. + Added getWrapped methods to WrappedIOException, WrappedClassNotFoundException and WrappedMalformedURLException. + Added the ChecksumInputStream. + Added the CountingInputStream and the CountingOutputStream. * Fixed a bug in the RangeInputStream that made the byte array read methods return 0 instead of -1 at EOF. + Added the PropertyValue object. Add the Properties.get-/putPropertyValue, propertyValues and propertyEntrySet methods. + Added the EntityLocations.parseLocation method. + The DefaultUnixAttributesFactory and DefaultNtfsAttributesFactory constructors now take a UnixEntityMode argument instead of a numeric code. ! Refactored UnixEntityMode to be immutable. + Added the Glob class. It is the glob pattern version of Java's Pattern class. + Added the getPropertiesMatching methods to Properties. * Fixed a bug in the ByteArrayRandomAccess: It did not increment the file position when reading data into an array. + Added the RangeInputStream class. + EntityLocation.getPathSegmentStack now returns a LinkedList. It is the most Deque-like class in Java 5. + Added the Directories.getLocationAware*Iterator methods. + Added the LocationAwareDepthLastIteratorImpl and LocationAwareDepthFirstIteratorImpl classes. + Added the EntityAndRelativeLocation class. + Added the Directories.newDirectory method with a RelativeLocation argument. + Added the CompoundEntityHolder. + Added the Entities.getValidEntity and getValidEntityOrNull methods. + Added the WrongEntityTypeException. Let NotAFileException and NotADirectoryException inherit it. * Fixed a bug in the ReadableByteChannel and WritableByteChannel. They assumed that limit == capacity of the target buffer. + Added the Directories.find and findEntities methods. + Added the LockCommandUtil.lock varargs method. + Added the ZipFiles.zip methods. + Reimplemented the ZipFiles.unzip method to use a ReadableFile instead of an EFile argument. Added an overwrite option to overwrite entities in the target directory. + Added the varargs LockCommand method to the LockCommandExecutor interface. ! Deleted the org.entityfs.EntityObserver interface. Use org.entityfs.event.EntityObserver instead. ! Deleted LockEntitysParentForWritingCommand (use LockParentForWritingCommand instead). ! Deleted LockEntitysParentForReadingCommand (use LockParentForReadingCommand instead). ! Deleted LockEntityForWritingCommand (use LockForWritingCommand instead). ! Deleted LockEntityForReadingCommand (use LockForReadingCommand instead). Release 1.0, 2008.08.27 ================================================================================ + Added DirectoryDifferentiator, DirectorySynchronizer, DirectoryTreeDifferentiator and DirectoryTreeSynchronizer. + The logger name of Jdk14LogAdapter is now configurable. + The Metadata entity attribute capability now uses a HeliDB B+ Tree database instead of a homebrewed one. + LogAdapterHolder now implements LogAdapter. ! Changed the behavior of file system builders to create file systems with a minimal amount of features by default. + Added the Entity, EFile and Directory inheritance charts. + Moved the copy methods from EFile to ReadWritableFile, Let them return the number of bytes written. + EntityView.copy now returns Set instead of Set. ! License changed to LGPL v3. + The source distribution now contains a working Eclipse workspace for developing EntityFS. + Added ByteArrayRandomAccess. + Added the WriteOnlyException. + ByteArrayReadableFile now implements RandomlyAccessibleFile. + Added the WritableByteBufferChannel class. + Added copy methods to StreamUtil that take an argument for the maximum amount of data to copy. + The StreamUtil.copy methods now return the total number of bytes copied. + Added the RandomAccessOutputStreamAdapter. + Changed the file systems' default log adapter from a Jdk14LogAdapter to a StdoutLogAdapter. + Added the AbstractReadWriteLockableProxy class. + Added the getLockable method to the LockCommand interface. Deleted the FileSystemLockCommand and EntityLockCommand interfaces. + Introduced the ReadWriteLockable interface. It is implemented by all classes that implement ReadLockable and WriteLockable. * Base64InputStream now works for input with spaces in it. + Gave TwoObjects and Pair equals and hashCode methods. ! Changed the FileChannel-returning methods of FCFileChannel to use RandomAccessFileFactory:s instead of FileInputStreamFactory:s + Moved file size methods to ReadWritableFile interface. + Added the ReadWritableFile.replaceContents and the Files.replaceContents methods. + Added the Deletable interface. Implemented by Entity and ReadWritableFile. + Added the FileSystem setReadOnly method. + Added the Files.writeData method. + Added the DataInputOutputRandomAccessAdapter class. + Added the ReadWritableFileAdapter.getFile method. ! Moved AggregatingIterator to the org.entityfs.support.util package. * Fixed a bug in the Zip and Jar file systems that made some of the contents of certain Zip and Jar files invisible. + Decreased memory usage for Zip and Jar file systems. * Fixed locking and access controls on DirectoryView.iterator implementations. ! Reimplemented DepthFirstIteratorImpl and DepthLastIteratorImpl to make them more memory efficient. Removed the options to sort results from the iterators. + Made the directory iterator use less memory. ! Changed the return type of DirectoryDelegate.getEntityNames to a String array. Implemented the ArrayUtil utility class. !/* Entity names containing asterisks (*) are now invalid. ! Renamed the following classes: - LockEntityForReadingCommand -> LockForReadingCommand - LockEntityForWritingCommand -> LockForWritingCommand - LockEntitysParentForReadingCommand -> LockParentForReadingCommand - LockEntitysParentForWritingCommand -> LockParentForWritingCommand + Added the EntityView.copyAttributes and Entities.copyAttributes methods. Reimplemented IteratorCopier to use it. + Removed a lot of generics that only made things messier from the implementation. + Added the EntityView.setLastModified method + Added the copy method with a boolean argument for copying entity attributes to EntityView. Made the old copy method deprecated. Introduced the requirement that a read lock on an entity's parent directory is required for copying it. Made the entity attributes capabilities honor the preserve attributes flag. Added new copy methods to Entities and IteratorCopier. New tests. Release 1.0-rc2, 2008.02.10 (not released to site) ================================================================================ + Minor performance tweaks. + Reduced the memory footprint of entity objects. The drawback is that entity objects now use more thread synchronization than before. + Added the isDummy() method to EntityLock. + Added the CompoundEntityLock class. + Added the AggregatingEntityRepository class. ! Deleted the StatInfo class and the EntityView.stat method. Release 1.0-rc1, 2008.02.03 ================================================================================ ! Moved the AccessGranter and AccessGranterAccessController to the org.entityfs.util.security package. + EntityView:s now register themselves as listeners on their viewed entities (or views) the first time someone registers a listener on the view. This is to prevent runaway listener registration and memory leaks. + Removed the requirement that the entity must be locked for reading when EntityView.lock is called. * Fixed the EntityIteratorToJarEntryInfoIteratorAdapter so that it does not create a JarEntityInfo for the file's root directory, if it is returned from its adapted iterator. The JarOuptutStream puts the manifest first in the file, which resulted in invalid Jar files. + Added the EntityView.isDeleted() method. + Added a LogAdapterHolder parameter to the CapabilityProviderImplementation.proxyFileSystemDelegate method. + Added the ECNamedEntityAttributes capability interfaces. No implementations yet. ! Moved AbstractAccessController and DisabledAccessController to the org.entityfs package. + Split the AbstractFileSystemBuilder into AbstractFileSystemBuilder and AbstractFileSystemBuilderImpl + More and extended documentation. ! Removed the Directory.overwrite method. It did not work very well with metadata. + Added RandomAccess.getMode and addCloseObserver methods and the RandomAccessCloseObserver interface. + Improved documentation of events in the API documentation. + Added information on which jar file a class, interface or enum is in to its API documentation. + Different Javadoc sets for the source and binary distributions. + Added FSCFileResolvableUtil.getEntityForFile and FSCUriResolvableUtil.getEntityForUri. ! Made EntityCapabilityType, FileSystemCapabilityType and the capability getter methods on FileSystem and EntityView generic. + Gave the Base64InputStream an available method that returns fewer bytes than the default implementation. + Added the EFile.getSizeNoLocking method. + Added the UnixEntityModeAccessController. + Made it possible to pass several setup locks to the EntityView.copy method. + Added the getLockCommandsForAccessControl, setUpAuthorizationContext and tearDownAuthorizationContext methods to the AccessController interface. + Added the LockCommand and LockCommandExecutor interfaces and implementations. Gave FileSystem an getLockCommandExecutor method. + Added the FCRandomAccess entity capability, supported by all files that can be opened for random access. + Added the EntityDelegate.isReadOnly method. + Added the abstract isReadOnly method to AbstractFileSystemBuilder + implementations in all subclasses. ! Changed signature of CapabilityProviderImplementation.proxyFileSystemDelegate method. + Added the AbstractAccessControllerSubject, UidGidSubject, AbstractAccessControllerUidGidSubject, AccessControllerSubjectImpl and AccessControllerUidGidSubjectImpl classes and interfaces. + Implemented the TestApp for running all unit tests in the same JVM. + Added the Unix entity attributes capability, implemented to store attributes in metadata. + Added the NTFS entity attributes capability, implemented to store attributes in metadata. + Added the FileSystem.supportsCapabilityForEntityType method. Added the method to FileSystemDelegate too. ! Moved verifyHasXAccess methods from Entity to EntityImplementation. Added verifyHasXAccessToParent methods to EntityImplementation. ! Changed method signature of CapabilityProviderImplementation.proxyRootDirectoryDelegate. ! Changed method signature of EntityDelegate.rename. * Fixed locking checks in DirectoryImpl.containsEntity. Also removed locking from that method (a bug). + Added EntityLocks.lockParentForReading and lockParentForWriting. + Added EntityHolder.containsEntity(EntityView) (EntityHolder is implemented by for instance DirectoryView). + Added EntityDelegate.getFileSystem method. + Added TimerTicker.setLogAdapterHolder method. + Added start of monitorer in PollingDirectoryMonitorer in Programmer's guide. + Added the UnexpectedEofException ! Changed exception thrown by EntityImplementation.assertIsReadLocked and assertIsWriteLocked to ReadLockRequiredException and WriteLockRequiredException, respectively. Added assertParentIsReadLocked and assertParentIsWriteLocked methods. + Added EntityView.supportsCapability and getCapability methods. + Added the NtFileAttributes and UnixEntityMode classes + Added the EntityView.getType method. + The source distribution now contains the documentation sources. + Testdata is now only included in the source distribution. + Added the directory metadata capability provider implementation FileBasedDirectoryMetadataCapabilityProvider + tests + doc. * Fixed bug when copying from file metadata enabled file system to metadata- unaware file system using the COPY metadata copy strategy. + ECNamedMetadata.getMetadataFileNames now returns the set of names of metadata files that exist by the time that the method is called. + Refactored the file-based metadata capability. + Defined the FSCDirectoryMetadata file system capability. Made the propfile metadata capability provider support it. + Modified locking requirements to also accept a lock on the parent directory for the following methods: EntityView.getLastModified, stat, canRead, canWrite, isValid and EFile.getSize. + Added the flush method to the RandomAccess interface. + Moved the SymbolicLinkFilter to org.entityfs.cap.symlink.util package. * Fixed so that files don't emit EntityModifiedEvent:s if the client closes an open output stream / channel on it without ever writing to it. + Unit tests for all examples in the Programmer's Guide. + If a Zip or Jar file system is built on a file entity, the entity is now locked for reading during the file system's lifetime. + Added the Entities.copyFileContents methods + tests. ! Renamed the DirectoryViewPollingMonitorer to PollingDirectoryMonitorer and the DirectoryViewMonitorer to DirectoryMonitorer. ! Removed AbsoluteEL + AbsoluteEntityLocation and RelativeEL + RelativeEntityLocation (deprecated since 1.0-beta7) + Added EntityView.getLastModified and made the stat method deprecated. Made the StatInfo interface deprecated. Added Entities.getLastModified. + Added Entities.canRead() and Entities.canWrite(). + Added the TempFileBackedRandomAccess + tests ! Threw away InputStreamFactory and added ObjectFactory instead. ! Rearranged contents of partial jars. + Added the FileReadableFile class. + Added meta tag to documentation pages to tell browsers that they are encoded in UTF-8. Release 1.0-beta7, 2007.10.09 ================================================================================ + Documentation updates. + Defined and implemented the getToStringDescription() method on FileSystemImplementation and FileSystemDelegate + Improved the toString methods of files, directories, symbolic links and file systems. ! Renamed EntityImplementation.getNameNoLocking to EntityImplementation.getAbsoluteLocationNoLocking and changed its responsibility. ! Implemented AbsoluteLocation as replacement for AbsoluteEntityLocation + AbsoluteEL and RelativeLocation as replacement for RelativeEntityLocation + RelativeEL. The previous classes are marked as deprecated. + Hid some compiler warnings with @SuppressWarnings. + Implemented a final getThis() on AbstractFileSystemFactory and AbstractZipCreator. Removed implementations from subclasses. * Fixed bug in Base64InputStream and Base64OutputStream. Made them use alphabet defined in RFC 3548. + Added StreamUtil.readStreamFully. Made Files.readBinaryFile use it. + Added RandomAccessInputStreamAdapter. + Added InputStreamFactory, ByteArrayInputStreamFactory, ReadableFileInputStreamFactory and InputStreamBackedRandomAccess. + Documented that RandomAccess methods throw IllegalStateException if the object is closed. + Added AbstractRandomAccessProxy. + Made RandomAccess.skipBytes work with long:s instead of int:s. Release 1.0-beta6, 2007.08.02 ================================================================================ + EntityNameComparator is now Serializable + Added the ReadWritableFileAdapter for adapting a java.io.File + Added Files.writeText and Files.appendText with Charset argument. ! Changed charset name argument to Charset for Files.readTextFile + Added OsPlatform.IS_MACOSX + Upgraded JUnit to version 4.4. + Improved build script and updated to latest Schmant syntax. + Removed FileSystemAdapterCapability + FileSystemAdapterCapabilityType + implementations. They are not used any longer. * Fixed a bug that made the RAM file system forget about contents of directories after a while. Introduced the NonForgettingChildEntityManager + factory + unit tests. + Gave ChildEntityManagerFactoryImpl and ChildEntityManagerImpl a LogAdapterHolder. * Fixed clearing of stale entities in the ChildEntityManagerImpl. + Added the EntityImplementation.createLockInternal method. + Added the IteratorDeleter.deleteEntities method. + Documentation updates. + Introduced init() methods on EntityImplementation, EntityDelegate, EntityAdapter, FileSystemImplementation, FileSystemDelegate and FileSystemAdapter + Introduced the FSFileSystemBuilder interface for builders of File-based file system. + Added getDataSize to EFile + Files + unit tests. + Adapted build_from_eclipse.js to latest Schmant version + Added finalizer to ZipFileSystemAdapter that closes the Zip file if it is open. + More unit tests + Added long, TimeUnit constructor to TimerTicker. Release 1.0-beta5, 2007.05.01 ================================================================================ + Reviewed the architecture overview and the programmer's guide. + Added PropertiesUtil.saveToFile + Added StorableProperties and StorablePropertiesImpl + unit tests + documentation. + Added ECMetadata and ECNamedMetadata capabilities + unit tests + ECMetadataUtil and ECNamedMetadataUtil utility classes + documentation. + Upgraded JUnit to version 4.3.1 + Renamed FileSystemDelegateImpl to AbstractFileSystemDelegate and made it abstract. (This reflects better how it is actually used.) + Added FileSystem.getSupportedCapabilities and FileSystem.getSupportedEntityCapabilities + unit tests. + Removed org.entityfs.build classes from the distribution jar. + Added the getSymbolicLink methods to DCSymbolicLinkUtil. ! Refactored EntityDelegates and FileSystemBuilders to make them more usable. This breaks all existing capability and file system implementations... + Added EmptyRandomAccess. + Added AbstractSymbolicLinkDelegateProxy. Release 1.0-beta4, 2007.03.23 ================================================================================ + Added UrlReadableFile + unit tests. + Added ReadableByteBufferChannel + CharSequenceReadableFile + unit tests. + Updated build script to latest Schmant syntax. Release 1.0-beta3, 2007.03.19 ================================================================================ + Wrote section about tuning file system parameters in Programmer's guide. + Added Directories.getAll*Matching methods + unit tests. + Made Directories.get*Matching accept directory hierarchy globs + unit tests. + Added the ZipFiles utility class + unit tests + doc. + Added RandomlyAccessiblyFile and RandomAccess. Implemented for FS FS and Ram FS + Files utility methods + unit tests. + Refactored internal entity workings. Added delegates that capability providers can proxy. + Added the Files.writeFromFile, appendText and writeText methods + unit tests. + Added the EntityRecentModificationFilter and EntityLatestModificationTimeFilter + unit tests. * Fixed bug in Directories.getChildRelativeLocation. + Introduced the ZipFileEntryInfo interface and refactored away the ZipEntryInfo dependency to entity objects. Added the ManualZipEntryInfo, ManualZipFileEntryInfo, ManualJarEntryInfo and ManualJarFileEntryInfo classes. + Introduced the Named and NamedReadableFile interfaces. Implemented ManualNamedReadableFile, NamedReadableFileAdapter + unit tests. + Made ZipEntryInfoImpl and JarEntryInfoImpl use AbsoluteEntityLocation instead of RelativeEntityLocation. + Added the TwoObjects class. Refactored Pair to inherit it. + Made the AggregatingIterator able to use any kind of objects, not just EntityViews. + Updated build script to latest Schmant syntax. + Added the getClassOrNull, getLogAdapter and getClasspath methods to the EntityClassLoader. Made the internal logging methods protected instead of private. + Added CompoundZipEntryInfoProvider, FilteringZipEntryInfoProvider and ZipEntryInfoProviders classes + unit tests. + Made ZipEntryInfo and ZipEntryInfoProvider use EntityView instead of Entity. Release 1.0-beta2, 2007.02.22 ================================================================================ + Extended and restructured the Architecture guide and the Programmer's guide somewhat. + Javadoc fixes / cleanup. + Added ManualEntityListable + unit tests. + Added getLockAcquiringStrategy method to FileSystem. + Made FileSystem.getLockAdapterFactory return EntityLockAdapterFactory instead of LockAdapterFactory. ! API CHANGE: renamed getEntity to getLocked on EntityLock interface and made the return type Object instead of Entity. Now EntityLock implementations can be used as locks for non-entity objects too. (For instance for non-entity EntityRepository implementations.) Renamed setEntity on LockTimeoutException to setLocked. + Refactored DirectoryView-using utility class methods to use EntityHolder, EntityListable and EntityRepository instead. + Extracted the EntityHolder, EntityListable and EntityRepository interfaces from EntityAcceptingEntityView and DirectoryView. + Added the ByteArrayReadableFile and ByteArrayWritableFile classes + unit tests. + Moved DEFAULT_BUFFER_SIZE from AbstractFileSystemBuilder to FileSystemBuilder. + Refactored EFile-using utility class methods to use Readable-/WritableFile instead (mainly in Files). + Extracted the ReadableFile, WritableFile and ReadWritableFile interfaces from EFile. Implemented the AbstractReadableFile and AbstractWritableFile classes. + Extracted the ReadLockable and WriteLockable interfaces from EntityView. + Added the EntityLocations utility class + unit tests. Moved static methods from AbstractEL to it. + Added the create(EntityLock) method on AbstractZipCreator + Wrote section about UncheckedInterruptedException in Programmer's guide + Added toString methods to all EntityFilters + Deleted EntityParentFilter and implemented ParentFilter, SuperParentAndFilter and SuperParentOrFilter + unit tests + updated Programmer's guide + Added caseSensitive flag to EFileNameExtensionFilter + unit test + Added getEntity-/-File-/-DirectoryMatching and containsEntityMatching methods to Directories + unit tests + Bumped Programmer's guide version to 1.0-pre2 + Added Programmer's guide section on entity filters + Rewrote Programmer's guide section on iterator utilities. Added text on recursive iterators + Added Iterators utility class + unit test + Renamed EntityNameStartsWithFilter to EntityNamePrefixFilter + Added FSCFileResolvableUtil.supportsCapability + Added FileSystems.getTextFile + unit test ! Renamed ParentFilter to EntityParentFilter + Added org.entityfs.util.filter.regexp filters + unit tests + Split FCFileBacked's openFileForWrite to openFileForWrite and openFileForAppend for consistency + Added channel methods to EFile, FCFileBacked + unit tests + Updated build script to latest Schmant version syntax + Added the EntityNameStartsWith filter + unit tests + Introduced the CapabilityVisitor to handle capabilities for file system implementations. Makes it easier to use generic file system implementations. - Renamed AbstractFileSystemImplementationProxy to EmptyFileSystemImplementationProxy (not abstract anymore) + Introduced FCAppendable and FSCAppendableFiles, currently supported by all read/write file systems. As a consequence, a few classes were moved around * Fixed Files.readBinaryFile so that it handles files with a content length != file length correctly (GZipped files, for instance) + Added setBufferSize method to FileCopyStrategy. Added setBufferSize method to FileSystemBuilder. Added getBufferSize to FileSystem. Added bufferSize property to SupportObjects + Added Reader/Writer CopyStreams method to StreamUtil + Added writeFromReader/-InputStream, appendFromReader/-InputStream and appendFromFile to Files + unit tests + Added openForRead/-Write/-Append methods to Files that do their own entity locking. Updated Programmer's guide + Added getFile and getDirectory methods to Directories + unit tests. Updated Programmer's guide and Javadocs. Changed all calls to getEntity that casted the results to calls to the getDirectory or getFile + Added EntityLocks.lockAll + unit tests + Added EntityNameComparator + unit tests + Added listEntities(Comparator) methods to Directories + unit tests + Added the constructor LogAdapterHolder(LogAdapter)