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/17 10:34:57 UTC

svn commit: r233135 - in /jakarta/commons/sandbox/jci/trunk: ./ src/java/org/apache/commons/jci/compilers/eclipse/ src/java/org/apache/commons/jci/compilers/groovy/ src/java/org/apache/commons/jci/compilers/janino/ src/java/org/apache/commons/jci/monit...

Author: tcurdt
Date: Wed Aug 17 01:34:29 2005
New Revision: 233135

URL: http://svn.apache.org/viewcvs?rev=233135&view=rev
Log:
CompilationProblem changed to an interface (thanks to Joerg),
more testcase coverage,
a first working groovy compiler implementation


Added:
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java   (with props)
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java   (with props)
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java   (with props)
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/ThreadUtils.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/GroovySources.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/JavaSources.java
      - copied, changed from r233037, jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/Programs.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/ThreadUtilsTestCase.java
Removed:
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/Programs.java
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/eclipse/EclipseJavaCompiler.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyJavaCompiler.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoJavaCompiler.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/CompilationProblem.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/ConsoleCompilationProblemHandler.java
    jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/LogCompilationProblemHandler.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/ReloadingClassLoaderTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompilerTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/groovy/GroovyJavaCompilerTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/janino/JaninoJavaCompilerTestCase.java
    jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/problems/CompilationProblemTestCase.java

Modified: jakarta/commons/sandbox/jci/trunk/.classpath
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/.classpath?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/.classpath (original)
+++ jakarta/commons/sandbox/jci/trunk/.classpath Wed Aug 17 01:34:29 2005
@@ -12,5 +12,12 @@
 	<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="var" path="MAVEN_REPO/janino/jars/janino-2.3.7.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-util-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-tree-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-attrs-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-analysis-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/asm/jars/asm-commons-2.0.jar"/>
+	<classpathentry kind="var" path="MAVEN_REPO/antlr/jars/antlr-2.7.5.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=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/project.xml (original)
+++ jakarta/commons/sandbox/jci/trunk/project.xml Wed Aug 17 01:34:29 2005
@@ -121,6 +121,41 @@
       <artifactId>groovy</artifactId>
       <version>1.0-jsr-02</version>
     </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-util</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-attrs</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-analysis</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-tree</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-commons</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>antlr</groupId>
+      <artifactId>antlr</artifactId>
+      <version>2.7.5</version>
+    </dependency>
 
   </dependencies>
 

Added: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,72 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.jci.compilers.eclipse;
+
+import org.apache.commons.jci.problems.CompilationProblem;
+import org.eclipse.jdt.core.compiler.IProblem;
+
+public class EclipseCompilationProblem implements CompilationProblem {
+
+    private final IProblem problem;
+
+    public EclipseCompilationProblem(final IProblem pProblem) {
+        problem = pProblem;
+    }
+
+    public boolean isError() {
+        return problem.isError();
+    }
+
+    public String getFileName() {
+        return new String(problem.getOriginatingFileName());
+    }
+
+    public int getStartLine() {
+        return problem.getSourceLineNumber();
+    }
+
+    public int getStartColumn() {
+        return problem.getSourceStart();
+    }
+
+    public int getEndLine() {
+        return getStartLine();
+    }
+
+    public int getEndColumn() {
+        return problem.getSourceEnd();
+    }
+
+    public String getMessage() {
+        return problem.getMessage();
+    }
+
+    public String toString() {
+        final StringBuffer sb = new StringBuffer();
+        sb.append(getFileName()).append(" (");
+        sb.append(getStartLine());
+        sb.append(":");
+        sb.append(getStartColumn());
+        sb.append(") : ");
+        sb.append(getMessage());
+        return sb.toString();
+    }
+
+    public int getId() {
+        return problem.getID();
+    }
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseCompilationProblem.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompiler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompiler.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompiler.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompiler.java Wed Aug 17 01:34:29 2005
@@ -25,7 +25,6 @@
 import java.util.Set;
 import java.util.StringTokenizer;
 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;
@@ -232,10 +231,7 @@
                         final IProblem[] problems = result.getProblems();
                         for (int i = 0; i < problems.length; i++) {
                             final IProblem problem = problems[i];
-                            pProblemHandler.handle(new CompilationProblem(problem.getID(),
-                                    new String(problem.getOriginatingFileName()), problem
-                                            .getMessage(), problem.getSourceLineNumber(), problem
-                                            .getSourceLineNumber(), problem.isError()));
+                            pProblemHandler.handle(new EclipseCompilationProblem(problem));
                         }
                     }
                 }

