My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads

What is it?

A generic Java library simplifying data flow by means of data binding. Very useful in modular and/or in model-based software patterns enabling data-dependent modules to be updated automatically when the model (or another module) changes. Additionally, data binding provides an additional layer of abstraction and thus a higher level of generalization because components can listen for updates instead of making the data emitting components actively inform all relevant data consumers. Thus, new components can be added to an existing system without modifying the code of the data emitting components(s). Due to the unobtrusive nature of this library, any plain old Java object (aka DOJO) or set of DOJOs can become a component.

Example

A model could contain a public attribute as follows:

public final ActiveVariable<User> loggedInUser = new ActiveVariable<User>();

No need to write boiler plate code for getter and setter methods. An object that likes to be informed when the user logs in or out would register to this attribute like this:

Model.get().loggedInUser.addValueChangedHandler(new ValueChangedHandler<User>() {
	@Override public void onValueChanged(ValueChangedEvent<User> event) {
		if (event.getNewValue() != null)
			// Load the user profile and change to the personalized user interface
		else 
			// User logged out, return to the default user interface
	}
});

Is it reliable?

The project got started some time ago and new features have been added continuously since then. The included classes and features are still limited, but mostly tested and stable - and successfully used in two other software projects. Since version 0.5, the basic features are complete and the code has undergone some performance optimizations already.

What's next?

Features will be added on demand or on request :). Currently, the library also contains some specific implementations for GWT. Those should be separated into a distinct library in the future.

Powered by Google Project Hosting