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