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 2007/02/26 03:21:25 UTC

svn commit: r511697 - in /jakarta/commons/sandbox/jci/trunk/compilers/jsr199: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/commons/ src/main/java/org/apache/commons/jci/ src/main/java/org/apache...

Author: tcurdt
Date: Sun Feb 25 18:21:24 2007
New Revision: 511697

URL: http://svn.apache.org/viewvc?view=rev&rev=511697
Log:
a first attempt - boy does jsr199 suck


Added:
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml   (with props)
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java   (with props)
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java   (with props)
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/
    jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java   (with props)

Added: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml?view=auto&rev=511697
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml (added)
+++ jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml Sun Feb 25 18:21:24 2007
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+  xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-jci</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <packaging>jar</packaging>
+  <artifactId>commons-jci-jsr166</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <name>compiler-jsr166</name>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-jci-core</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+    </plugins>
+
+  </build>
+  
+</project>

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java?view=auto&rev=511697
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java (added)
+++ jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java Sun Feb 25 18:21:24 2007
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+import javax.tools.Diagnostic;
+import javax.tools.JavaFileObject;
+
+import org.apache.commons.jci.problems.CompilationProblem;
+
+public class Jsr199CompilationProblem implements CompilationProblem {
+
+	final Diagnostic<? extends JavaFileObject> problem;
+	
+	public Jsr199CompilationProblem( final Diagnostic<? extends JavaFileObject> pProblem ) {
+		problem = pProblem;
+	}
+	
+	public int getEndColumn() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public int getEndLine() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public String getFileName() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public String getMessage() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public int getStartColumn() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public int getStartLine() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public boolean isError() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199CompilationProblem.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java?view=auto&rev=511697
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java (added)
+++ jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java Sun Feb 25 18:21:24 2007
@@ -0,0 +1,212 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import javax.tools.FileObject;
+import javax.tools.JavaCompilerTool;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.ToolProvider;
+import javax.tools.JavaFileObject.Kind;
+
+import org.apache.commons.jci.problems.CompilationProblem;
+import org.apache.commons.jci.readers.ResourceReader;
+import org.apache.commons.jci.stores.ResourceStore;
+import org.apache.commons.lang.ArrayUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public final class Jsr199JavaCompiler extends AbstractJavaCompiler {
+
+    private final Log log = LogFactory.getLog(Jsr199JavaCompiler.class);
+
+    private class CompilationUnit extends SimpleJavaFileObject {
+    	final private ResourceReader reader;
+    	final private String name;
+    	
+    	public CompilationUnit( final String pName, final ResourceReader pReader ) {
+            super(URI.create("reader:///" + pName), Kind.SOURCE);
+            reader = pReader;
+            name = pName;
+    	}
+
+		public boolean delete() {
+    		log.debug("delete");
+			return super.delete();
+		}
+
+		public CharSequence getCharContent(boolean arg0) throws IOException {			
+    		log.debug("getCharContent of " + name);
+    		byte[] content = reader.getBytes(name);
+    		return new String(content);
+		}
+
+		public Kind getKind() {
+    		log.debug("getKind" + super.getKind());
+			return super.getKind();
+		}
+
+		public long getLastModified() {
+    		log.debug("getLastModified");
+			return super.getLastModified();
+		}
+
+		public String getName() {
+    		log.debug("getName " + super.getName());
+			return super.getName();
+		}
+
+		public boolean isNameCompatible(String arg0, Kind arg1) {
+    		log.debug("isNameCompatible " + arg0);
+			return super.isNameCompatible(arg0, arg1);
+		}
+
+		public InputStream openInputStream() throws IOException {
+    		log.debug("openInputStream");
+			return super.openInputStream();
+		}
+
+		public OutputStream openOutputStream() throws IOException {
+    		log.debug("openOutputStream");
+			return super.openOutputStream();
+		}
+
+		public Reader openReader(boolean arg0) throws IOException {
+    		log.debug("openReader");
+			return super.openReader(arg0);
+		}
+
+		public Writer openWriter() throws IOException {
+    		log.debug("openWriter");
+			return super.openWriter();
+		}
+
+		public URI toUri() {
+    		log.debug("toUri " + super.toUri());
+			return super.toUri();
+		}
+    	
+    	
+    }
+    
+    private class JciJavaFileManager implements JavaFileManager {
+    	private final ResourceStore store;
+    	final Collection<JavaFileObject> units;
+    	
+    	public JciJavaFileManager( final Collection<JavaFileObject> pUnits, final ResourceStore pStore ) {
+    		store = pStore;
+    		units = pUnits;
+    	}
+    	
+    	public void close() {    		
+    		log.debug("close");
+    	}
+    	public void flush() {    		
+    		log.debug("flush");
+    	}
+    	public ClassLoader getClassLoader(JavaFileManager.Location location) {
+    		log.debug("getClassLoader");
+    		return null;
+    	}
+    	public FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) {
+    		log.debug("getFileForInput");
+    		return null;
+    	}
+    	public FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) {
+    		log.debug("getFileForOutput");
+    		return null;
+    	}
+    	public JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) {
+    		log.debug("getJavaFileForInput");
+    		return null;
+    	}
+    	public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) {
+    		log.debug("getJavaFileForOutput");
+    		return null;
+    	}
+    	public int isSupportedOption(String option) {
+    		log.debug("isSupportedOption");
+    	    return 0;
+    	}
+    	public boolean handleOption(String current, Iterator<String> remaining) {
+    		log.debug("handleOption");
+    		return false;
+    	}
+    	public boolean hasLocation(JavaFileManager.Location location) {
+    		log.debug("hasLocation");
+    		return false;
+    	}
+    	public String inferBinaryName(JavaFileManager.Location location, JavaFileObject file) {
+    		log.debug("inferBinaryName " + file.getName());
+    		return file.getName().replaceFirst(".java", ".class");
+    	}
+    	public Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) {
+    		log.debug("list " + location + packageName + kinds + recurse);
+    		return units;
+    	}
+    }
+    
+	public CompilationResult compile( final String[] pResourcePaths, final ResourceReader pReader, final ResourceStore pStore, final ClassLoader classLoader) {
+
+		final Collection<JavaFileObject> units = new ArrayList<JavaFileObject>();
+		for (int i = 0; i < pResourcePaths.length; i++) {
+			final String sourcePath = pResourcePaths[i];
+			log.debug("compiling " + sourcePath);
+			units.add(new CompilationUnit(sourcePath, pReader));
+		}
+
+		final JavaCompilerTool compiler = ToolProvider.getSystemJavaCompilerTool();
+//		final JavaFileManager fileManager = compiler.getStandardFileManager(diagnostics);
+		final JavaFileManager fileManager = new JciJavaFileManager(units, pStore);
+		final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
+
+		
+		compiler.getTask(null, fileManager, diagnostics, null, null, units).run();
+
+		try {
+			fileManager.close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+		final List<Diagnostic<? extends JavaFileObject>> jsrProblems = diagnostics.getDiagnostics();
+		final CompilationProblem[] problems = new CompilationProblem[jsrProblems.size()];
+		int i = 0;
+		for (final Diagnostic<? extends JavaFileObject> jsrProblem : jsrProblems) {
+			problems[i++] = new Jsr199CompilationProblem(jsrProblem);
+		}
+				
+		return new CompilationResult(problems);
+	}
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
URL: http://svn.apache.org/viewvc/jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java?view=auto&rev=511697
==============================================================================
--- jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java (added)
+++ jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java Sun Feb 25 18:21:24 2007
@@ -0,0 +1,13 @@
+package org.apache.commons.jci.compilers;
+
+public final class Jsr199JavaCompilerTestCase extends AbstractCompilerTestCase {
+
+	public String getCompilerName() {
+		return "jsr199";
+	}
+	
+	public JavaCompiler createJavaCompiler() {
+		return new Jsr199JavaCompiler();
+	}
+
+}

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: jakarta/commons/sandbox/jci/trunk/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



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