package uk.co.zonetora.javacRunner;

import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;

import uk.co.zonetora.InputParser;
import uk.co.zonetora.RunnableWithString;

import com.sun.tools.javac.api.JavacTool;

public class OpenJDKMain {

	public static void main(String[] args) throws IOException {
		InputParser.parse(new RunnableWithString(){
			public String run(String arg) {
				return runWithJavac(arg);
			}
			
		});
	}
	

    public static final String CLASSNAME = new String("DummyTestClass10101").intern();

	
	public static String runWithJavac(String code) {
		
		try {
			code = code.replace('[', '(').replace(']',')');
	        JavaSourceFromString javaSource = new JavaSourceFromString(CLASSNAME, code);
	        Iterable<? extends JavaFileObject> compilationUnit = Collections.singleton(javaSource);

			JavaCompiler compiler = JavacTool.create();
			StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
	        final CachedOutputFileManager fjf = new CachedOutputFileManager(fileManager);
	        Iterable<String> options = Arrays.asList(new String[] {"-source", "1.5", "-target", "1.5" });
	        compiler.getTask(null, fjf, null, options, null, compilationUnit).call();
		} catch(Throwable t) {
			return t.getMessage();
		}
		return null;
	}
	
	
}