Newsflash
The new version 0.3 of the  Recoin Library has been released on 20-April-2005 and is available for download at Sourceforge. See the Download section for details.
Recoin Library Changelog PDF Print E-mail

This page describes the changes incorporated into the different versions of the Recoin Library over time. The latest changes are listed first.

The following typographic conventions are used throughout this website:

  • Anything related to  the Java Programming Language is written in Courier New.
  • Filenames are bold.
  • XML Elements are written in italic.

 

    The following changes have been made in Recoin 0.3:

    • There have been major changes to the packet structure to have a more meaningful division of classes.
    • The way elements in the IContainer are adressed has been changed now using an Object  of new class ContainerID. All classes dealing with a container have been modified accordingly. The ContainerID is stored in IComponentSupport objects when they are extracted from the container.
    • The relation between IComponent, IComponentWorker and ComponentRunnable has been changed. The component worker has no longer access to the component that loaded it, the workers attributes are passed to it by the component before initialization. The ComponentRunnable can use the new class RunnableAccess to access parameters and store results.
    • The abstract ComponentWorker class now possesses two maps for attributes and parametes which can be used by programmers to specify the names and optional default values which are later provided by the framework at runtime.
    • The ComponentWorker possesses another two maps to store objects of the new class InputType which can be used to specify that a certain attribute or parameter is of a special type. By default, all values are stored as String objects. The framework uses the input types to verify the validity of user input at runtime.
    • The interface XMLTransformable is now used by more more classes allowing most objects, including the container, to be stored in and read from XML files.
    • Most classes of the net.sourceforge.recoin.session package have been bug-fixed, because they did not yet work properly in the previous release.
    • The hierarchy of classes and interfaces in package net.sourceforge.recoin.repository.core has been refactored to be more consistent. The xxxView classes now also possess corresponding IxxxView interfaces.
    • The relational schema of the MySQL database used to store the repository data has been changed to allow components to possess default attributes and parameters as well as on a per module basis. Users migrating from an older version have to rebuild their databases!
    • The ComponentSupport class has been extended with special behavior to provide children in case the IData object it holds is based on the IDataList interface.

    The following changes have been made in Recoin 0.3a:

    • Recoin is no longer an application by itself. It has been reduced to a library which is supposed to be used by other software programs providing user interfaces, etc. Therefore the main controling class ApplicationManager has been removed as well as the start and stop scripts in the binary distribution.
    • The adminstration interface in the form of a web container has been dropped in this release, along with the corresponding package net.sourceforge.recoin.web and is no longer maintained.
    • The seperate package tree 'recoinx' for extensions has been dropped and is no longer maintained.
    • The package net.sourceforge.recoin.gui has been dropped and is no longer maintained.
    • The package structure and content have been subject to large refactorings which are not yet complete in this release. Be prepared to find classes at different locations in the upcoming release 0.3.
    • The package net.sourceforge.recoin.test is now distributed separately.
    • A lot of classnames have been refactored to provide more meaning or simplicity. For example, the character sequence 'Recoin' or 'Retrieval' has been removed from many classnames.
    • The Repository class has been given greater power to control its content.
    • Generally, lots of interfaces have been extracted from classes to be more flexible when extending and subclassing.
    • The use of type java.util.Vector has been changed in most classes to use a java.util.List now instead. Most of the Getter-methods returning the contents of these lists have been changed to return fixed-size arrays.
    • All objects which are stored in the repository now implement methods to serialize and deserialize themselves into XML strings making storage and network transfer a lot easier.
    • The new AbstractFactory has been introduced to create all classes that are loaded via reflection. This opens the opportunity to have different factories implementing different loading mechanisms.
    • The PropertiesReader class has been replaced by the AbstractConfigurationManager singleton which is used to read any relevant data that cannot be stored in repositories, e.g. information about available repositories.
      This approach also offers the possibility to have different configuration manager implementations for different environments.
    • The ComponentSupport class has been split up using a bridge pattern. An IComponentSupport is still used to store and pass data between components inside the framework, but it know contains an additional data object which represents the actual user data. People contributing their own data classes now have to implement the IData interface instead of IComponentSupport.
      Keeping these two class hierarchies separate allows us to further develop the ComponentSupport class without breaking the API for user contributions, and vice versa.
    • Lots of bug fixes. Too many to list them here.

    The following changes have been made in Recoin 0.2.9.2:

    • Fixed bug in RuntimeManager that caused modules to be activated even though they weren't supposed to be.
    • Class ApplicationManager now sets the system property 'recoin.home'.
    • Class RECOINException now uses different error levels similar to the Log4j error levels.
    • Created a new package recoin.test to store all JUnit test classes and suites.
    • Finished implementation and testing of classes RetrievalOrder and RetrievalChain.
    • A RetrievalCycle now correctly uses a RetrievalChain to determine the flow of the retrieval process.
    • All XML processing now done via JDOM intead of DOM4J.
    • The static variables representing different module groups in class ModuleGroup have been removed. The group information from the repository is now used instead. This means that the RetrievalCycle is no longer confined to a fixed number of groups, but can now be extended to comprise any groups that are defined in the repository. The order in which they are addressed is determined by the RetrievalChain.
    • Moved the interpretation of the RetrievalChain and the creation and collection of ComponentRunnable objects from class Module to class RetrievalCycle. The cycle is now also responsible for starting the runnables.
    • Fixed bug in the rest of the ComponentWorker subclasses where createRunnable methods still returned NULL instead of throwing ComponentWorkerExceptions when they are unable to create a ComponentRunnable object.
    • The SessionManager now is implemented as a singleton which can be obtained by calling SessionManager.getSessionManager().
    • New class recoin.system.Integrator which encapsulates everything concerning the core objects ModuleGroup, Module, Component. The central functionality of loading and unloading objects at runtime is also handled here.
    • The RuntimeManager now uses a Integrator object.
    • Replaced classes IllegalModuleException and IllegalComponentException with class IllegalObjectException.
    • Refactored mechanism to synchronize repository and Integrator. All update and create actions are now conducted via the RepositoryManager which fires StateChangedEvents. The Integrator can now respond to these events and update its state accordingly.
    • The CLEFClient now has a text area where a RetrievalChain for a query can be specified manually as XML string.

    The following changes have been made in Recoin 0.2.9.1:

    • CLEFClient and CLEFConnector have been enhanced:
      • It is now possible to specify and process the entire topics file in the CLEFClient.
      • The CLEFConnector has a queue now for the client requests. Only one request at a time is run though in order to minimize consumption of system resources.
      • A run ID can be specified in the CLEFClient.
      • The CLEFConnector now returns the entire RetrievalContainer to the CLEFClient.
      • The CLEFClient now writes all ResultList objects to a specified directory both as a XML file and in the official TREC format. The XML representation of the RetrievalContainer is also saved in a file.
    • Added toXML() method to both TimeLog and DurationStamp.
    • Added toXML() method to interface ComponentSupport and all implementing classes to provide a XML representation of the object.
    • Added toXML() method to class RetrievalContainer which currently outputs the TimeLog and exceptions.
    • XML representation of all ResultLists is no longer 'UPPERCASE' but 'MixedCase'.
    • New ComponentWorker 'CLEFModuleMerger'.
    • Class ResultList now stores a Query object. Therefore it is no longer necessary to store the CLEFTopic in CLEFResultList and CLEFMergedResultList.
    • New interface recoin.system.RepositorySupport which is implemented by interfaces Component, Module und ComponentSupport.
    • Fixed bug in method equals(Object) of interface ComponentSupport and all implementing classes.
    • Fixed bug with Calender instance in TimeLog that always returned the same time.
    • Fixed bug in subclasses of CLEFMySQLAdapter. The different createComponentRunnable methods now throw ComponentWorkerExceptions if they are unable to create a ComponentRunnable object instead of simply returning NULL.
    • Fixed bug in class RECOINException that caused RECOIN to crash. Method getMessage() in class RECOINException used the superclass's getMessage() method incorrectly and caused a NullPointerException. The reason was that the superclass's detailed message is NULL, not "" (empty string), when the empty constructor of superclass java.lang.Exception had been called.

    The following changes have been made in Recoin 0.2.9:

    • The web application to administer the repository has been finished and is now available as a WAR file in the new release. It is based on JSP and servlet technology and can be deployed in any standard servlet container, although it has only been tested with Tomcat 4.1.18.
    • There now is a RMI service inside RECOIN that implements the RemoteAdminConnector interface and is automatically started when RECOIN is started. The web application relies on this service to access the repository.
    • Since version 0.2 the class names and package structure of RECOIN have changed considerably due to the refactoring of the code. Not all of these changes can be listed here. Please see the source code for further details. The following is a list of the more apparent changes:
      • The layer concept has been replaced by different ModuleGroups that are distinguished by a unique groupname.
      • There is no longer a distinction between a QueryContainer and a ResultContainer. The RetrievalContainer class is used during the whole RetrievalCycle.
      • The Component and Module classes are now interfaces. Both possess two implementations: One that can be used in the runtime environment and one that only contains the same attributes, but can be serialized and transmitted over a network. The latter is used to transport the repository data between RECOIN and the web application or a remote client. See the recoin.group package for further details.
    • The recoinx.clef package has been extended significantly.
      • The CLEF package now contains a number of ComponentWorker subclasses that implement retrieval behavior like translation, stemming, stopword removal, retrieval in MySQL and Lucene databases, as well as merging capabilities.
      • The CLEFClient has been finished and extended. It now possesses entry fields to select the XML topic file, the directory to store results, the name of the topic, as well as an overall cut-off.

    The following changes have been made in Recoin 0.2.1:

    (Version 0.2.1 has never been released. All changes made their way into the next release!)
    • Properties file for RECOIN (recoin_config.xml) renamed to recoin_properties.xml.
    • Logging behavior has been rewritten to use the Log4j API.
    • All logging classes (LogFileWriter, ErrorLogWriter, SessionLogWriter, SystemLogWriter) have been removed from package recoin.util since they were no longer needed.

    The following changes have been made in Recoin 0.2:

    • The RECOIN API documentation has been translated to english and completed.
    • In class RepositoryManager: parameter id (used to load specific modules) changed to type Object.
    • build.xml has been extended and thouroughly documented.
    • Constructor changed in ApplicationManager: It now takes a String argument specifying the location of RECOIN_HOME directory. This String must be provided as command line argument when starting via the main-method. As a result, the field propertiesPath was deleted from the class, since it was no longer needed.
    • Child element <root_path> of element <application> deleted from recoin_config.xml.
    • All element names in XML configuration file recoin_config.xml were changed to lower case for consistency.
    • Name of field filePath in XMLRepositoryManager class renamed to repositoryPath.
    • Name of child element <file_path> of element <repository> in file recoin_config.xml renamed to <repository_path>.

< Prev   Next >
Copyright 2000 - 2005 Miro International Pty Ltd. All rights reserved.
Mambo is Free Software released under the GNU/GPL License.