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

Ferenc Gerlits updated MINIFICPP-1473:
--------------------------------------
    Description: 
Our current class loading infrastructure is quite confusing, and relies on 
static self-registry of classes.

Poco::ClassLoader looks like a robust 3rd-party implementation of the same 
thing, which
 * would be easier to adapt to the shared-library-plugin world;
 * and already supports both Windows and Linux/Mac, so we can hide OS-specific 
differences (which are handled by our hand-crafted code, but it's not clear how 
well).

As part of this, we should get rid of the static self-registry, which won't 
work with plugins.

TODO: may need to be broken down further
 * bring in the Poco library: Foundation only, strip out everything else
 * rewrite the classloader to use Poco::ClassLoader
 * remove static self-registry and load the classes explicitly when needed
 * change the STATIC extension libraries to SHARED, and --whole-archive should 
no longer be necessary
 * the main executable and the integration tests should not link with any of 
the extension libraries, and instead load them dynamically using (our wrapper 
of) Poco::ClassLoader
 * unit tests should link with the extensions, so they have access to all their 
public methods, and can test the utility classes contained in the extension

 

TODO: I expect complications; add them here when we find them.

  was:
Our current class loading infrastructure is quite confusing, and relies on 
static self-registry of classes.

Poco::ClassLoader looks like a robust 3rd-party implementation of the same 
thing, which
 * would be easier to adapt to the shared-library-plugin world;
 * and already supports both Windows and Linux/Mac, so we can hide OS-specific 
differences (which are handled by our hand-crafted code, but it's not clear how 
well).

As part of this, we should get rid of the static self-registry, which won't 
work with plugins.

TODO: may need to be broken down further
 * bring in the Poco library: Foundation only, strip out everything else
 * rewrite the classloader to use Poco::ClassLoader
 * remove static self-registry and load the classes explicitly when needed

TODO: Verify that Poco::ClassLoader can load classes from whole-archived static 
libraries inside the executable itself.  If it cannot, then this step will need 
to be moved to later.


> E2P-2. Migrate hand-written class loader to Poco::ClassLoader
> -------------------------------------------------------------
>
>                 Key: MINIFICPP-1473
>                 URL: https://issues.apache.org/jira/browse/MINIFICPP-1473
>             Project: Apache NiFi MiNiFi C++
>          Issue Type: New Feature
>            Reporter: Ferenc Gerlits
>            Priority: Minor
>
> Our current class loading infrastructure is quite confusing, and relies on 
> static self-registry of classes.
> Poco::ClassLoader looks like a robust 3rd-party implementation of the same 
> thing, which
>  * would be easier to adapt to the shared-library-plugin world;
>  * and already supports both Windows and Linux/Mac, so we can hide 
> OS-specific differences (which are handled by our hand-crafted code, but it's 
> not clear how well).
> As part of this, we should get rid of the static self-registry, which won't 
> work with plugins.
> TODO: may need to be broken down further
>  * bring in the Poco library: Foundation only, strip out everything else
>  * rewrite the classloader to use Poco::ClassLoader
>  * remove static self-registry and load the classes explicitly when needed
>  * change the STATIC extension libraries to SHARED, and --whole-archive 
> should no longer be necessary
>  * the main executable and the integration tests should not link with any of 
> the extension libraries, and instead load them dynamically using (our wrapper 
> of) Poco::ClassLoader
>  * unit tests should link with the extensions, so they have access to all 
> their public methods, and can test the utility classes contained in the 
> extension
>  
> TODO: I expect complications; add them here when we find them.



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

Reply via email to