[ 
https://issues.apache.org/jira/browse/TIKA-1910?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15225474#comment-15225474
 ] 

Bob Paulin commented on TIKA-1910:
----------------------------------

Thinking of a way to pass the ServiceLoader...

Allow Detectors, Parsers, and EncodingDetectors to leverage ServiceLoader in 
Constructor:
Move object instantiation into the ServiceLoader class (replaces all instances 
of klass.newInstance() in ServiceLoader and TikaConfig
{code}
public <T> T createServiceInstance(Class<?> klass)
            throws InstantiationException, IllegalAccessException, 
InvocationTargetException {
        T serviceInstance = null;
        try{
            serviceInstance = 
                    
(T)klass.getConstructor(ServiceLoader.class).newInstance(this);
        }catch(NoSuchMethodException e) {}
        if(serviceInstance == null)
        {
            serviceInstance = (T) klass.newInstance();
        }
        return serviceInstance;
    }
{code}

Then newInstance becomes
{code}
loaded = loader.createServiceInstance(loadedClass);
{code}

And service classes can have ServiceLoader Constructors:

{code}
     public ChmParser(ServiceLoader serviceLoader) {
        
        this.htmlProxy = 
serviceLoader.getProxyService("org.apache.tika.parser.html.HtmlParser", 
Parser.class, ChmParser.class.getClassLoader());
    }
{code}

Thoughts on this approach?   Or is the no arg constructor sacred?



> Tika 2.0 - Decouple Tika Parser Office Module from Other Dependencies
> ---------------------------------------------------------------------
>
>                 Key: TIKA-1910
>                 URL: https://issues.apache.org/jira/browse/TIKA-1910
>             Project: Tika
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Bob Paulin
>            Assignee: Bob Paulin
>
> Currently the Tika Parser Office Module depends on 
> Tika Parser Web Module
> Tika Parser Package Module
> Tika Parser Text Module
> Using the proxies we can make those dependencies optional so if they are not 
> included on the classpath the code functions but performs no operation on 
> content that would be parsed on the optional dependencies.



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

Reply via email to