瀏覽代碼

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 年之前
父節點
當前提交
aa8b96d1f6
共有 1 個文件被更改,包括 18 次插入16 次删除
  1. 18
    16
      src/java/org/apache/fop/apps/FOUserAgent.java

+ 18
- 16
src/java/org/apache/fop/apps/FOUserAgent.java 查看文件

import org.apache.fop.events.DefaultEventBroadcaster; import org.apache.fop.events.DefaultEventBroadcaster;
import org.apache.fop.events.Event; import org.apache.fop.events.Event;
import org.apache.fop.events.EventBroadcaster; 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.FOPEventListenerProxy;
import org.apache.fop.events.LoggingEventListener; import org.apache.fop.events.LoggingEventListener;
import org.apache.fop.fo.FOEventHandler; import org.apache.fop.fo.FOEventHandler;


private class FOPEventBroadcaster extends DefaultEventBroadcaster { private class FOPEventBroadcaster extends DefaultEventBroadcaster {


private FOPEventListenerProxy rootListener;
private EventListener rootListener;
public FOPEventBroadcaster() { 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} */ /** {@inheritDoc} */
rootListener.processEvent(event); 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…
取消
儲存