[xwiki-users] exchanging the ScriptMacro ClassLoader
Hello I want to write a java script macro which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode. My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory for my macro to exchange the used class loader or is there another recommended official way to ream my aim. Thank you very much for your help. Yours faithfully Roman Summer
Actually the right way would be to extend standard URL Java system. AttachmentClassLoaderFactory is not a very good name for something which is a lot more generic than just attachments, it also support any URL. So what is actually needed here is to provide a protocol handler, that's basically http://jira.xwiki.org/browse/XWIKI-6211. On Fri, Jul 4, 2014 at 1:11 PM, Summer, Roman <[email protected]> wrote:
Hello
I want to write a java script macro which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
Thank you very much for your help.
Yours faithfully
Roman Summer
_______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
Hi Roman, On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected])) wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API#HAdding... Thanks -Vincent PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki.
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems: - First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged. In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this. I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol. - Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String. Do you know a solution for my problems? Thanks Roman Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader Hi Roman, On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API#HAdding... Thanks -Vincent PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki.
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API#HAdding...
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
Hi, the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs. I hope you can help me? Roman -----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactor y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API#H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Installing those extensions instead of passing them in the macro is not an option ? On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactor y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API#H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally. -----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader Installing those extensions instead of passing them in the macro is not an option ? On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFacto r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API# H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
I was not talking about WEB-INF\lib but installing them as extensions, putting those jar in the extensions classloaders is not much different from putting them in the script macro classloaded except that it's not temporary but it's much easier and a lot better for performances. On Wed, Jul 9, 2014 at 6:26 PM, Summer, Roman <[email protected]> wrote:
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Installing those extensions instead of passing them in the macro is not an option ?
On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFacto r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API# H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
Do you know the best way to access the extensions classloaders for adding jars to it? -----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 18:34 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader I was not talking about WEB-INF\lib but installing them as extensions, putting those jar in the extensions classloaders is not much different from putting them in the script macro classloaded except that it's not temporary but it's much easier and a lot better for performances. On Wed, Jul 9, 2014 at 6:26 PM, Summer, Roman <[email protected]> wrote:
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Installing those extensions instead of passing them in the macro is not an option ?
On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFact o r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API # H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Simply by installing those extensions, see http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Manager+Appli... On Mon, Jul 14, 2014 at 9:43 AM, Summer, Roman <[email protected]> wrote:
Do you know the best way to access the extensions classloaders for adding jars to it?
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 18:34 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
I was not talking about WEB-INF\lib but installing them as extensions, putting those jar in the extensions classloaders is not much different from putting them in the script macro classloaded except that it's not temporary but it's much easier and a lot better for performances.
On Wed, Jul 9, 2014 at 6:26 PM, Summer, Roman <[email protected]> wrote:
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Installing those extensions instead of passing them in the macro is not an option ?
On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFact o r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+API # H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
Thanks for your quick answer. I took a look at the link. Do you think I could solve my problem by adding my maven repository with the included jars without having some version conflicts? Because I don't know if the classes are loaded if they have dependencies in different versions. (I haven't completely understood how this class loading works: http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Module+Archit...) Thank you for your answer Roman -----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Montag, 14. Juli 2014 10:12 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader Simply by installing those extensions, see http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Manager+Appli... On Mon, Jul 14, 2014 at 9:43 AM, Summer, Roman <[email protected]> wrote:
Do you know the best way to access the extensions classloaders for adding jars to it?
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 18:34 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
I was not talking about WEB-INF\lib but installing them as extensions, putting those jar in the extensions classloaders is not much different from putting them in the script macro classloaded except that it's not temporary but it's much easier and a lot better for performances.
On Wed, Jul 9, 2014 at 6:26 PM, Summer, Roman <[email protected]> wrote:
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Installing those extensions instead of passing them in the macro is not an option ?
On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFac t o r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+AP I # H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
Extension Manager is checking dependencies to make sure they are compatible, it's not because you are is a different classloader that you won't have any issue since your classloader inherit from the root one. You are not in an isolated classloader in your use case. On Mon, Jul 14, 2014 at 11:10 AM, Summer, Roman <[email protected]> wrote:
Thanks for your quick answer. I took a look at the link. Do you think I could solve my problem by adding my maven repository with the included jars without having some version conflicts? Because I don't know if the classes are loaded if they have dependencies in different versions. (I haven't completely understood how this class loading works: http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Module+Archit...)
Thank you for your answer Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Montag, 14. Juli 2014 10:12 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Simply by installing those extensions, see http://extensions.xwiki.org/xwiki/bin/view/Extension/Extension+Manager+Appli...
On Mon, Jul 14, 2014 at 9:43 AM, Summer, Roman <[email protected]> wrote:
Do you know the best way to access the extensions classloaders for adding jars to it?
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 18:34 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
I was not talking about WEB-INF\lib but installing them as extensions, putting those jar in the extensions classloaders is not much different from putting them in the script macro classloaded except that it's not temporary but it's much easier and a lot better for performances.
On Wed, Jul 9, 2014 at 6:26 PM, Summer, Roman <[email protected]> wrote:
No, it isn't. Putting them into the WEB-INF\lib folder could produce version conflicts by using newer versions of existing jar. Additionally I want to load the jars from an external maven repository without installing them locally.
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Mittwoch, 9. Juli 2014 15:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Installing those extensions instead of passing them in the macro is not an option ?
On Wed, Jul 9, 2014 at 2:39 PM, Summer, Roman <[email protected]> wrote:
Hi,
the exact goal is to load a list of maven artifacts and their dependencies inside of a the groovy macro, to have access to the classes of the belonging jar files. Using an URLStreamHandler means, I can only load one jar URL per artifact but I want to load multiple jar URLs per maven artifact (the dependencies of the artifact). Currently I created an delegating class loader (inside of an extended groovy macro) which loads these maven artifacts. This works, but it produces a memory leak, because the creaded AttachmentClassLoader is stored inside of the execution context. So the classes are loaded each time the macro is loaded. Therefore I look for an alternative way to load these URLs.
I hope you can help me?
Roman
-----Ursprüngliche Nachricht----- Von: users [mailto:[email protected]] Im Auftrag von Thomas Mortagne Gesendet: Dienstag, 8. Juli 2014 16:02 An: XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
On Tue, Jul 8, 2014 at 1:35 PM, Summer, Roman <[email protected]> wrote:
Hi, while I tried to implement the org.xwiki.classloader.ExtendedURLStreamHandler in the described way I recognized some problems:
- First, the class org.xwiki.rendering.internal.macro.script.ScriptClassLoaderHandlerListener uses the org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFactory which only constructs AttachmentClassLoaders which uses org.xwiki.classloader.internal.protocol.attachmentjar.AttachmentURLStreamHandler. Last one cannot be exchanged.
In the current implementation this is no problem because the ScriptMacro only supports the protocol “attach” and the URL Format itself. The AttachmentURLStreamHandler can handle this.
I think the Used ClassLoaderFactory should automatically get the right Class Loader depending on the used protocol.
- Second, I also have to resolve the dependencies of the given maven artifact in the URL. So I have to put more than one jar-URL in the URL Connection. Otherwise I have to declare all the dependencies in the URL String.
Do you know a solution for my problems?
What is the goal exactly ? From what I understood (and how I see http://jira.xwiki.org/browse/XWIKI-6211) the feature is to support an url that just contains the extension id (and optionally maybe the version, need to define a syntax for that) which is then requested with extension manager in the registered repositories. Extension Manager API gives you the dependencies of the extension. The simplest here is probably to generate an install plan and load all the extension listed in the plan.
Thanks
Roman
Von: Vincent Massol [mailto:[email protected]] Im Auftrag von [email protected] Gesendet: Freitag, 4. Juli 2014 14:30 An: Summer, Roman; XWiki Users Betreff: Re: [xwiki-users] exchanging the ScriptMacro ClassLoader
Hi Roman,
On 4 Jul 2014 at 13:11:23, Summer, Roman ([email protected](mailto:[email protected]))<mailto:[email protected](mailto:[email protected]))> wrote:
Hello
I want to write a java script macro
I had to read this 3 times to understand it ;) (I kept thinking about "javascript macro”).
which is able to load jars from an external currently not supported source (e.g. from a maven repository). Therefore I want to exchange the used class loader. Overriding the ScriptMacroParameters#getJars() method is not possible for me, because I only want to load the classes in view and not in edit mode.
My question: How is it possible to exchange the currently injected implementation of the interface org.xwiki.rendering.internal.macro.script.AttachmentClassLoaderFac t o r y for my macro to exchange the used class loader or is there another recommended official way to ream my aim.
See http://extensions.xwiki.org/xwiki/bin/view/Extension/ClassLoader+AP I # H AddinganewURLStreamHandler
Thanks -Vincent
PS1: You should checkout OPS4J Pax URL: https://ops4j1.jira.com/wiki/display/paxurl/Mvn+Protocol
PS2: I think we would be interested by such a contribution. Actually a great contribution would be to bridge our code to use PAX URL (not even sure anything is needed for that!). We probably just need a tutorial explaining how to use PAX URL in XWiki. _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
-- Thomas Mortagne
participants (3)
-
Summer, Roman -
Thomas Mortagne -
vincent@massol.net