Package: ditaa
Version: 0.9+ds1-3
Severity: normal
Tags: upstream patch

Dear Maintainer,

When I invoke ditaa with -h to import any HTML file, a Java Exception
appears.

Here is an example of this behavior:

---

$ ditaa -h test.html

ditaa version 0.9, Copyright (C) 2004--2009 Efstathios (Stathis) Sideris

Running with options:
html
Exception in thread "main" java.lang.NoClassDefFoundError:
net/htmlparser/jericho/Segment
        at
org.stathissideris.ascii2image.core.CommandLineConverter.main(CommandLineConverter.java:182)
Caused by: java.lang.ClassNotFoundException: net.htmlparser.jericho.Segment
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
        ... 1 more

---

The JAR manifest is apparently missing a Class-Path reference to the Jericho HTML
Parser, which I fixed in my patch.

While testing, I came across a second problem, also fixed in my patch.
This is an upstream bug, though:

---

$ ditaa -h test.html

ditaa version 0.9, Copyright (C) 2004--2009 Efstathios (Stathis) Sideris

Running with options:
html
Convering HTML file (test.html -> test_processed.html)... Exception in
thread "main" java.lang.ClassCastException: net.htmlparser.jericho.StartTag
cannot be cast to net.htmlparser.jericho.Element
        at
org.stathissideris.ascii2image.core.HTMLConverter.convertHTMLFile(HTMLConverter.java:119)
        at
org.stathissideris.ascii2image.core.CommandLineConverter.main(CommandLineConverter.java:182)

---

Seems like getAllStartTags() is used instead of getAllElements() at
HTMLConverter.java:116.

When my patch is applied, I am able to use an HTML file as input.


-- System Information:
Debian Release: wheezy/sid
  APT prefers precise-updates
APT policy: (500, 'precise-updates'), (500, 'precise-security'), (500, 'precise')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-31-generic (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ditaa depends on:
ii  default-jdk [java6-sdk]        1:1.6-43ubuntu2
ii  default-jre [java6-runtime]    1:1.6-43ubuntu2
ii  jarwrapper                     0.40ubuntu1.1
ii  junit4                         4.8.2-2
ii  libbatik-java                  1.7.ubuntu-8ubuntu1
ii  libcommons-cli-java            1.2-3
ii  libjericho-html-java           3.1-2
ii  libxml-commons-external-java   1.4.01-2
ii  openjdk-6-jdk [java6-sdk]      6b31-1.13.3-1ubuntu1~0.12.04.2
ii  openjdk-6-jre [java6-runtime]  6b31-1.13.3-1ubuntu1~0.12.04.2

ditaa recommends no packages.

ditaa suggests no packages.

-- no debconf information

--
Martino Dell'Ambrogio
Security Auditor
Web: http://www.tillo.ch/
Email: [email protected]

diff -ur ditaa-0.9+ds1.orig/debian/manifest ditaa-0.9+ds1/debian/manifest
--- ditaa-0.9+ds1.orig/debian/manifest  2010-04-15 20:23:24.000000000 +0200
+++ ditaa-0.9+ds1/debian/manifest       2014-05-13 11:47:26.242177598 +0200
@@ -1,5 +1,5 @@
 usr/share/ditaa/ditaa.jar:
  Main-Class: org.stathissideris.ascii2image.core.CommandLineConverter
  Debian-Java-Home: /usr/lib/jvm/default-java
- Class-Path: /usr/share/java/junit4.jar 
/usr/lib/jvm/java-6-openjdk/lib/tools.jar /usr/share/java/commons-cli.jar 
/usr/share/java/batik-bridge.jar /usr/share/java/batik-dom.jar 
/usr/share/java/batik-gvt.jar /usr/share/java/batik-svg-dom.jar 
/usr/share/java/batik-awt-util.jar /usr/share/java/xml-apis-ext.jar 
/usr/share/java/batik-libs.jar
+ Class-Path: /usr/share/java/jericho-html.jar /usr/share/java/junit4.jar 
/usr/lib/jvm/java-6-openjdk/lib/tools.jar /usr/share/java/commons-cli.jar 
/usr/share/java/batik-bridge.jar /usr/share/java/batik-dom.jar 
/usr/share/java/batik-gvt.jar /usr/share/java/batik-svg-dom.jar 
/usr/share/java/batik-awt-util.jar /usr/share/java/xml-apis-ext.jar 
/usr/share/java/batik-libs.jar
 
diff -ur 
ditaa-0.9+ds1.orig/src/org/stathissideris/ascii2image/core/HTMLConverter.java 
ditaa-0.9+ds1/src/org/stathissideris/ascii2image/core/HTMLConverter.java
--- 
ditaa-0.9+ds1.orig/src/org/stathissideris/ascii2image/core/HTMLConverter.java   
    2014-05-13 11:28:48.000000000 +0200
+++ ditaa-0.9+ds1/src/org/stathissideris/ascii2image/core/HTMLConverter.java    
2014-05-13 11:55:53.460347558 +0200
@@ -113,7 +113,7 @@
                int index = 1;
                HashMap diagramList = new HashMap();
                
-               List linkStartTags = source.getAllStartTags("pre");
+               List linkStartTags = source.getAllElements("pre");
                Iterator it = linkStartTags.iterator();
                while (it.hasNext()) {
                        Element element = (Element) it.next();

Reply via email to