Hawron
Introduction

Introduction

Hawron is designed for building a custom Offline-Processing-Application with Cocoon.

You can extend Hawron in different ways:

Internals

The core-object is the Project, which holds all data like CocoonBeanConfiguration, the tasks, publishing data.

After changing to Apache-Avalon the ApplicationContainer is one of the core-classes. Apache Avalon has closed, the Excalibur-project houses now the Avalon-framework. Hawron uses an own simple container, to allow a simple plugin-system.

The ApplicationContainer holds all components together and manage the life-cycle of the components. At the moment all components are listed in the "hawron.xconf " in the "conf" directory. For supporting plugins the ApplicationContainer uses the PluginManager, which report all founded plugins back to the Container and to the PluginReciver (every class can register as a PluginReciver to the PluginManager and will get all plugins for interfaces the PluginReciver await). PluginComponets override the default implementation of components.

The GUI-environment is hold by the ApplicationFrame, which holds the ProjectView. The ProjectView is a container for ProjectViewComponents, like ContextView,ProcessView and the ServletView (JettyPlugin). There are some components around this, like ApplicationSetup and the MenuBar (which will changed later) and the Toolbar, where other components can interact with.

Configuration

At the moment there are two configuration-system used. The first is property-based singleton ConfigManager. This system is the oldest and will be replaced soon.

The second configuration-system is the Avalon-Configuration. Normally the Avalon does not support a modifiable configuration, Hawron will support a storable configuration in one of the next releases.

Component lifecycle

Hawron supports all Avalon-lifecycle-interfaces and some Hawron-specific.

  1. LogEnabled (Avalon)
  2. setProject(Project project) (Hawron)
  3. Contextualizable (Avalon)
  4. Serviceable (Avalon)
  5. Configurable (Avalon)
  6. Parameterizable (Avalon)
  7. Initializable (Avalon)
  8. GuiConfigurable (Hawron)
  9. Startable (Avalon)
  10. Stoppable (Avalon)
  11. StoreConfigurable (Hawron, but not supported yet)
  12. Disposable (Avalon)

Classloading

Hawron uses a hierarchy of classloaders. You don't need to add something to classpath. Drop your needed libraries into the 'lib/optional'- or 'lib/core'-directories. For plugins edit the plugin-descriptor.

If you want to load classes keep in mind that the system-classloader only see the launcher-class. To get the correct classloader use:

 
                               ... = this.getClass().getClassLoader().loadClass(clazzname);