package cuke4duke.internal.java; import cuke4duke.internal.jvmclass.ClassLanguage; import cuke4duke.internal.language.Transformable; import java.lang.reflect.Method; import java.util.Locale; public class JavaTransform implements Transformable { private final ClassLanguage classLanguage; private final Method method; public JavaTransform(ClassLanguage classLanguage, Method method) { this.classLanguage = classLanguage; this.method = method; } @SuppressWarnings("unchecked") public <T> T transform(Object arg, Locale locale) throws Throwable { return (T) classLanguage.invoke(method, new Object[]{arg}, locale); } }