Browse Source

Bugfix: If the first event is not issued over an event producer, the fallback logging event listener was not installed.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@649477 13f79535-47bb-0310-9956-ffa450edef68
pull/37/head
Jeremias Maerki 16 years ago
parent
commit
aa8b96d1f6
1 changed files with 18 additions and 16 deletions
  1. 18
    16
      src/java/org/apache/fop/apps/FOUserAgent.java

+ 18
- 16
src/java/org/apache/fop/apps/FOUserAgent.java View File

@@ -39,7 +39,7 @@ import org.apache.fop.Version;
import org.apache.fop.events.DefaultEventBroadcaster;
import org.apache.fop.events.Event;
import org.apache.fop.events.EventBroadcaster;
import org.apache.fop.events.EventProducer;
import org.apache.fop.events.EventListener;
import org.apache.fop.events.FOPEventListenerProxy;
import org.apache.fop.events.LoggingEventListener;
import org.apache.fop.fo.FOEventHandler;
@@ -549,11 +549,25 @@ public class FOUserAgent {

private class FOPEventBroadcaster extends DefaultEventBroadcaster {

private FOPEventListenerProxy rootListener;
private EventListener rootListener;
public FOPEventBroadcaster() {
this.rootListener = new FOPEventListenerProxy(
this.listeners, FOUserAgent.this);
//Install a temporary event listener that catches the first event to
//do some initialization.
this.rootListener = new EventListener() {
public void processEvent(Event event) {
if (!listeners.hasEventListeners()) {
//Backwards-compatibility: Make sure at least the LoggingEventListener is
//plugged in so no events are just silently swallowed.
addEventListener(
new LoggingEventListener(LogFactory.getLog(FOUserAgent.class)));
}
//Replace with final event listener
rootListener = new FOPEventListenerProxy(
listeners, FOUserAgent.this);
rootListener.processEvent(event);
}
};
}
/** {@inheritDoc} */
@@ -561,18 +575,6 @@ public class FOUserAgent {
rootListener.processEvent(event);
}

/** {@inheritDoc} */
protected EventProducer createProxyFor(Class clazz) {
if (!this.listeners.hasEventListeners()) {
//Backwards-compatibility: Make sure at least the LoggingEventListener is plugged
//in so no events are just silently swallowed.
addEventListener(
new LoggingEventListener(LogFactory.getLog(FOUserAgent.class)));
}
return super.createProxyFor(clazz);
}
}
}

Loading…
Cancel
Save