Added: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,99 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.jci.compilers.groovy;
+
+import org.apache.commons.jci.problems.CompilationProblem;
+import org.codehaus.groovy.control.messages.ExceptionMessage;
+import org.codehaus.groovy.control.messages.Message;
+import org.codehaus.groovy.control.messages.SimpleMessage;
+import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
+import org.codehaus.groovy.syntax.SyntaxException;
+
+public class GroovyCompilationProblem implements CompilationProblem {
+
+    private final String fileName;
+    private final String message;
+    private final boolean error;
+    private final int startLine;
+    private final int startColumn;
+    private final int endLine;
+    private final int endColumn;
+
+    public GroovyCompilationProblem(final Message pMessage) {
+        if (pMessage instanceof SimpleMessage) {
+            error = false;
+        } else {
+            error = true;
+        }
+        if (pMessage instanceof SyntaxErrorMessage) {
+            SyntaxErrorMessage syntaxErrorMessage = (SyntaxErrorMessage)pMessage;
+            SyntaxException syntaxException = syntaxErrorMessage.getCause();
+            message = syntaxException.getMessage();
+            fileName = syntaxException.getSourceLocator();
+            // FIXME: getStartLine() vs. getLine()
+            startLine = syntaxException.getStartLine();
+            startColumn = syntaxException.getStartColumn();
+            endLine = syntaxException.getLine();
+            endColumn = syntaxException.getEndColumn();
+        } else {
+            fileName = "";
+            startLine = 0;
+            startColumn = 0;
+            endLine = 0;
+            endColumn = 0;
+            if (pMessage instanceof ExceptionMessage) {
+                message = ((ExceptionMessage)pMessage).getCause().getMessage();
+            } else if (pMessage instanceof SimpleMessage) {
+                message = ((SimpleMessage)pMessage).getMessage();
+            } else {
+                message = pMessage.toString();
+            }
+        }
+    }
+
+    public boolean isError() {
+        return error;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public int getStartLine() {
+        return startLine;
+    }
+
+    public int getStartColumn() {
+        return startColumn;
+    }
+
+    public int getEndLine() {
+        return endLine;
+    }
+
+    public int getEndColumn() {
+        return endColumn;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public String toString() {
+        return getMessage();
+    }
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/groovy/GroovyCompilationProblem.java
------------------------------------------------------------------------------
    svn:executable = *

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=233135&r1=233134&r2=233135&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 Wed Aug 17 01:34:29 2005
@@ -4,7 +4,6 @@
 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;
@@ -30,15 +29,17 @@
             final CompilationProblemHandler problemHandler
             ) {
      
-        final ClassLoader classloader = null;
-        final ErrorCollector collector = null;
-        final CompilerConfiguration configuration = null;
-        final CompilationUnit unit = null;
+        final CompilerConfiguration configuration = new CompilerConfiguration();
+        final ClassLoader classloader = this.getClass().getClassLoader();
+        final ErrorCollector collector = new ErrorCollector(configuration);
+        final CompilationUnit unit = new CompilationUnit(configuration);
         final SourceUnit[] source = new SourceUnit[clazzNames.length];
         for (int i = 0; i < source.length; i++) {
+            final String filename = clazzNames[i].replace('.','/') + ".java";
+            log.debug("adding source unit " + filename);
             source[i] = new SourceUnit(
-                    clazzNames[i],
-                    new String(reader.getContent(clazzNames[i])),
+                    filename,
+                    new String(reader.getContent(filename)), // FIXME delay the read
                     configuration,
                     classloader,
                     collector
@@ -46,31 +47,34 @@
             unit.addSource(source[i]);
         }
         try {
+            log.debug("compiling");
             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();
+                final byte[] bytes = clazz.getBytes();
                 store.write(name, bytes);
             }
         } catch (final CompilationFailedException e) {
-            final ErrorCollector errorC = e.getUnit().getErrorCollector();
+            final ErrorCollector col = e.getUnit().getErrorCollector();
             
-            final List warnings = errorC.getWarnings();
+            final List warnings = col.getWarnings();
+            log.debug("handling " + warnings.size() + " warnings");
             for (final Iterator it = warnings.iterator(); it.hasNext();) {
                 final WarningMessage warning = (WarningMessage) it.next();
                 problemHandler.handle(
-                        new CompilationProblem(0, "", warning.getMessage(), 0, 0, false)
+                        new GroovyCompilationProblem(warning)
                         );
             }
 
-            final List errors = errorC.getErrors();
+            final List errors = col.getErrors();
+            log.debug("handling " + errors.size() + " errors");
             for (final Iterator it = errors.iterator(); it.hasNext();) {
                 final Message message = (Message) it.next();
                 problemHandler.handle(
-                        new CompilationProblem(0, "", "", 0, 0, false)
+                        new GroovyCompilationProblem(message)
                         );                
             }
         }

Added: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,93 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.jci.compilers.janino;
+
+import org.apache.commons.jci.problems.CompilationProblem;
+import org.codehaus.janino.Location;
+import org.codehaus.janino.Scanner.LocatedException;
+
+public class JaninoCompilationProblem implements CompilationProblem {
+
+    private final Location location;
+    private final String fileName;
+    private final String message;
+    private final boolean error;
+
+    public JaninoCompilationProblem(final LocatedException pLocatedException) {
+        this(pLocatedException.getLocation(), pLocatedException.getMessage(), true);
+    }
+
+    public JaninoCompilationProblem(final Location pLocation, final String pMessage, final boolean pError) {
+      this(pLocation.getFileName(), pLocation, pMessage, pError);
+    }
+
+    public JaninoCompilationProblem(final String pFilename, final String pMessage, final boolean pError) {
+        this(pFilename, null, pMessage, pError);
+    }
+
+    public JaninoCompilationProblem(final String pFilename, final Location pLocation, final String pMessage, final boolean pError) {
+        location = pLocation;
+        fileName = pFilename;
+        message = pMessage;
+        error = pError;
+    }
+
+    public boolean isError() {
+        return error;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public int getStartLine() {
+        if (location == null) {
+            return 0;
+        }
+        return location.getLineNumber();
+    }
+
+    public int getStartColumn() {
+        if (location == null) {
+            return 0;
+        }
+        return location.getColumnNumber();
+    }
+
+    public int getEndLine() {
+        return getStartLine();
+    }
+
+    public int getEndColumn() {
+        return getStartColumn();
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public String toString() {
+        final StringBuffer sb = new StringBuffer();
+        sb.append(getFileName()).append(" (");
+        sb.append(getStartLine());
+        sb.append(":");
+        sb.append(getStartColumn());
+        sb.append(") : ");
+        sb.append(getMessage());
+        return sb.toString();
+    }
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoCompilationProblem.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoJavaCompiler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoJavaCompiler.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoJavaCompiler.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/compilers/janino/JaninoJavaCompiler.java Wed Aug 17 01:34:29 2005
@@ -22,7 +22,6 @@
 import java.util.Iterator;
 import java.util.Map;
 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;
@@ -36,10 +35,8 @@
 import org.codehaus.janino.Java;
 import org.codehaus.janino.Parser;
 import org.codehaus.janino.Scanner;
-import org.codehaus.janino.CompileException;
 import org.codehaus.janino.UnitCompiler;
-import org.codehaus.janino.Parser.ParseException;
-import org.codehaus.janino.Scanner.ScanException;
+import org.codehaus.janino.Scanner.LocatedException;
 import org.codehaus.janino.util.ClassFile;
 
 /**
@@ -103,15 +100,10 @@
                     types.put(type, ic);
                 }
                 return ic;
-            } catch (ScanException e) {
-                problemHandler.handle(new CompilationProblem(0, e.getLocation().getFileName(), e.getMessage(), e.getLocation().getLineNumber(), e.getLocation().getLineNumber(), true));
-            } catch (ParseException e) {
-                problemHandler.handle(new CompilationProblem(0, e.getLocation().getFileName(), e.getMessage(), e.getLocation().getLineNumber(), e.getLocation().getLineNumber(), true));
+            } catch (LocatedException e) {
+                problemHandler.handle(new JaninoCompilationProblem(e));
             } catch (IOException e) {
-                problemHandler.handle(new CompilationProblem(0, fileNameForClass, "IO:" + e.getMessage(), 0, 0, true));
-            } catch (CompileException e) {
-                e.printStackTrace();
-                problemHandler.handle(new CompilationProblem(0, e.getLocation().getFileName(), e.getMessage(), e.getLocation().getLineNumber(), e.getLocation().getLineNumber(), true));
+                problemHandler.handle(new JaninoCompilationProblem(fileNameForClass, "IO:" + e.getMessage(), true));
             } finally {
                 if (scanner != null) {
                     try {

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/monitor/FilesystemAlterationMonitor.java Wed Aug 17 01:34:29 2005
@@ -24,6 +24,7 @@
 import java.util.Map;
 import java.util.Set;
 import org.apache.commons.collections.MultiHashMap;
+import org.apache.commons.jci.utils.ThreadUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -398,10 +399,7 @@
                 }
             }
 
-            try {
-                Thread.sleep(delay);
-            } catch (InterruptedException e) {
-            }
+            ThreadUtils.sleep(delay);
         }
         
         log.info("fam exiting");

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/CompilationProblem.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/CompilationProblem.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/CompilationProblem.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/CompilationProblem.java Wed Aug 17 01:34:29 2005
@@ -15,50 +15,20 @@
  */
 package org.apache.commons.jci.problems;
 
-/**
- * @author tcurdt
- *
- */
-public class CompilationProblem {
-
-    private final int id;
-    private final String filename;
-    private final String message;
-    private final int lineStart;
-    private final int lineStop;
-    private final boolean fatal;
-    
-    public CompilationProblem(
-            final int pId,
-            final String pFilename,
-            final String pMessage,
-            final int pLineStart,
-            final int pLineStop,
-            final boolean pFatal
-            ) {
-        id = pId;
-        filename = pFilename;
-        message = pMessage;
-        lineStart = pLineStart;
-        lineStop = pLineStop;
-        fatal = pFatal;
-    }
-    
-    public boolean isFatal() {
-        return fatal;
-    }
-    
-    public String toString() {
-        final StringBuffer sb = new StringBuffer();
-        sb.append(filename).append(" (");
-        if (lineStart == lineStop) {
-            sb.append(lineStart);            
-        } else {
-            sb.append(lineStart).append('-').append(lineStop);
-        }
-        sb.append(") : ");
-        sb.append(message);
-        
-        return sb.toString();
-    }
-}
+public interface CompilationProblem {
+
+  boolean isError();
+
+  String getFileName();
+
+  int getStartLine();
+
+  int getStartColumn();
+
+  int getEndLine();
+
+  int getEndColumn();
+
+  String getMessage();
+
+}
\ No newline at end of file

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/ConsoleCompilationProblemHandler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/ConsoleCompilationProblemHandler.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/ConsoleCompilationProblemHandler.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/ConsoleCompilationProblemHandler.java Wed Aug 17 01:34:29 2005
@@ -15,36 +15,29 @@
  */
 package org.apache.commons.jci.problems;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-
-
 /**
  * @author tcurdt
  *
  */
 public class ConsoleCompilationProblemHandler implements CompilationProblemHandler {
-    
-    private final static Log log = LogFactory.getLog(ConsoleCompilationProblemHandler.class);
 
     private int errors;
     private int warnings;
-    
+
     public void handle( final CompilationProblem pProblem ) {
-        if (pProblem.isFatal()) {
+        if (pProblem.isError()) {
             errors++;
             System.err.println("error(" + errors + "):" + pProblem);
         } else {
             warnings++;
             System.err.println("warning(" + warnings + "):" + pProblem);
-        }        
+        }
     }
-    
-    
+
     public int getErrorCount() {
         return errors;
     }
+
     public int getWarningCount() {
         return warnings;
     }

Modified: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/LogCompilationProblemHandler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/LogCompilationProblemHandler.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/LogCompilationProblemHandler.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/problems/LogCompilationProblemHandler.java Wed Aug 17 01:34:29 2005
@@ -18,33 +18,31 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-
-
 /**
  * @author tcurdt
  *
  */
 public class LogCompilationProblemHandler implements CompilationProblemHandler {
-    
+
     private final static Log log = LogFactory.getLog(ConsoleCompilationProblemHandler.class);
 
     private int errors;
     private int warnings;
-    
+
     public void handle( final CompilationProblem pProblem ) {
-        if (pProblem.isFatal()) {
+        if (pProblem.isError()) {
             errors++;
             log.debug("error(" + errors + "):" + pProblem);
         } else {
             warnings++;
             log.debug("warning(" + warnings + "):" + pProblem);
-        }        
+        }
     }
-    
-    
+
     public int getErrorCount() {
         return errors;
     }
+
     public int getWarningCount() {
         return warnings;
     }

Added: jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/ThreadUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/ThreadUtils.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/ThreadUtils.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/java/org/apache/commons/jci/utils/ThreadUtils.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,13 @@
+package org.apache.commons.jci.utils;
+
+
+public final class ThreadUtils {
+
+    public static void sleep( final long pDelay ) {
+        try {
+            Thread.sleep(pDelay);
+        } catch (final InterruptedException e) {
+        }
+    }
+    
+}

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/AbstractTestCase.java Wed Aug 17 01:34:29 2005
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import junit.framework.TestCase;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.jci.utils.ThreadUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -128,11 +129,7 @@
     }
     
     protected void delay() {
-        try {
-            Thread.sleep(1500);
-        } catch (final InterruptedException e) {
-            ;
-        }
+        ThreadUtils.sleep(1500);
     }
     
     protected File createTempDirectory() throws IOException {

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/CompilingClassLoaderTestCase.java Wed Aug 17 01:34:29 2005
@@ -3,7 +3,7 @@
 import java.io.File;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.jci.compilers.AbstractCompilerTestCase;
-import org.apache.commons.jci.compilers.Programs;
+import org.apache.commons.jci.compilers.JavaSources;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -38,15 +38,15 @@
 
     private void initialCompile() throws Exception {
         delay();        
-        writeFile("jci/Simple.java", Programs.simple);        
-        writeFile("jci/Extended.java", Programs.extended);        
+        writeFile("jci/Simple.java", JavaSources.simple);        
+        writeFile("jci/Extended.java", JavaSources.extended);        
         waitForSignal(reloadSignal);
     }
     
     
     public void testCompileProblems() throws Exception {
         delay();        
-        writeFile("jci/Simple.java", Programs.error);
+        writeFile("jci/Simple.java", JavaSources.error);
         waitForSignal(reloadSignal);
         
         // FIXME
@@ -72,7 +72,7 @@
         assertTrue("Extended:Simple".equals(extended.toString()));
 
         delay();
-        writeFile("jci/Simple.java", Programs.SIMPLE);
+        writeFile("jci/Simple.java", JavaSources.SIMPLE);
         waitForSignal(reloadSignal);
     
         final Object SIMPLE = cl.loadClass("jci.Simple").newInstance();        

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/ReloadingClassLoaderTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/ReloadingClassLoaderTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/ReloadingClassLoaderTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/ReloadingClassLoaderTestCase.java Wed Aug 17 01:34:29 2005
@@ -16,7 +16,7 @@
 package org.apache.commons.jci;
 
 import java.io.File;
-import org.apache.commons.jci.compilers.Programs;
+import org.apache.commons.jci.compilers.JavaSources;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -36,11 +36,11 @@
     private final byte[] clazzExtended;
     
     public ReloadingClassLoaderTestCase() {
-        clazzSimple = CompilerUtils.compile("jci.Simple", Programs.simple);
-        clazzSIMPLE = CompilerUtils.compile("jci.Simple", Programs.SIMPLE);
+        clazzSimple = CompilerUtils.compile("jci.Simple", JavaSources.simple);
+        clazzSIMPLE = CompilerUtils.compile("jci.Simple", JavaSources.SIMPLE);
         clazzExtended = CompilerUtils.compile(
                 new String[] { "jci.Extended", "jci.Simple" },
-                new String[] { Programs.extended, Programs.simple }
+                new String[] { JavaSources.extended, JavaSources.simple }
                 );
         assertTrue(clazzSimple.length > 0);
         assertTrue(clazzSIMPLE.length > 0);
@@ -170,6 +170,14 @@
         } catch(final ClassNotFoundException e) {
             log.info(e.getMessage());
         }
+    }
+    
+    public void testDelegation() {
+        cl.clearAssertionStatus();
+        cl.setClassAssertionStatus("org.apache.commons.jci.ReloadingClassLoader",true);
+        cl.setDefaultAssertionStatus(false);
+        cl.setPackageAssertionStatus("org.apache.commons.jci", true);
+        // FIXME: compare with delegation
     }
     
     protected void tearDown() throws Exception {

Added: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/GroovySources.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/GroovySources.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/GroovySources.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/GroovySources.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,48 @@
+package org.apache.commons.jci.compilers;
+
+
+public interface GroovySources {
+    
+    String simple =
+        "package jci;\n"
+        + "public class Simple { \n"
+        + "  public String toString() { \n"
+        + "    return \"Simple\"; \n"
+        + "  } \n"
+        + "} \n";
+
+    String SIMPLE =
+        "package jci;\n"
+        + "public class Simple { \n"
+        + "  public String toString() { \n"
+        + "    return \"SIMPLE\"; \n"
+        + "  } \n"
+        + "} \n";
+    
+    String extended =
+        "package jci;\n"
+        + "public class Extended extends Simple { \n"
+        + "  public String toString() { \n"
+        + "    return \"Extended:\" + super.toString(); \n"
+        + "  } \n"
+        + "} \n";
+
+    String warning =
+        "package jci;\n"
+        + "public class Simple { \n"
+        + "  public int generateWarning() { \n"
+        + "    return new java.util.Date().getHours(); \n"
+        + "  }\n"
+        + "  public String toString() { \n"
+        + "    return \"Simple\"; \n"
+        + "  } \n"
+        + "} \n";
+
+    String error =
+        "package jci;\n"
+        + "public class Simple { \n"
+        + "  public String toString() { \n"
+        + "    return 1; \n"
+        + "  } \n"
+        + "} \n";
+}

Copied: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/JavaSources.java (from r233037, jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/Programs.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/JavaSources.java?p2=jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/JavaSources.java&p1=jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/Programs.java&r1=233037&r2=233135&rev=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/Programs.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/JavaSources.java Wed Aug 17 01:34:29 2005
@@ -1,7 +1,7 @@
 package org.apache.commons.jci.compilers;
 
 
-public interface Programs {
+public interface JavaSources {
     
     String simple =
         "package jci;\n"

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompilerTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompilerTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompilerTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/eclipse/EclipseJavaCompilerTestCase.java Wed Aug 17 01:34:29 2005
@@ -2,28 +2,28 @@
 
 import org.apache.commons.jci.compilers.AbstractCompilerTestCase;
 import org.apache.commons.jci.compilers.JavaCompiler;
-import org.apache.commons.jci.compilers.Programs;
+import org.apache.commons.jci.compilers.JavaSources;
 import org.apache.commons.jci.problems.CompilationProblemHandler;
 
 
 public final class EclipseJavaCompilerTestCase extends AbstractCompilerTestCase {
     public void testSimpleCompilation() throws Exception {
         final JavaCompiler compiler = new EclipseJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.simple);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.simple);
         assertTrue(handler.getWarningCount() == 0);
         assertTrue(handler.getErrorCount() == 0);
     }
     
     public void testCompilationError() throws Exception {
         final JavaCompiler compiler = new EclipseJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.error);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.error);
         assertTrue(handler.getWarningCount() == 0);
         assertTrue(handler.getErrorCount() == 1);
     }
 
     public void testCompilationWarning() throws Exception {
         final JavaCompiler compiler = new EclipseJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.warning);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.warning);
         assertTrue(handler.getWarningCount() == 1);
         assertTrue(handler.getErrorCount() == 0);
     }    

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/groovy/GroovyJavaCompilerTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/groovy/GroovyJavaCompilerTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/groovy/GroovyJavaCompilerTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/groovy/GroovyJavaCompilerTestCase.java Wed Aug 17 01:34:29 2005
@@ -1,15 +1,29 @@
 package org.apache.commons.jci.compilers.groovy;
 
 import org.apache.commons.jci.compilers.AbstractCompilerTestCase;
+import org.apache.commons.jci.compilers.GroovySources;
+import org.apache.commons.jci.compilers.JavaCompiler;
+import org.apache.commons.jci.problems.CompilationProblemHandler;
 
 
 public final class GroovyJavaCompilerTestCase extends AbstractCompilerTestCase {
     public void testSimpleCompilation() throws Exception {
+        final JavaCompiler compiler = new GroovyJavaCompiler();
+        final CompilationProblemHandler handler = compileWith(compiler, GroovySources.simple);
+        assertTrue(handler.getWarningCount() == 0);
+        assertTrue(handler.getErrorCount() == 0);
     }
     
     public void testCompilationError() throws Exception {
+        final JavaCompiler compiler = new GroovyJavaCompiler();
+        final CompilationProblemHandler handler = compileWith(compiler, GroovySources.error);
+        assertTrue(handler.getWarningCount() == 0);
+        assertTrue(handler.getErrorCount() == 1);
     }
 
     public void testCompilationWarning() throws Exception {
-    }
-}
+        final JavaCompiler compiler = new GroovyJavaCompiler();
+        final CompilationProblemHandler handler = compileWith(compiler, GroovySources.warning);
+        assertTrue(handler.getWarningCount() == 1);
+        assertTrue(handler.getErrorCount() == 0);
+    }}

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/janino/JaninoJavaCompilerTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/janino/JaninoJavaCompilerTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/janino/JaninoJavaCompilerTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/compilers/janino/JaninoJavaCompilerTestCase.java Wed Aug 17 01:34:29 2005
@@ -2,28 +2,28 @@
 
 import org.apache.commons.jci.compilers.AbstractCompilerTestCase;
 import org.apache.commons.jci.compilers.JavaCompiler;
-import org.apache.commons.jci.compilers.Programs;
+import org.apache.commons.jci.compilers.JavaSources;
 import org.apache.commons.jci.problems.CompilationProblemHandler;
 
 
 public final class JaninoJavaCompilerTestCase extends AbstractCompilerTestCase {
     public void testSimpleCompilation() throws Exception {
         final JavaCompiler compiler = new JaninoJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.simple);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.simple);
         assertTrue(handler.getWarningCount() == 0);
         assertTrue(handler.getErrorCount() == 0);
     }
     
     public void testCompilationError() throws Exception {
         final JavaCompiler compiler = new JaninoJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.error);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.error);
         assertTrue(handler.getWarningCount() == 0);
         assertTrue(handler.getErrorCount() == 1);
     }
 
     public void testCompilationWarning() throws Exception {
         final JavaCompiler compiler = new JaninoJavaCompiler();
-        final CompilationProblemHandler handler = compileWith(compiler, Programs.warning);
+        final CompilationProblemHandler handler = compileWith(compiler, JavaSources.warning);
         //assertTrue(handler.getWarningCount() == 1);
         assertTrue(handler.getErrorCount() == 0);
     }

Modified: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/problems/CompilationProblemTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/problems/CompilationProblemTestCase.java?rev=233135&r1=233134&r2=233135&view=diff
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/problems/CompilationProblemTestCase.java (original)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/problems/CompilationProblemTestCase.java Wed Aug 17 01:34:29 2005
@@ -1,54 +1,129 @@
 package org.apache.commons.jci.problems;
 
-import junit.framework.TestCase;
+import org.apache.commons.jci.compilers.eclipse.EclipseCompilationProblem;
+import org.apache.commons.jci.compilers.groovy.GroovyCompilationProblem;
+import org.apache.commons.jci.compilers.janino.JaninoCompilationProblem;
+import org.codehaus.groovy.control.SourceUnit;
+import org.codehaus.groovy.control.messages.Message;
+import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
+import org.codehaus.groovy.control.messages.WarningMessage;
+import org.codehaus.groovy.syntax.SyntaxException;
+import org.codehaus.janino.Location;
+import org.eclipse.jdt.core.compiler.IProblem;
+import org.eclipse.jdt.internal.compiler.IProblemFactory;
+import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
 
+import junit.framework.TestCase;
 
+/**
+ * TODO: It might be better to actually try to compile some faulty code and
+ *       to handle the problems caused by those errors.
+ */
 public final class CompilationProblemTestCase extends TestCase {
 
-    public void testLocation() {
-        CompilationProblem problem;
-        
-        problem = new CompilationProblem(
-                0,
-                "filename",
-                "message",
-                1,
-                2,
-                true
-                );
-        assertTrue("filename (1-2) : message".equals(problem.toString()));
-
-        problem = new CompilationProblem(
-                0,
-                "filename",
-                "message",
-                1,
-                1,
-                true
-                );
-        assertTrue("filename (1) : message".equals(problem.toString()));
+    private static final String MESSAGE = "message";
+    private static final short COLUMN = 2;
+    private static final short LINE = 1;
+    private static final String FILENAME = "filename";
+
+    public void testJaninoCompilationProblem() {
+        CompilationProblem problem = createJaninoCompilationProblem(true);
+        assertEquals("wrong filename", FILENAME, problem.getFileName());
+        assertEquals("wrong line number", LINE, problem.getStartLine());
+        assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        assertEquals("wrong message", MESSAGE, problem.getMessage());
+        assertTrue("wrong error level", problem.isError());
+
+        problem = createJaninoCompilationProblem(false);
+        assertEquals("wrong filename", FILENAME, problem.getFileName());
+        assertEquals("wrong line number", LINE, problem.getStartLine());
+        assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        assertEquals("wrong message", MESSAGE, problem.getMessage());
+        assertFalse("wrong error level", problem.isError());
+    }
+
+    public void testEclipseCompilationProblem() {
+        CompilationProblem problem = createEclipseCompilationProblem(true);
+        assertEquals("wrong filename", FILENAME, problem.getFileName());
+        assertEquals("wrong line number", LINE, problem.getStartLine());
+        assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        // FIXME: Don't know how to create eclipse's IProblem with message
+        //assertEquals("wrong message", MESSAGE, problem.getMessage());
+        assertTrue("wrong error level", problem.isError());
+
+        problem = createEclipseCompilationProblem(false);
+        assertEquals("wrong filename", FILENAME, problem.getFileName());
+        assertEquals("wrong line number", LINE, problem.getStartLine());
+        assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        // FIXME: Don't know how to create eclipse's IProblem with message
+        //assertEquals("wrong message", MESSAGE, problem.getMessage());
+        assertFalse("wrong error level", problem.isError());
+
+    }
+
+    public void testGroovyCompilationProblem() {
+        CompilationProblem problem = createGroovyCompilationProblem(true);
+        // FIXME: Don't know how to access filename info.
+        //assertEquals("wrong filename", FILENAME, problem.getFileName());
+        assertEquals("wrong line number", LINE, problem.getStartLine());
+        assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        // FIXME: Don't know how to access the "real" message.
+        assertEquals("wrong message", MESSAGE + " @ line " + LINE + ", column " + COLUMN + ".", problem.getMessage());
+        assertTrue("wrong error level", problem.isError());
+
+        problem = createGroovyCompilationProblem(false);
+        // FIXME: Don't know how to create a LocatedMessage with filename info.
+        //assertEquals("wrong filename", FILENAME, problem.getFileName());
+        // FIXME: Don't know how to create a LocatedMessage with location info.
+        //assertEquals("wrong line number", LINE, problem.getStartLine());
+        //assertEquals("wrong column number", COLUMN, problem.getStartColumn());
+        assertEquals("wrong message", MESSAGE, problem.getMessage());
+        assertFalse("wrong error level", problem.isError());
     }
 
     public void testErrorHandling() {
         final CompilationProblemHandler handler = new ConsoleCompilationProblemHandler();
-        final CompilationProblem error = new CompilationProblem(
-                0,
-                "filename",
-                "message",
-                1,
-                1,
-                true
-                );
+        final CompilationProblem error = createJaninoCompilationProblem(true);
         handler.handle(error);
+        assertEquals("wrong number of errors", 1, handler.getErrorCount());
+        assertEquals("wrong number of warnings", 0, handler.getWarningCount());
 
-        final CompilationProblem warning = new CompilationProblem(
-                0,
-                "filename",
-                "message",
-                1,
-                1,
-                false
-                );
+        final CompilationProblem warning = createJaninoCompilationProblem(false);
         handler.handle(warning);
+        assertEquals("wrong number of errors", 1, handler.getErrorCount());
+        assertEquals("wrong number of warnings", 1, handler.getWarningCount());
     }
+
+    private static JaninoCompilationProblem createJaninoCompilationProblem(final boolean pError) {
+        Location location = new Location(FILENAME, LINE, COLUMN);
+        return new JaninoCompilationProblem(location, MESSAGE, pError);
+    }
+
+    private static EclipseCompilationProblem createEclipseCompilationProblem(final boolean pError) {
+        int severity;
+        if (pError) {
+            severity = 1;
+        } else {
+            severity = 0;
+        }
+        IProblemFactory problemFactory = new DefaultProblemFactory();
+        IProblem problem =
+            problemFactory.createProblem(FILENAME.toCharArray(), 1, new String[0],
+                    new String[0], severity, COLUMN, COLUMN, LINE);
+        return new EclipseCompilationProblem(problem);
+    }
+
+    private static GroovyCompilationProblem createGroovyCompilationProblem(final boolean pError) {
+        Message message;
+        if (pError) {
+            message =
+                new SyntaxErrorMessage(new SyntaxException(MESSAGE, LINE, COLUMN),
+                                       new SourceUnit(FILENAME, "", null, null, null));
+        } else {
+            message =
+                new WarningMessage(WarningMessage.NONE, MESSAGE, null, null);
+        }
+        return new GroovyCompilationProblem(message);
+    }
+
 }

Added: jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/ThreadUtilsTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/ThreadUtilsTestCase.java?rev=233135&view=auto
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/ThreadUtilsTestCase.java (added)
+++ jakarta/commons/sandbox/jci/trunk/src/test/org/apache/commons/jci/utils/ThreadUtilsTestCase.java Wed Aug 17 01:34:29 2005
@@ -0,0 +1,28 @@
+package org.apache.commons.jci.utils;
+
+import junit.framework.TestCase;
+
+
+public final class ThreadUtilsTestCase extends TestCase {
+
+    public void testSleep() {
+        final long start = System.currentTimeMillis();
+        ThreadUtils.sleep(1000);
+        final long stop = System.currentTimeMillis();
+        assertTrue( Math.abs( (stop-start) - 1000) < 20 );
+    }
+
+    public void testSleepInterruption() throws InterruptedException {
+        final Thread thread = new Thread(new Runnable() {
+            public void run() {
+                ThreadUtils.sleep(2000);
+            }
+        });
+        thread.start();
+        final long start = System.currentTimeMillis();
+        thread.interrupt();
+        thread.join();
+        final long stop = System.currentTimeMillis();
+        assertTrue( (stop-start) < 1000 );
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org