You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by tc...@apache.org on 2005/08/16 09:51:49 UTC
svn commit: r232954 - in /jakarta/commons/sandbox/jci/trunk: .classpath
project.xml
src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java
Author: tcurdt
Date: Tue Aug 16 00:51:41 2005
New Revision: 232954
URL: http://svn.apache.org/viewcvs?rev=232954&view=rev
Log:
a very rough outline how the groovy compilation could work
Modified:
jakarta/commons/sandbox/jci/trunk/.classpath
jakarta/commons/sandbox/jci/trunk/project.xml
jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java
Modified: jakarta/commons/sandbox/jci/trunk/.classpath
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/.classpath?rev=232954&r1=232953&r2=232954&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/.classpath (original)
+++ jakarta/commons/sandbox/jci/trunk/.classpath Tue Aug 16 00:51:41 2005
@@ -11,5 +11,6 @@
<classpathentry kind="var" path="MAVEN_REPO/janino/jars/janino-2.3.0.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"/>
<classpathentry kind="var" path="MAVEN_REPO/eclipse/jars/jdtcore-3.1.0.jar"/>
+ <classpathentry kind="var" path="MAVEN_REPO/groovy/jars/groovy-1.0-jsr-02.jar"/>
<classpathentry kind="output" path="eclipse"/>
</classpath>
Modified: jakarta/commons/sandbox/jci/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/project.xml?rev=232954&r1=232953&r2=232954&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/project.xml (original)
+++ jakarta/commons/sandbox/jci/trunk/project.xml Tue Aug 16 00:51:41 2005
@@ -116,6 +116,12 @@
<version>2.3.0</version>
</dependency>
+ <dependency>
+ <groupId>groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>1.0-jsr-02</version>
+ </dependency>
+
</dependencies>
Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java?rev=232954&r1=232953&r2=232954&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java Tue Aug 16 00:51:41 2005
@@ -1,22 +1,79 @@
package org.apache.commons.jci.compilers.groovy;
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
import org.apache.commons.jci.compilers.JavaCompiler;
+import org.apache.commons.jci.problems.CompilationProblem;
import org.apache.commons.jci.problems.CompilationProblemHandler;
import org.apache.commons.jci.readers.ResourceReader;
import org.apache.commons.jci.stores.ResourceStore;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.codehaus.groovy.control.CompilationFailedException;
+import org.codehaus.groovy.control.CompilationUnit;
+import org.codehaus.groovy.control.CompilerConfiguration;
+import org.codehaus.groovy.control.ErrorCollector;
+import org.codehaus.groovy.control.SourceUnit;
+import org.codehaus.groovy.control.messages.Message;
+import org.codehaus.groovy.control.messages.WarningMessage;
+import org.codehaus.groovy.tools.GroovyClass;
public final class GroovyJavaCompiler implements JavaCompiler {
private final static Log log = LogFactory.getLog(GroovyJavaCompiler.class);
-
+
public void compile(
final String[] clazzNames,
final ResourceReader reader,
final ResourceStore store,
final CompilationProblemHandler problemHandler
) {
- throw new RuntimeException("NYI");
+
+ final ClassLoader classloader = null;
+ final ErrorCollector collector = null;
+ final CompilerConfiguration configuration = null;
+ final CompilationUnit unit = null;
+ final SourceUnit[] source = new SourceUnit[clazzNames.length];
+ for (int i = 0; i < source.length; i++) {
+ source[i] = new SourceUnit(
+ clazzNames[i],
+ new String(reader.getContent(clazzNames[i])),
+ configuration,
+ classloader,
+ collector
+ );
+ unit.addSource(source[i]);
+ }
+ try {
+ unit.compile();
+
+ final List classes = unit.getClasses();
+ for (final Iterator it = classes.iterator(); it.hasNext();) {
+ final GroovyClass clazz = (GroovyClass) it.next();
+ final String name = clazz.getName().replace('.', File.separatorChar) + ".class";
+ byte[] bytes = clazz.getBytes();
+ store.write(name, bytes);
+ }
+ } catch (final CompilationFailedException e) {
+ final ErrorCollector errorC = e.getUnit().getErrorCollector();
+
+ final List warnings = errorC.getWarnings();
+ for (final Iterator it = warnings.iterator(); it.hasNext();) {
+ final WarningMessage warning = (WarningMessage) it.next();
+ problemHandler.handle(
+ new CompilationProblem(0, "", warning.getMessage(), 0, 0, false)
+ );
+ }
+
+ final List errors = errorC.getErrors();
+ for (final Iterator it = errors.iterator(); it.hasNext();) {
+ final Message message = (Message) it.next();
+ problemHandler.handle(
+ new CompilationProblem(0, "", "", 0, 0, false)
+ );
+ }
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org