Property Change Notifications


Introduction | Examples | Source Code | Maven | Java Documentation (core only) | Try it [ Property Change Notifications ]

The FRED Client domain model adheres to the Java Beans specification and contains logic for monitoring property changes via the PropertyChangeSupport class.

Developers can register instances of PropertyChangeListener with a given object and if a property changes they will be notified of the modification — see below for an example pertaining to how this is accomplished.

def queryBuilder = queryBuilderFactory.getInstance ()

def seriess = queryBuilder
    .category ()
    .series ()
    .setSeriesId("GNPCA")
    .setRealtimeStart(
        using (2001, Calendar.JANUARY, 20)
    ).setRealtimeEnd(
        using (2004, Calendar.MAY, 17)
    ).doGet (Seriess.class)

seriess.addPropertyChangeListener (
    new PropertyChangeListener () {
        @Override
        public void propertyChange(PropertyChangeEvent event) {
            println "event: ${event}, source: ${event.source.realtimeStart}"
        }
    }
)
// Note that in Groovy the code below invokes a setter method.
seriess.offset = 1234

The entire script is available here. There are two points to keep in mind with respect to this script:

  • Note that the xstreamMarshaller bean is set to com.coherentlogic.coherent.data.model.core.xstream.CustomXStreamMarshaller. This class allows the developer to easily switch between a standard PropertyChangeSupport (the default) and javax.swing.event.SwingPropertyChangeSupport for projects that run on the desktop and utilise the Java Swing API.
  • You will need your own API key in order to run this script. Refer to the apiKey constructor argument for the queryBuilderFactory bean in the XML configuration text.
  • Several notes appear at the top of the file and these are required steps in order to run execute the script successfully.

The output of this script can be seen in the picture below.

Property Change Support Example