You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2011/01/24 23:13:32 UTC
svn commit: r1063017 - in /incubator/clerezza/trunk/scala-scripting:
script-engine/
script-engine/src/main/scala/org/apache/clerezza/scala/scripting/
script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/
tests/src/test/scala/org/apache...
Author: reto
Date: Mon Jan 24 22:13:31 2011
New Revision: 1063017
URL: http://svn.apache.org/viewvc?rev=1063017&view=rev
Log:
CLEREZZA-408: working with multiple byte-arrays by assigning different virtual-file name, refactoring around directory wrapping
Modified:
incubator/clerezza/trunk/scala-scripting/script-engine/pom.xml
incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/TrackingCompiler.scala
incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/VirtualDirectoryWrapper.scala
incubator/clerezza/trunk/scala-scripting/tests/src/test/scala/org/apache/clerezza/scala/tests/CompilerServiceTest.scala
Modified: incubator/clerezza/trunk/scala-scripting/script-engine/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/scala-scripting/script-engine/pom.xml?rev=1063017&r1=1063016&r2=1063017&view=diff
==============================================================================
--- incubator/clerezza/trunk/scala-scripting/script-engine/pom.xml (original)
+++ incubator/clerezza/trunk/scala-scripting/script-engine/pom.xml Mon Jan 24 22:13:31 2011
@@ -43,8 +43,7 @@
<configuration>
<instructions>
<Service-Component>OSGI-INF/serviceComponents.xml</Service-Component>
- <Export-Package>org.apache.clerezza.scala.scripting</Export-Package>
- <Private-Package>org.apache.clerezza.scala.scripting.util</Private-Package>
+ <Export-Package>org.apache.clerezza.scala.scripting,org.apache.clerezza.scala.scripting.util</Export-Package>
<DynamicImport-Package>*</DynamicImport-Package>
<Bundle-SymbolicName>org.apache.clerezza.scala.scripting</Bundle-SymbolicName>
</instructions>
Modified: incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/TrackingCompiler.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/TrackingCompiler.scala?rev=1063017&r1=1063016&r2=1063017&view=diff
==============================================================================
--- incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/TrackingCompiler.scala (original)
+++ incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/TrackingCompiler.scala Mon Jan 24 22:13:31 2011
@@ -19,6 +19,7 @@
package org.apache.clerezza.scala.scripting
+
import org.apache.clerezza.scala.scripting.util.FileWrapper
import org.apache.clerezza.scala.scripting.util.GenericFileWrapperTrait
import org.apache.clerezza.scala.scripting.util.SplittingDirectory
@@ -52,7 +53,11 @@ class TrackingCompiler private (bundleCo
@throws(classOf[CompileErrorsException])
def compile(sources: List[Array[Char]]): List[Class[_]] = {
writtenClasses.clear()
- val sourceFiles: List[SourceFile] = for(chars <- sources) yield new BatchSourceFile("<script>", chars)
+ var i = 0
+ val sourceFiles: List[SourceFile] = for(chars <- sources) yield {
+ i = i +1;
+ new BatchSourceFile("<script"+i+">", chars)
+ }
(new Run).compileSources(sourceFiles)
if (reporter.hasErrors) {
reporter.reset
@@ -95,31 +100,11 @@ object TrackingCompiler {
val writtenClasses: mutable.ListBuffer[AbstractFile] = mutable.ListBuffer[AbstractFile]()
val settings = {
- trait VirtualDirectoryFlavour extends VirtualDirectoryWrapper {
- abstract override def output = {
- println("unexpected call to output "+name)
- super.output
- }
- }
-
- def wrap(f: AbstractFile): AbstractFile = {
- f match {
- case d: VirtualDirectory => new VirtualDirectoryWrapper(d, wrap) with LoggingFileWrapper with VirtualDirectoryFlavour {
- override def output = d.output
- }
- case o => new FileWrapper(o, wrap) with LoggingFileWrapper
- }
- }
-
- trait LoggingFileWrapper extends GenericFileWrapperTrait {
-
- abstract override def output = {
- writtenClasses += this
- super.output
- }
+ def outputListener(abtractFile: AbstractFile) {
+ writtenClasses += abtractFile
}
val settings = new Settings
- settings.outputDirs setSingleOutput wrap(outputDirectory)
+ settings.outputDirs setSingleOutput VirtualDirectoryWrapper.wrap(outputDirectory, outputListener)
settings
}
new TrackingCompiler(bundleContext,
Modified: incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/VirtualDirectoryWrapper.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/VirtualDirectoryWrapper.scala?rev=1063017&r1=1063016&r2=1063017&view=diff
==============================================================================
--- incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/VirtualDirectoryWrapper.scala (original)
+++ incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/util/VirtualDirectoryWrapper.scala Mon Jan 24 22:13:31 2011
@@ -10,7 +10,7 @@ import scala.tools.nsc.io.VirtualDirecto
class VirtualDirectoryWrapper(val wrapped: AbstractFile,
val childWrapper: (AbstractFile) => AbstractFile) extends VirtualDirectory(null, None)
- with GenericFileWrapperTrait {
+ with GenericFileWrapperTrait {
lastModified =wrapped.lastModified
override def output = {
@@ -39,3 +39,37 @@ class VirtualDirectoryWrapper(val wrappe
}
}
+
+object VirtualDirectoryWrapper {
+ trait VirtualDirectoryFlavour extends VirtualDirectoryWrapper {
+ abstract override def output = {
+ println("unexpected call to output "+name)
+ super.output
+ }
+ }
+
+ def wrap(f: AbstractFile, outputListenerParam: (AbstractFile) => Unit): AbstractFile = {
+ def innerWrap(f: AbstractFile) = wrap(f, outputListenerParam)
+ f match {
+ case d: VirtualDirectory => new VirtualDirectoryWrapper(d,
+ innerWrap)
+ with LoggingFileWrapper with VirtualDirectoryFlavour {
+ override def output = d.output
+ val outputListener = outputListenerParam
+ }
+ case o => new FileWrapper(o, innerWrap) with LoggingFileWrapper {
+ val outputListener = outputListenerParam
+ }
+ }
+ }
+
+ trait LoggingFileWrapper extends GenericFileWrapperTrait {
+
+ val outputListener: (AbstractFile) => Unit
+
+ abstract override def output = {
+ outputListener(this)
+ super.output
+ }
+ }
+}
Modified: incubator/clerezza/trunk/scala-scripting/tests/src/test/scala/org/apache/clerezza/scala/tests/CompilerServiceTest.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/scala-scripting/tests/src/test/scala/org/apache/clerezza/scala/tests/CompilerServiceTest.scala?rev=1063017&r1=1063016&r2=1063017&view=diff
==============================================================================
--- incubator/clerezza/trunk/scala-scripting/tests/src/test/scala/org/apache/clerezza/scala/tests/CompilerServiceTest.scala (original)
+++ incubator/clerezza/trunk/scala-scripting/tests/src/test/scala/org/apache/clerezza/scala/tests/CompilerServiceTest.scala Mon Jan 24 22:13:31 2011
@@ -108,11 +108,27 @@ class CompilerServiceTest {
}
}
"""
- val compileResult = priv(service.compile(List(s.toCharArray)))
+ //and another class
+ val s2 = """
+ package foo {
+ class TestClass2() {
+ println("constructing TestClass2");
+ }
+ object TestClass2 {
+ println("constructing TestClass2 Object");
+ val msg = "Hello2b"
+ }
+ }
+ """
+ val compileResult = priv(service.compile(List(s.toCharArray, s2.toCharArray)))
val testClassClass: Class[_] = compileResult(0)
Assert.assertEquals("foo.TestClass", testClassClass.getName)
val method = testClassClass.getMethod("msg")
Assert.assertEquals("Hello2", method.invoke(null))
+ val testClassClass2: Class[_] = compileResult(1)
+ Assert.assertEquals("foo.TestClass2", testClassClass2.getName)
+ val method2 = testClassClass2.getMethod("msg")
+ Assert.assertEquals("Hello2b", method2.invoke(null))
}
val methodFrom1Again = testClassClass1.getMethod("msg")
Assert.assertEquals("Hello", methodFrom1Again.invoke(null))