InjectCode.java

package eu.javaexperience.eval;

import java.io.IOException;

import eu.javaexperience.reflect.Mirror;
import eu.javaexperience.reflect.RuntimeClass;
import eu.javaexperience.text.Format;
import eu.javaexperience.text.StringTools;

public class InjectCode
{
	public static String getClassBytecodeBase64(Class cls) throws IOException
	{
		byte[] data = Mirror.getClassBytecode(cls);
		return Format.base64Encode(data);
	}
	
	public static <T> Class<T> getCodeInstance(String prg)
	{
		RuntimeClass dl = new RuntimeClass();
		String re = prg.trim();
		int padding = re.length() % 4; 
		if(padding > 0)
		{
			re += StringTools.repeatChar('=', padding);
		}
		return (Class<T>) dl.loadClass(Format.base64Decode(re));
	}
}