You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2016/07/09 13:22:06 UTC

[Bug 59834] New: poi-ooxml pom.xml should include dependency on poi-scratchpad

https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

            Bug ID: 59834
           Summary: poi-ooxml pom.xml should include dependency on
                    poi-scratchpad
           Product: POI
           Version: 3.14-FINAL
          Hardware: PC
                OS: Mac OS X 10.1
            Status: NEW
          Severity: normal
          Priority: P2
         Component: POI Overall
          Assignee: dev@poi.apache.org
          Reporter: fanningpj@yahoo.com

http://central.maven.org/maven2/org/apache/poi/poi-ooxml/3.14/poi-ooxml-3.14.pom
includes no reference to the compile and runtime dependency on poi-scratchpad.

https://github.com/apache/poi/blob/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
includes imports for classes in poi-scratchpad, eg
org.apache.poi.hwpf.OldWordFileFormatException.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #10 from Dominik Stadler <do...@gmx.at> ---
Another interesting failure is the following one:

java.lang.NoClassDefFoundError: org/apache/poi/hslf/blip/WMF$NativeHeader
        at
org.apache.poi.xslf.usermodel.XSLFPictureData.cacheProperties(XSLFPictureData.java:179)
        at
org.apache.poi.xslf.usermodel.XSLFPictureData.getImageDimension(XSLFPictureData.java:145)
        at
org.apache.poi.sl.draw.DrawPictureShape.resize(DrawPictureShape.java:100)
        at
org.apache.poi.xslf.usermodel.XSLFSheet.createPicture(XSLFSheet.java:238)
        at org.apache.poi.xslf.TestXSLFBugs.bug59434(TestXSLFBugs.java:466)
Caused by: java.lang.ClassNotFoundException:
org.apache.poi.hslf.blip.WMF$NativeHeader
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Seems WMF classes are in scratchpad, but XSLFPictureData accesses it, should we
promote WMF into main?

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #2 from Nick Burch <ap...@gagravarr.org> ---
There aren't (and shouldn't be) any references to scratchpad from the POI main
jar

There are (and due to a lack of full interfaces for SL and WP, amongst others)
a handful of references from OOXML to Scratchpad

However, most uses of OOXML don't need Scratchpad. The extractor factory is one
of the handful of places that does

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

Dominik Stadler <do...@gmx.at> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #11 from Dominik Stadler <do...@gmx.at> ---
I think this is mostly done now: CI is running without Scratchpad at
https://builds.apache.org/view/P/view/POI/job/POI-DSL-no-scratchpad/, only a
few tests are ignored (see exclude-scratchpad-test in build.xml).

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #3 from Javen O'Neal <on...@apache.org> ---
(In reply to Nick Burch from comment #2)
> There are (and due to a lack of full interfaces for SL and WP, amongst
> others) a handful of references from OOXML to Scratchpad
> The extractor factory is
> one of the handful of places that [lack full interfaces]

I guess this bug depends on adding extractor to Common SL, WP, DG, etc

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

PJ Fanning <fa...@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fanningpj@yahoo.com

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #7 from Dominik Stadler <do...@gmx.at> ---
Somehow we still link to some of the Scratchpad-Classes, TestExtractorFactory
fails with the following exception, see
https://builds.apache.org/view/POI/job/POI-no-scratchpad/5/testReport/(root)/%3Cinit%3E/org_apache_poi_extractor_TestExtractorFactory/

java.lang.NoClassDefFoundError:
org/apache/poi/hsmf/extractor/OutlookTextExtactor
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:171)
Caused by: java.lang.ClassNotFoundException:
org.apache.poi.hsmf.extractor.OutlookTextExtactor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #1 from Javen O'Neal <on...@apache.org> ---
I wonder if we could detect poi-scratchpad uses in poi-main if we clear
previously built poi-scratchpad.jar artifacts, compile just poi main and
require all imports to be present, then compile poi-scratchpad.

ant test probably compiles scratchpad before compiling ooxml, which might be
why this went unnoticed. Unfortunately, we would have the opposite problem if
we compiled ooxml before scratchpad.

Is there any way we resolve this at compile time rather through a unit test,
and avoid throwing away a compilation result?

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #8 from Nick Burch <ap...@gagravarr.org> ---
I would still expect some parts of ExtractorFactory to fail when the Scratchpad
jar is missing. Should compile fine, but fail at runtime with a message that
you need scratchpad

