[
https://issues.apache.org/jira/browse/SLING-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12704400#action_12704400
]
Michael Dürig commented on SLING-945:
-------------------------------------
Java 1.6 introduces JavaFileManager [1] for compilation. Something along these
lines is what I think is needed for scripting in Sling.
[1] http://java.sun.com/javase/6/docs/api/javax/tools/JavaFileManager.html
> Introduce a ClassReader for scripts which need to do symbol resolution at
> compile time
> --------------------------------------------------------------------------------------
>
> Key: SLING-945
> URL: https://issues.apache.org/jira/browse/SLING-945
> Project: Sling
> Issue Type: Bug
> Components: Scripting
> Reporter: Michael Dürig
>
> As mentioned in [1] scripts (which compile to byte code) should not use the
> class loader for loading class files to resolve external symbols. Class
> loaders are designed to load binary representations of classes into the JVM
> at runtime. Using them for scripting languages which need to resolve symbols
> at compile time is a hack. In fact all languages which I looked at and which
> do symbol resolution at compile time use the same
> 'classloader.getResource("foo.class")' hack to get access to a class file.
> Languages which require to browse the classes available to them at compile
> time need to resort to even more esoteric hacks.
> I faced this issue when I implemented support for Scala. To work around it I
> implemented a (Scala specific) file system abstraction on top of Felix's
> bundles. While this works ATM, the approach might not be too stable since it
> partially relies on implementation details of the underlying classloaders.
> Since other scripting languages have the same problem (i.e. JSP AFAIK) I
> suggest to factor the hacks into a separate ClassReader service. Scripts can
> then use this at compile time to resolve external symbols.
> [1] http://sling.markmail.org/message/ly3yhlmqufpugjly
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.