All Packages  Class Hierarchy  This Package  Previous  Next  Index

Interface uhr.core.msg.Message

public interface Message
extends Flexitron
This interface represents a Message that travels between parts. A Message is a special type of Datatron. It has a name (or ID) and a Flexitron. The name is for symantic understanding and routing. The name is always required. Null property values are allowed.

This doesn't extend EventObject so there is no source. This is deliberate, since if the event listener uses the source for anything tight coupling is introduced. If the need arises to pass the source, use a property or change the design.

The implementation should have a no-arg constructor and a constructor that sets the name.


Method Index

 o getName()
Returns the Message name.
 o reuse(String)
A convenience method for Message reuse.
 o setName(String)
Sets the Message name.

Methods

 o setName
 public abstract void setName(String name)
Sets the Message name. Period separators are encouraged for large systems. Spaces, slashes, semi-colons etc are not allowed.

Note the name must not only semantically describe the Message, but must be unique among all the other Messages in the portion of a system the Message will be used in. When coding names be very careful to avoid spelin mistakkes. :-) The name is case sensitive.

Due to String interning, do NOT use new String("ThisName") or String computation to create Message names. This may cause "==" to fail and is wasteful. Use literals or intern() to create reliable names. See "The Java Language Specification" section 3.10.5 on String Literals.

To prevent accidents the name is interned anyhow. :-)

Parameters:
name - the name of the Message.
 o getName
 public abstract String getName()
Returns the Message name. This is used by MessageReceivers for determining what to do, in a manner similar to method names.

For speed and code conciseness you can assume the name has been interned, if the name was set with a literal. As of Java 1.1 all String literals seem to be reliably automatically interned. In Java 1.0 we had to have Message.setName(String) do intern() for reliability.

Returns:
the interned name.
 o reuse
 public abstract void reuse(String name)
A convenience method for Message reuse. It does a setName() and a removeAll() in a slightly faster manner than two separate method calls. In future versions it may do more.

Parameters:
name - the name of the Message.

All Packages  Class Hierarchy  This Package  Previous  Next  Index