[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-18 Thread Carsten Ziegeler (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12721113#action_12721113
 ] 

Carsten Ziegeler commented on SLING-1007:
-

I'll start with the original issue and when we've finished that we can have a 
look at the other use case.

 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger
Assignee: Carsten Ziegeler

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-16 Thread JIRA

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12720184#action_12720184
 ] 

Michael Dürig commented on SLING-1007:
--

I don't think so. If Sling wants to provide a clean interface for script engine 
implementers it should not abuse the class loader for this. The reason why we 
'don't have an issue' with Jasper is because Jasper already implements the 
obscure tricks which are necessary to do compile time symbol resolution against 
a class loader. So we are just lucky here. The current approach forces each 
implementer of a new script engine to resort to the same obscure tricks over 
and over again. 




 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-15 Thread JIRA

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12719505#action_12719505
 ] 

Michael Dürig commented on SLING-1007:
--

I think it is a good idea to isolate script engine implementations from the 
class loader internals. However as mentioned in [1] and [2], I think the 
proposed approach does not go far enough. Scripts which have a compile step 
(i.e. JSP and many others) need to resolve symbols. Doing this against a class 
loader is brittle. 

Java 1.6 introduces JavaFileManager [3] for compilation. Something along these 
lines is what I think is needed for scripting in Sling.

[1] http://sling.markmail.org/message/ly3yhlmqufpugjly
[2] https://issues.apache.org/jira/browse/SLING-945
[3] http://java.sun.com/javase/6/docs/api/javax/tools/JavaFileManager.html

 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-15 Thread Felix Meschberger (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12719509#action_12719509
 ] 

Felix Meschberger commented on SLING-1007:
--

As I said before this is not a primary issue for now (the only scripting 
language I know of with similar problems is Scala).

For this concrete issue, it is completely out of scope and should not be 
considered right now. If we later think  we have to broaden the issue/solution, 
we still can do that. For now a simple classloader is what we need.

 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-15 Thread JIRA

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12719527#action_12719527
 ] 

Michael Dürig commented on SLING-1007:
--

 As I said before this is not a primary issue for now (the only scripting 
 language I 
 know of with similar problems is Scala).

Take a look at the JSP compiler then. It has exactly the same problem. 




 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-1007) Implement helper classloader

2009-06-15 Thread Felix Meschberger (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-1007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12719530#action_12719530
 ] 

Felix Meschberger commented on SLING-1007:
--

 Take a look at the JSP compiler then. It has exactly the same problem. 

Maybe yes, when looking from inside. But since we are using Jasper (with slight 
modifications) we don't have an issue there.

 Implement helper classloader
 

 Key: SLING-1007
 URL: https://issues.apache.org/jira/browse/SLING-1007
 Project: Sling
  Issue Type: New Feature
  Components: Commons OSGi
Affects Versions: Commons OSGi 2.0.4
Reporter: Felix Meschberger

 Currently we require the ScriptEngine[Factory] implementation bundles to 
 create bundle header
DynamicImport-Package: *
 to be able to access anything from the scripts since scripts are executed in 
 the class loader of the script engine bundle.
 The downside of running the scripts in the class loader of the script engine 
 bundle and using this global dynamic import are:
   * scripts see internal classes of the script engine bundle
   * scripts engine bundles must provide for classes for the scripts
   * whenever a wire has been created for a script and the providing bundle is 
 updated or uninstalled, the script engine bundle is also cycled.
 A better approach might be to provide a ClassLoader implementation which 
 behind the scenes manages access to packages exported by the bundles 
 installed in the system. I would imagine such an implementation along the 
 following lines:
   * Uses PackageAdmin to find a bundle providing the required class
   * Copes with bundles being updated or uninstalled
 Maybe coping with bundles being updated or uninstalled requires a two level 
 approach: a fronend class loader which answers the class and resource 
 accesses by relaying to a backend class loader. The back end classloader does 
 the hardwork of loading classes and resources by querying bundles. Whenever a 
 bundle is updated or uninstalled the backend classloader gets replaced. A 
 similar approach has been chosen for the Repository ClassLoader in the 
 jcr/classloader bundle.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.