Hi all
I'm part of the Fedora documentation team, and along the way I've picked
up Fedora maintainership of a few packages, FOP amongst them.
Unfortunately, I'm having some trouble with FOP on Fedora 15, and I
wondered if I could get some more eyes on it please? As you might know,
we don't bundle libraries in Fedora, so must compile and run FOP with
the versions of its dependencies already shipped in Fedora.
Using these, I can build FOP 1.0, but it doesn't actually work! Instead,
it errors out because it can't find the event-model.xml files that it
needs. There's a bug open that shows the error message --
https://bugzilla.redhat.com/show_bug.cgi?id=689930
Further investigation shows me that the various event-model.xml files
are simply not getting created during the resourcegen stage at build time.
The problem is in our EventProducerCollector, which is patched[1] to use
a different version of qdox (1.12). Specifically, clazz.getParentClass()
is always null and would result in a null pointer exception:
/home/rlandmann/rpmbuild/BUILD/fop-1.0/build.xml:374:
java.lang.NullPointerException
at
com.thoughtworks.qdox.model.JavaMethod.getReturnType(JavaMethod.java:464)
at
com.thoughtworks.qdox.model.JavaMethodDelegate.getReturnType(JavaMethodDelegate.java:26)
at
com.thoughtworks.qdox.model.JavaMethodDelegate.getReturnType(JavaMethodDelegate.java:166)
at
org.apache.fop.tools.EventProducerCollector.createMethodModel(EventProducerCollector.java:142)
at
org.apache.fop.tools.EventProducerCollector.processEventProducerInterface(EventProducerCollector.java:130)
at
org.apache.fop.tools.EventProducerCollector.scanFile(EventProducerCollector.java:99)
at
org.apache.fop.tools.EventProducerCollectorTask.processFileSets(EventProducerCollectorTask.java:213)
at
org.apache.fop.tools.EventProducerCollectorTask.execute(EventProducerCollectorTask.java:69)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
...except that we have a check at lines 125-127 that just quits if
clazz.getParentClass() is null.
If anyone has time and inclination to take a look for me, I'd appreciate
any tips about what to try next. I can't see why getParentClass() isn't
working on the various EventProducer classes in the source. :(
TIA
Rudi
[1] patch is here:
http://rlandmann.fedorapeople.org/fop/qdox-build.patch and patched
version of EventProducerCollector is here:
http://rlandmann.fedorapeople.org/fop/EventProducerCollector.java