You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Petri Tuomola (Jira)" <ji...@apache.org> on 2020/10/05 09:28:00 UTC

[jira] [Commented] (FINERACT-1174) Allow Spring to component-scan plugins in non org.apache.fineract packages

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

Petri Tuomola commented on FINERACT-1174:
-----------------------------------------

[~vorburger] - that sounds like a fun problem! :)

A couple of options that come to mind:
 * Would it be OK if we just had one package for such reporting plugins and clearly indicated that it is for 3rdparty / external plugins in the package name? e.g. org.apache.fineract.reporting.plugins.external or something? Then we could have a ComponentScan annotation for that
 * Alternatively we could move the package name for 3rd party plugins into a config property to allow the plugin provider to choose it - e.g. @ComponentScan(basePackages = "${scan.packages}") and have scan.packages as an JVM property? The problem with that would be that you could only specify one property - so if you have two plugins in different packages, you'd have a problem... 
 * Find a way to pass multiple configuration values for packages to scan - so that you can configure multiple packages in a configuration file. I think you might be able to pass a string array to @ComponentScan? Or alternatively I think we could scan the packages in the WebApplicationInitializer class onStartup method?

> Allow Spring to component-scan plugins in non org.apache.fineract packages
> --------------------------------------------------------------------------
>
>                 Key: FINERACT-1174
>                 URL: https://issues.apache.org/jira/browse/FINERACT-1174
>             Project: Apache Fineract
>          Issue Type: Improvement
>            Reporter: Michael Vorburger
>            Priority: Major
>
> Allow Spring to component-scan plugins in non org.apache.fineract packages
> One of a number of problems that I ran into in FINERACT-1127 was that I initially tried to have the PentahoReportingProcessServiceImpl in https://github.com/vorburger/fineract-pentaho/ in {{package org.mifos.fineract.pentaho}} (which I made up).
> This seemed better than {{package org.apache.fineract.infrastructure.report.service}}, because... well, https://github.com/vorburger/fineract-pentaho IS NOT part of Apache Fineract core, and will never be (due to the incompatible license), but is a "plugin".
> However, this didn't work, because, of course we only {{context:component-scan base-package="org.apache.fineract.accounting.*, ...}} et al. in fineract-provider/src/main/resources/META-INF/spring/appContext.xml (BTW see FINERACT-tbd / PR which proposes to simplify that).
> I've temporarily moved PentahoReportingProcessServiceImpl back to {{package org.apache.fineract}} for the fineract-pentaho POC, but it does raise an interesting general question.. if we want to move in the direction of supporting external plugins in Fineract, what package should we allow them to live in - and how we do component-scan for them?!  I can't think of a good answer.
> [~ptuomola] [~aleks] you perhaps have any thoughts about this?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)