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

Roy Teeuwen edited comment on GROOVY-10885 at 12/29/22 9:09 PM:
----------------------------------------------------------------

[~emilles] what would be very helpful is to at least create some API methods in 
the MetaClassRegistryImpl to make it easier to add extra methods. At this 
moment I had to copy over a lot of code from other sources, notably the 
following two methods I'd expect to have available in an API somewhere:

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#L117

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#L102


was (Author: royteeuwen):
[~emilles] what would be very helpful is to at least clean up the code of the 
MetaClassRegistryImpl to make it easier to add extra methods. At this moment I 
had to copy over a lot of code from other sources, notably the following two 
methods I'd expect to have available in an API somewhere:

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#L117

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#L102

> 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)

Reply via email to