You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tika.apache.org by "Bob Paulin (JIRA)" <ji...@apache.org> on 2015/08/01 23:48:04 UTC

[jira] [Updated] (TIKA-1700) tika-config.xml does not provide a way to set ServiceLoader to dynamic

     [ https://issues.apache.org/jira/browse/TIKA-1700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bob Paulin updated TIKA-1700:
-----------------------------
    Attachment: TIKA-1700B.patch

Apache Jackrabbit for example may be used inside or outside the OSGi environment.  Using the code above for example would require Jackrabbit to have a toggle to determine what to pass for dynamic to the ServiceLoader object.  If it can be done via the tika-config.xml then Jackrabbit does not need to be responsible for this toggle because Tika has already provided it.  Tika owns the service loader logic so I feel it's best that it provides the switches.  I agree that the parser is the wrong spot to tackle this problem.  I've moved higher up in the TikaConfig Logic in the next patch.  I also added some logic to allow the LoadErrorHandler to be defined in xml as well.  

> tika-config.xml does not provide a way to set ServiceLoader to dynamic
> ----------------------------------------------------------------------
>
>                 Key: TIKA-1700
>                 URL: https://issues.apache.org/jira/browse/TIKA-1700
>             Project: Tika
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.7, 1.8, 1.9, 1.10
>         Environment: OSGi
>            Reporter: Bob Paulin
>         Attachments: TIKA-1700.patch, TIKA-1700A.patch, TIKA-1700B.patch
>
>
> Currently if you create a TikaConfig from a file (ex tika-config.xml).  There is no way to specify that you want to use a ServiceLoader with dynamic set.  Prior to tika 1.7 this was not an issue since the during the tika-config.xml parse Tika would instantiate parsers using the default constructor which in turn would instantiate a new ServiceLoader.  The default ServiceLoader constructor sets dynamic to true which allows dynamic loading of parsers.  
> Changes to TikaConfig now cause the tika-config.xml parse to call a constructor which passes the ServiceLoader to be passed as a parameter.  This ServiceLoader is always constructed with a Classloader which will cause dynamic to always be set to false.  This breaks Tika in OSGi environments which depend on dynamic being set to true (for example Apache Sling). 
> I'm proposing adding an xml attribute to the parser element to instantiate the parser with dynamic set to true.  This allows users of tika-config.xml to determine how they want parsers loaded. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)