[ https://issues.apache.org/jira/browse/TIKA-3418?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17373644#comment-17373644 ]
ASF GitHub Bot commented on TIKA-3418: -------------------------------------- tballison commented on a change in pull request #446: URL: https://github.com/apache/tika/pull/446#discussion_r663133878 ########## File path: tika-core/src/main/java/org/apache/tika/config/TikaActivator.java ########## @@ -51,14 +53,17 @@ public void start(final BundleContext context) throws Exception { detectorTracker = new ServiceTracker(context, Detector.class.getName(), this); parserTracker = new ServiceTracker(context, Parser.class.getName(), this); + zipDetectorTracker = new ServiceTracker(context, "org.apache.tika.detect.zip.ZipContainerDetector", this); Review comment: Do we need to do this for EncodingDetector as well to ensure that all encoding detectors are dynamically loaded? Obv, separate pull request...but I'm curious if that is failing in OSGi. ########## File path: tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-zip-commons/src/main/java/org/apache/tika/detect/zip/DefaultZipContainerDetector.java ########## @@ -262,12 +266,21 @@ private MediaType detect(ZipArchiveEntry zae, ZipArchiveInputStream zis, } private MediaType finalDetect(StreamingDetectContext detectContext) { - for (ZipContainerDetector d : zipDetectors) { + for (ZipContainerDetector d : getDetectors()) { MediaType mt = d.streamingDetectFinal(detectContext); if (mt != null) { return mt; } } return MediaType.APPLICATION_ZIP; } + + private List<ZipContainerDetector> getDetectors() { + if (loader != null) { + List<ZipContainerDetector> zipDetectors = new ArrayList<>(staticZipDetectors); Review comment: In DefaultDetector, the order is dynamic detectors and then we add the statically loaded detectors with `super.getDetectors()`. Here the order is reversed. Why the difference, will it make any difference? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tika.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org > DefaultZipContainerDetector does not support loading of ZipContainerDetectors > in an OSGi enviroment > --------------------------------------------------------------------------------------------------- > > Key: TIKA-3418 > URL: https://issues.apache.org/jira/browse/TIKA-3418 > Project: Tika > Issue Type: Improvement > Components: core, parser > Affects Versions: 2.0.0 > Reporter: Simon-Shlomo Poil > Priority: Major > > Classes that implements the ZipContainerDetector interface are loaded via the > ServiceLoader in the DefaultZipContainerDetector (in parsers-zip-commons). > In an OSGi enviroment the current behaviour is (default constructor) to only > load classes that a found by the DefaultZipContainerDetector classloader, > however this will miss ZipContainerDetector classes such as the > [OPCPackageDetector.java|https://github.com/apache/tika/blob/main/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/detect/microsoft/ooxml/OPCPackageDetector.java] > in the > [tika-parser-microsoft-module|https://github.com/apache/tika/tree/main/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module]. > The DefaultZipConatinerDetector has constructor to pass a ServiceLoader, > which in principle could allow loading of dynamic services. However, this > constructor will load the services only on initialization, which does comply > with the dynamic natur of an OSGi enviroment where services can come and go > dynamically. > Linked to this issue is pull-request that attempts solve this issue following > a similar strategy of service loading as implemented in the DefaultDetector > and DefaultParser. > -- This message was sent by Atlassian Jira (v8.3.4#803005)