[
https://issues.apache.org/jira/browse/GROOVY-10885?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17652032#comment-17652032
]
Eric Milles commented on GROOVY-10885:
--------------------------------------
There are hooks in OSGi for some of this kind of thing – like you noted the
bundle start and stop events. As [~blackdrag] mentions, a specific scenario
description would be helpful. How much bundle loading and unloading do you
have going on that adds groovy extensions to other bundle(s) or scripts in your
environment?
I would not be keen on changing any Groovy compiler/runtime internals without a
strong case. As you say you already have a workaround. Another subproject
should provide some payoff for a decent-sized audience. Otherwise, as long as
we provide hooks, you can self-host the code to do this.
> Make Groovy Extensions work in an OSGi environment
> --------------------------------------------------
>
> Key: GROOVY-10885
> URL: https://issues.apache.org/jira/browse/GROOVY-10885
> Project: Groovy
> Issue Type: Improvement
> Components: groovy-runtime
> Reporter: Roy Teeuwen
> Priority: Major
>
> The current setup for loading in ExtensionModule's does not support groovy
> extensions correctly in OSGi (tested in Apache Felix).
> The reason is that the
> [MetaClassRegistryImpl|https://github.com/apache/groovy/blob/master/src/main/java/org/codehaus/groovy/runtime/metaclass/MetaClassRegistryImpl.java]
> creates an
> [ExtensionModuleScanner|https://github.com/apache/groovy/blob/master/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModuleScanner.java],
> which scan's the classloader for every jar file with an ExtensionModule
> properties file. In an OSGi environment, the classloader does not have access
> to every jar file (bundle) by default.
> I have created an example of an OSGi compatible implementation, using a
> BundleListener to listen for the addition of a Bundle to the OSGi
> environment, and then use this to get a ClassLoader for this Bundle to load
> the ExtensionModule properties file of that Bundle:
> [Activator|https://github.com/orbinson/aem-groovy-console/blob/feature/update-to-groovy-4.x/groovy/groovy-osgi/src/main/java/groovy/osgi/activator/Activator.java]
> Open questions:
> - What to do when a Bundle gets reloaded / removed, in an OSGi environment
> this can be done at runtime but I don't see any methods available in the
> MetaClassRegistry / CachedClass to remove MetaMethods
> - Where is this code best hosted? Is it ok to make a new subproject named
> groovy-osgi that contains the code to make this work, or does Groovy not see
> this relevant in the groovy git project?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)