Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml?rev=1063515&r1=1063514&r2=1063515&view=diff ============================================================================== --- incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml (original) +++ incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml Tue Jan 25 23:19:36 2011 @@ -31,6 +31,7 @@ <module>org.apache.clerezza.ext.com.ibm.icu</module> <module>org.apache.clerezza.ext.javax.mail</module> <module>org.apache.clerezza.ext.org.json.simple</module> + <module>org.apache.clerezza.ext.org.ops4j.pax.swissbox.tinybundles</module> <module>org.apache.clerezza.internal.archetype</module> <module>org.apache.clerezza.jaxrs.extensions</module> <module>org.apache.clerezza.jaxrs.rdf.providers</module> @@ -104,6 +105,7 @@ <module>org.apache.clerezza.rdf.web</module> <module>org.apache.clerezza.shell</module> <module>org.apache.clerezza.shell.felixshellcommand</module> + <module>org.apache.clerezza.sourcebundle</module> <module>org.apache.clerezza.sshshell</module> <module>org.apache.clerezza.templating</module> <module>org.apache.clerezza.templating.seedsnipe</module> @@ -494,6 +496,11 @@ <version>1.2.1</version> </dependency> <dependency> + <groupId>org.ops4j.pax.swissbox</groupId> + <artifactId>pax-swissbox-tinybundles</artifactId> + <version>1.3.0</version> + </dependency> + <dependency> <groupId>org.ops4j.pax.exam</groupId> <artifactId>pax-exam-junit</artifactId> <version>1.2.3</version> @@ -570,6 +577,11 @@ </dependency> <dependency> <groupId>org.apache.clerezza.ext</groupId> + <artifactId>org.ops4j.pax.swissbox.tinybundles</artifactId> + <version>0.1-incubating-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.clerezza.ext</groupId> <artifactId>javax.mail</artifactId> <version>0.4-incubating-SNAPSHOT</version> </dependency> @@ -1155,6 +1167,11 @@ </dependency> <dependency> <groupId>org.apache.clerezza</groupId> + <artifactId>org.apache.clerezza.sourcebundle</artifactId> + <version>0.1-incubating-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.clerezza</groupId> <artifactId>org.apache.clerezza.utils</artifactId> <version>0.1-incubating-SNAPSHOT</version> </dependency>
Modified: incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/CompilerService.scala URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/CompilerService.scala?rev=1063515&r1=1063514&r2=1063515&view=diff ============================================================================== --- incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/CompilerService.scala (original) +++ incubator/clerezza/trunk/scala-scripting/script-engine/src/main/scala/org/apache/clerezza/scala/scripting/CompilerService.scala Tue Jan 25 23:19:36 2011 @@ -163,5 +163,27 @@ class CompilerService() extends BundleLi } } + def compileToDir(sources: List[Array[Char]], outputDirectory: AbstractFile): List[AbstractFile] = { + AccessController.checkPermission(new CompilePermission) + sharedCompiler.synchronized { + try { + AccessController.doPrivileged[List[AbstractFile]]( + new PrivilegedExceptionAction[List[AbstractFile]] { + def run() = { + val out = new ByteArrayOutputStream + val printWriter = new PrintWriter(out) + val compiler = createCompiler(printWriter, outputDirectory) + try { + compiler.compileToDir(sources) + } catch { + case c: CompileErrorsException => throw new CompileErrorsException(new String(out.toByteArray, "utf-8")) + case e => throw e + } + } + }) + } + } + } + } 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=1063515&r1=1063514&r2=1063515&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 Tue Jan 25 23:19:36 2011 @@ -45,13 +45,13 @@ class TrackingCompiler private (bundleCo writtenClasses: mutable.ListBuffer[AbstractFile]) extends BundleContextScalaCompiler(bundleContext : BundleContext, settings: Settings, reporter: Reporter) { - /** - * compiles a list of class sources returning a list of compiled classes + * compiles a list of classes to settings.outputDirs returning a + * the generated AbstractFiles */ @throws(classOf[CompileErrorsException]) - def compile(sources: List[Array[Char]]): List[Class[_]] = { + def compileToDir(sources: List[Array[Char]]): List[AbstractFile] = { writtenClasses.clear() var i = 0 val sourceFiles: List[SourceFile] = for(chars <- sources) yield { @@ -63,8 +63,17 @@ class TrackingCompiler private (bundleCo reporter.reset throw new CompileErrorsException; } + writtenClasses.toList + } + + /** + * compiles a list of class sources returning a list of compiled classes + */ + @throws(classOf[CompileErrorsException]) + def compile(sources: List[Array[Char]]): List[Class[_]] = { + val classFiles = compileToDir(sources) val classLoader = classLoaderBuilder() - val result: List[Class[_]] = for (classFile <- writtenClasses.toList; + val result: List[Class[_]] = for (classFile <- classFiles; if (!classFile.name.contains('$'))) yield { val path = classFile.path val relevantPath = path.substring(path.indexOf('/')+1,path.lastIndexOf('.'))
