本文整理汇总了Java中org.codehaus.janino.ClassBodyEvaluator类的典型用法代码示例。如果您正苦于以下问题:Java ClassBodyEvaluator类的具体用法?Java ClassBodyEvaluator怎么用?Java ClassBodyEvaluator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ClassBodyEvaluator类属于org.codehaus.janino包,在下文中一共展示了ClassBodyEvaluator类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: build
import org.codehaus.janino.ClassBodyEvaluator; //导入依赖的package包/类
public Condition build(String script) throws IllegalAccessException,
CompileException,
InstantiationException,
SecurityException, NoSuchMethodException, IllegalArgumentException,
InvocationTargetException {
ClassBodyEvaluator cbe = new ClassBodyEvaluator();
cbe.setImplementedInterfaces(new Class[]{Condition.class});
cbe.setExtendedClass(PropertyWrapperForScripts.class);
cbe.setParentClassLoader(ClassBodyEvaluator.class.getClassLoader());
cbe.cook(SCRIPT_PREFIX + script + SCRIPT_SUFFIX);
Class<?> clazz = cbe.getClazz();
Condition instance = (Condition) clazz.newInstance();
Method setMapMethod = clazz.getMethod("setPropertyContainers", PropertyContainer.class, PropertyContainer.class);
setMapMethod.invoke(instance, localPropContainer, context);
return instance;
}
示例2: compile
import org.codehaus.janino.ClassBodyEvaluator; //导入依赖的package包/类
private static Function1<DataContext, Object[]> compile(String code,
Object reason) {
try {
final ClassBodyEvaluator cbe = new ClassBodyEvaluator();
cbe.setClassName(GENERATED_CLASS_NAME);
cbe.setExtendedClass(Utilities.class);
cbe.setImplementedInterfaces(new Class[] {Function1.class, Serializable.class});
cbe.setParentClassLoader(RexExecutable.class.getClassLoader());
cbe.cook(new Scanner(null, new StringReader(code)));
Class c = cbe.getClazz();
//noinspection unchecked
final Constructor<Function1<DataContext, Object[]>> constructor =
c.getConstructor();
return constructor.newInstance();
} catch (CompileException | IOException | InstantiationException
| IllegalAccessException | InvocationTargetException
| NoSuchMethodException e) {
throw new RuntimeException("While compiling " + reason, e);
}
}
示例3: cookClass
import org.codehaus.janino.ClassBodyEvaluator; //导入依赖的package包/类
private Class<?> cookClass(UserDefinedJavaClassDef def) throws CompileException, ParseException, ScanException, IOException, RuntimeException, KettleStepException {
ClassBodyEvaluator cbe = new ClassBodyEvaluator();
cbe.setClassName(def.getClassName());
StringReader sr;
if (def.isTransformClass())
{
cbe.setExtendedType(TransformClassBase.class);
sr = new StringReader(def.getTransformedSource());
}
else
{
sr = new StringReader(def.getSource());
}
cbe.setDefaultImports(new String[] {
"org.pentaho.di.trans.steps.userdefinedjavaclass.*",
"org.pentaho.di.trans.step.*",
"org.pentaho.di.core.row.*",
"org.pentaho.di.core.*",
"org.pentaho.di.core.exception.*"
});
cbe.cook(new Scanner(null, sr));
return cbe.getClazz();
}
示例4: prepareEvaluation
import org.codehaus.janino.ClassBodyEvaluator; //导入依赖的package包/类
public void prepareEvaluation() {
try {
this.function = (Function1<DataContext, Object[]>) ClassBodyEvaluator.createFastClassBodyEvaluator(
new Scanner(null, new StringReader(source)),
RexExecutable.GENERATED_CLASS_NAME,
Utilities.class,
new Class[]{Function1.class , Serializable.class},
getClass().getClassLoader());
} catch (Exception e) {
throw new RuntimeException("Error while compiling the generated code");
}
}
示例5: cookClass
import org.codehaus.janino.ClassBodyEvaluator; //导入依赖的package包/类
private Class<?> cookClass( UserDefinedJavaClassDef def ) throws CompileException, ParseException,
ScanException, IOException, RuntimeException, KettleStepException {
if ( Thread.currentThread().getContextClassLoader() == null ) {
Thread.currentThread().setContextClassLoader( this.getClass().getClassLoader() );
}
ClassBodyEvaluator cbe = new ClassBodyEvaluator();
cbe.setParentClassLoader( Thread.currentThread().getContextClassLoader() );
cbe.setClassName( def.getClassName() );
StringReader sr;
if ( def.isTransformClass() ) {
cbe.setExtendedType( TransformClassBase.class );
sr = new StringReader( def.getTransformedSource() );
} else {
sr = new StringReader( def.getSource() );
}
cbe.setDefaultImports( new String[] {
"org.pentaho.di.trans.steps.userdefinedjavaclass.*", "org.pentaho.di.trans.step.*",
"org.pentaho.di.core.row.*", "org.pentaho.di.core.*", "org.pentaho.di.core.exception.*" } );
cbe.cook( new Scanner( null, sr ) );
return cbe.getClazz();
}