|
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>.
|