Programming-Language-Compiler / edu / ufl / cise / plc / runtime / javaCompilerClassLoader / StringJavaFileObject.java
StringJavaFileObject.java
Raw
/**
 * A FileObject used to represent Java source provided in a String.  Required for implementation of DynamicCompiler
 * 
 * @Adopted from https://docs.oracle.com/en/java/javase/17/docs/api/java.compiler/javax/tools/JavaCompiler.html
 *
 */

package edu.ufl.cise.plc.runtime.javaCompilerClassLoader;

import java.net.URI;
import javax.tools.SimpleJavaFileObject;


public class StringJavaFileObject extends SimpleJavaFileObject {
	
	final String code;  //The string containing the source code
	
	/**
	 * @param name     name of class
	 * @param code     source code for class
	 */
	public StringJavaFileObject(String name, String code) {
        super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension),
                Kind.SOURCE);
          this.code = code;		
	}


    @Override
    public CharSequence getCharContent(boolean ignoreEncodingErrors) {
        return code;
    }
}