The ExtractorFactory test likely will fail with no scratchpad, not only for the
above reason, but also because it checks what extractor classes come back so
has references to scratchpad-only classes

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #5 from Dominik Stadler <do...@gmx.at> ---
Yes, I also stumbled over this quite a while ago and in that project I actually
copied WorkbookFactory and removed the access to these classes to make it work.

I have now added a test-build at
https://builds.apache.org/view/POI/job/POI-no-scratchpad/ which removes the
classpath to the scratchpad-classes before running tests. Currently only
TestExtractorFactory seems to fail in test-ooxml.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #6 from Nick Burch <ap...@gagravarr.org> ---
OK, I've had a go at splitting the logic out, so that the OOXML stuff lives in
OOXML (and remains the default), the Excel-specific stuff is in main and called
from OOXML, and the Scratchpad stuff is in Scratchpad but called from main. Not
too much duplication, not too much reflection...

With all 3 jars, nothing will change

With core + ooxml, excel and ooxml will work fine. However, if you don't have
scratchpad but do give it a scratchpad-related file, it'll give you an
exception telling you to add the jar

I think this is probably the best we can do... Further testing and sanity
checking requested though!

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

Nick Burch <ap...@gagravarr.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #4 from Nick Burch <ap...@gagravarr.org> ---
(In reply to Javen O'Neal from comment #3)
> I guess this bug depends on adding extractor to Common SL, WP, DG, etc

Not sure interfaces would help - the extractor factory needs to create concrete
classes.

I don't think we want to add another jar for things like ExtractorFactory, as
we get enough confused people already. I'm not sure we want to require the
scratchpad jar, as people doing eg just XSSF don't need it.

Maybe we could have ExtractorFactory do some stuff with reflection, and give
more helpful errors if the scratchpad jar is missing?

Might also be good to try running all the OOXML unit tests with no scratchpad
jar, and check if any bits other than the extractors fail?

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org


[Bug 59834] poi-ooxml pom.xml should include dependency on poi-scratchpad

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=59834

--- Comment #9 from Dominik Stadler <do...@gmx.at> ---
BTW, if I exclude TestExtractorFactory in the Jenkins-Job at
https://builds.apache.org/job/POI-no-scratchpad/, it fails in some other tests
with ClassNotFoundException:

java.lang.NoClassDefFoundError: org/apache/poi/hslf/usermodel/HSLFSlideShow
        at org.apache.poi.sl.TestTable.testTextDirection(TestTable.java:108)
Caused by: java.lang.ClassNotFoundException:
org.apache.poi.hslf.usermodel.HSLFSlideShow
        ...
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)


java.lang.RuntimeException: java.io.IOException:
java.lang.ClassNotFoundException:
org.apache.poi.hslf.usermodel.HSLFSlideShowFactory
        at
org.apache.poi.sl.draw.TestDrawPictureShape.openSampleDocument(TestDrawPictureShape.java:49)
        at
org.apache.poi.sl.draw.TestDrawPictureShape.testResize(TestDrawPictureShape.java:59)
Caused by: java.io.IOException: java.lang.ClassNotFoundException:
org.apache.poi.hslf.usermodel.HSLFSlideShowFactory
        at
org.apache.poi.sl.usermodel.SlideShowFactory.createSlideShow(SlideShowFactory.java:262)
        at
org.apache.poi.sl.usermodel.SlideShowFactory.createHSLFSlideShow(SlideShowFactory.java:227)
        at
org.apache.poi.sl.usermodel.SlideShowFactory.create(SlideShowFactory.java:79)
        at
org.apache.poi.sl.usermodel.SlideShowFactory.create(SlideShowFactory.java:143)
        at
org.apache.poi.sl.usermodel.SlideShowFactory.create(SlideShowFactory.java:107)
        at
org.apache.poi.sl.draw.TestDrawPictureShape.openSampleDocument(TestDrawPictureShape.java:47)
Caused by: java.lang.ClassNotFoundException:
org.apache.poi.hslf.usermodel.HSLFSlideShowFactory
        ...
        at
org.apache.poi.sl.usermodel.SlideShowFactory.createSlideShow(SlideShowFactory.java:236)

So there seem to be a few more places where we unconditionally access these
parts, e.g. SlideShowFactory. We should at least throw a better error message
there as well.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org