Search in sources :

Example 1 with IClassBodyEvaluator

use of org.codehaus.commons.compiler.IClassBodyEvaluator in project calcite by apache.

the class EnumerableInterpretable method getBindable.

static Bindable getBindable(ClassDeclaration expr, String s, int fieldCount) throws CompileException, IOException {
    ICompilerFactory compilerFactory;
    try {
        compilerFactory = CompilerFactoryFactory.getDefaultCompilerFactory();
    } catch (Exception e) {
        throw new IllegalStateException("Unable to instantiate java compiler", e);
    }
    IClassBodyEvaluator cbe = compilerFactory.newClassBodyEvaluator();
    cbe.setClassName(expr.name);
    cbe.setExtendedClass(Utilities.class);
    cbe.setImplementedInterfaces(fieldCount == 1 ? new Class[] { Bindable.class, Typed.class } : new Class[] { ArrayBindable.class });
    cbe.setParentClassLoader(EnumerableInterpretable.class.getClassLoader());
    if (CalcitePrepareImpl.DEBUG) {
        // Add line numbers to the generated janino class
        cbe.setDebuggingInformation(true, true, true);
    }
    return (Bindable) cbe.createInstance(new StringReader(s));
}
Also used : Typed(org.apache.calcite.runtime.Typed) ArrayBindable(org.apache.calcite.runtime.ArrayBindable) ICompilerFactory(org.codehaus.commons.compiler.ICompilerFactory) ArrayBindable(org.apache.calcite.runtime.ArrayBindable) Bindable(org.apache.calcite.runtime.Bindable) StringReader(java.io.StringReader) IClassBodyEvaluator(org.codehaus.commons.compiler.IClassBodyEvaluator) CompileException(org.codehaus.commons.compiler.CompileException) IOException(java.io.IOException)

Example 2 with IClassBodyEvaluator

use of org.codehaus.commons.compiler.IClassBodyEvaluator in project samza by apache.

the class RexToJavaCompiler method getExpression.

/**
 * Creates the instance of the class defined in {@link ClassDeclaration}
 * @param expr Interface whose instance needs to be created.
 * @param s The java code that implements the interface which should be used to create the instance.
 * @return The object of the class which implements the interface {@link Expression} with the code that is passed as input.
 * @throws CompileException
 * @throws IOException
 */
static Expression getExpression(ClassDeclaration expr, String s) throws CompileException, IOException {
    ICompilerFactory compilerFactory;
    try {
        compilerFactory = CompilerFactoryFactory.getDefaultCompilerFactory();
    } catch (Exception e) {
        throw new IllegalStateException("Unable to instantiate java compiler", e);
    }
    IClassBodyEvaluator cbe = compilerFactory.newClassBodyEvaluator();
    cbe.setClassName(expr.name);
    cbe.setImplementedInterfaces(expr.implemented.toArray(new Class[expr.implemented.size()]));
    cbe.setParentClassLoader(RexToJavaCompiler.class.getClassLoader());
    cbe.setDebuggingInformation(true, true, true);
    return (org.apache.samza.sql.data.Expression) cbe.createInstance(new StringReader(s));
}
Also used : ParameterExpression(org.apache.calcite.linq4j.tree.ParameterExpression) ICompilerFactory(org.codehaus.commons.compiler.ICompilerFactory) StringReader(java.io.StringReader) IClassBodyEvaluator(org.codehaus.commons.compiler.IClassBodyEvaluator) CompileException(org.codehaus.commons.compiler.CompileException) IOException(java.io.IOException) SamzaException(org.apache.samza.SamzaException)

Example 3 with IClassBodyEvaluator

use of org.codehaus.commons.compiler.IClassBodyEvaluator in project calcite by apache.

the class JaninoRexCompiler method getScalar.

static Scalar getScalar(ClassDeclaration expr, String s) throws CompileException, IOException {
    ICompilerFactory compilerFactory;
    try {
        compilerFactory = CompilerFactoryFactory.getDefaultCompilerFactory();
    } catch (Exception e) {
        throw new IllegalStateException("Unable to instantiate java compiler", e);
    }
    IClassBodyEvaluator cbe = compilerFactory.newClassBodyEvaluator();
    cbe.setClassName(expr.name);
    cbe.setImplementedInterfaces(new Class[] { Scalar.class });
    cbe.setParentClassLoader(JaninoRexCompiler.class.getClassLoader());
    if (CalcitePrepareImpl.DEBUG) {
        // Add line numbers to the generated janino class
        cbe.setDebuggingInformation(true, true, true);
    }
    return (Scalar) cbe.createInstance(new StringReader(s));
}
Also used : ICompilerFactory(org.codehaus.commons.compiler.ICompilerFactory) StringReader(java.io.StringReader) IClassBodyEvaluator(org.codehaus.commons.compiler.IClassBodyEvaluator) CompileException(org.codehaus.commons.compiler.CompileException) IOException(java.io.IOException)

Aggregations

IOException (java.io.IOException)3 StringReader (java.io.StringReader)3 CompileException (org.codehaus.commons.compiler.CompileException)3 IClassBodyEvaluator (org.codehaus.commons.compiler.IClassBodyEvaluator)3 ICompilerFactory (org.codehaus.commons.compiler.ICompilerFactory)3 ParameterExpression (org.apache.calcite.linq4j.tree.ParameterExpression)1 ArrayBindable (org.apache.calcite.runtime.ArrayBindable)1 Bindable (org.apache.calcite.runtime.Bindable)1 Typed (org.apache.calcite.runtime.Typed)1 SamzaException (org.apache.samza.SamzaException)1