/** * Read one RecordToken from the input port and send its fields to the output ports. If the input * does not have a token, suspend firing and return. * * @exception IllegalActionException If there is no director. */ public void fire() throws IllegalActionException { super.fire(); Director director = getDirector(); if (director == null) { throw new IllegalActionException(this, "No director!"); } if (input.hasToken(0)) { RecordToken record = (RecordToken) input.get(0); Iterator labels = record.labelSet().iterator(); while (labels.hasNext()) { String label = (String) labels.next(); Token value = record.get(label); IOPort port = (IOPort) getPort(label); // since the record received may contain more fields than the // output ports, some fields may not have a corresponding // output port. if (port != null) { port.send(0, value); } } } }