Avalon History of Changes
Added in DataSource implementation for use with J2EE style apps.
Added the notion of ServerApplication to replace the concept of .bar as a server.
A ServerApplication is a isolated environment that manages it's own threads,
security, logging, classloading etc. It has a specific layout as documented
in Assembly guide. The kernel was refactored to contain ServerApplications
rather than Blocks and a lot of support was refactored to support safe separation
of ServerApplications. The archives are in .sar format and are similar in many
aspects to .war of servlet fame.
Refactored thread management so specific thread pools can assigned to specific
threads/thread groups in a manner similar to how ContextClassLoader is associated
with threads. Thread management was also moved to a new package
(org.apache.avalon.util.threads).
Modify the packaging of all kernel related files into org.apache.phoenix.
Modify the packaging of all blocks/services/demos into package hierarchy
org.apache.cornerstone.
Added two new services/blocks by refactoring code from tomcat and old SocketServer.
There is now a SocketManager and a ConnectionManager. The TLS code is now much improved
and there is the beginning of client socket factory. This provides for future client
socket code factories for SSL/TLS or SSH1/2 etc. Also adapted SimpleServer to use
these methods.
Changed config file from per .bar to per .sar and changed name from BAR-INF/<
barname>.conf.xml to conf/assembly.xml. It still contains configuration data as
well as assembly data but this will be removed in a future revision.
Added an extra config file to .sar (conf/server.xml) that is responsible for
configuring .sar wide variables. Some examples include security, logging and thread loading.
Refactored most of the code to use AbstractLoggable and the corresponding getLogger()
method. Also removed the remaining static access to LogKit.
Continued to refine the Camelot API.
Removed blockdefs.properties in favour of adding attributes to manifest entries of jars.
This should enable future GUI tools to easily assemble blocks.
Re-Added the sub-classed context BlockContext to allow blocks full access to important
environmental information.
Many of the lifecycle methods now have a chance to fail by throwing an exception.
Removed all notion of kernel configurability.
Enabled securityManager by default and now ServerApplications have to specify a security
policy.
Removed classloader hack in ObjectStorageRepository as it is no longer required with
new .sar format.
Homogenized the remaining code to follow one style.
Configuration temporarily will create new Configuration objects on getChild() if they
don't exist until Berin's work is finalized.
Altered Compose so that it threw ComponentManagerException of which the previous two
exceptions thrown are now subclasses.
Made loading of jars relative to avalon-loader.jar rather than via current working
directory so that some tools (ie VAJava) would not complain.
Separated out tools directory/jars from main jars that avalon uses.
A number of bug fixes and more descriptive exceptions for Configuration and Parameters
objects.
Made SocketManager accept arbitrary SocketServer.Listener objects.
Updated all blocks to use new system level logging.
Changed Threads so that it is now a system level service.
Added new LogManager that manages arbitrary log categories.
Added the BlockInfo requirement. Thus blocks need to have an XML file that describe the
services it offers, the services it depends upon and other meta information.
Added support for Blocks to implement BlockContextualizable. If they do this the kernel
will pass them Context information. Currently the context information is limited to
a handle to kernel instance and the name they were configured under.
Changed SimpleContext and SimpleComponentManager to DefaultComponent and
DefaultComponentManager to match better with other Avalon design patterns.
Added functionality that allowed you to listen to BlockEvents generated by kernel.
Events indicate when a Block is being created, initialized, composed, destroyed, ran and
stopped.
Updated Logger interface so arbitrary integer levels are not allowed to be passed. The user
is forced to use defined enumerants. This was done to increase safety.
Updated kernel so that is now delegates to AvalonKernelConfigurator to configure itself.
Updated kernel so that it is now pluggable. Any kernel can be loaded via the code in main.
Kernel configuration files are loaded from default configuration directory in a file
with same name as class with a .conf.xml appended.
Removed getDescription method from Block as it is to become part of BlockInfo
Change methods in Configure/Reconfigure to throw ConfigurationExceptions.
Change methods in Configure/Reconfigure to match Java standards.
Add to the Logger log level support.
JNDI for the lookup of blocks and components. Still keep the
Composer interface for those lightweight blocks that don't
need the extra features of the Context. JNDI should be the
ComponentManager of choice.
Synchronized Avalon with Cocoon 2 enhancements. Uses SAX 2 for
configuration, incorporated abstract and base classes for fundamental
types, and incorporated the NamedComponent interface.
Upgraded Loader architecture and the AvalonClassLoader to provide
better detail, as well as new ways of configuring the loader at the
beginning. It does not require any extra libraries to load.
Changed the Acceptor pattern to a more flexible event provider.
Added a TimeServer to easily manage time events.
Make Store implementation more pluggable.
Updated Context pattern to Configurable-Composer pattern.
First Avalon implementation.