Interface Evaluator
-
- All Superinterfaces:
java.lang.AutoCloseable
- All Known Implementing Classes:
EvaluatorImpl
public interface Evaluator extends java.lang.AutoCloseableEvaluates a Pkl module through different modes of evaluation. ThrowsVmEvalExceptionif an error occurs during evaluation.Evaluated modules, and modules imported by them, are cached based on their origin. This is important to guarantee consistent evaluation results, for example when the same module is used by multiple other modules. To reset the cache,
close()the current instance and create a new one.Construct an evaluator through
EvaluatorBuilder.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description voidclose()Releases all resources held by this evaluator.PModuleevaluate(ModuleSource moduleSource)Evaluates the module, returning the Java representation of the module object.java.lang.ObjectevaluateExpression(ModuleSource moduleSource, java.lang.String expression)Evaluates the Pkl expression represented asexpression, returning the Java representation of the result.java.lang.StringevaluateExpressionString(ModuleSource moduleSource, java.lang.String expression)Evaluates the Pkl expression, returning the stringified result.java.util.Map<java.lang.String,FileOutput>evaluateOutputFiles(ModuleSource moduleSource)Evaluates a module'soutput.filesproperty.java.lang.StringevaluateOutputText(ModuleSource moduleSource)Evaluates a module'soutput.textproperty.java.lang.ObjectevaluateOutputValue(ModuleSource moduleSource)Evaluates a module'soutput.valueproperty.<T> TevaluateOutputValueAs(ModuleSource moduleSource, PClassInfo<T> classInfo)Evaluates the module'soutput.valueproperty, and validates that its type matches the provided class info.ModuleSchemaevaluateSchema(ModuleSource moduleSource)Evalautes the module's schema, which describes the properties, methods, and classes of a module.TestResultsevaluateTest(ModuleSource moduleSource, boolean overwrite)Runs tests within the module, and returns the test results.static Evaluatorpreconfigured()Shorthand forEvaluatorBuilder.preconfigured().build().
-
-
-
Method Detail
-
preconfigured
static Evaluator preconfigured()
Shorthand forEvaluatorBuilder.preconfigured().build().
-
evaluate
PModule evaluate(ModuleSource moduleSource)
Evaluates the module, returning the Java representation of the module object.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateOutputText
java.lang.String evaluateOutputText(ModuleSource moduleSource)
Evaluates a module'soutput.textproperty.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateOutputValue
java.lang.Object evaluateOutputValue(ModuleSource moduleSource)
Evaluates a module'soutput.valueproperty.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateOutputFiles
java.util.Map<java.lang.String,FileOutput> evaluateOutputFiles(ModuleSource moduleSource)
Evaluates a module'soutput.filesproperty.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateExpression
java.lang.Object evaluateExpression(ModuleSource moduleSource, java.lang.String expression)
Evaluates the Pkl expression represented asexpression, returning the Java representation of the result.The following table describes how Pkl types are represented in Java:
Pkl type Java type Null PNullString StringBoolean BooleanInt LongFloat DoubleTyped, Dynamic PObject(PModuleif the object is a module)Mapping, Map MapListing, List ListSet SetPair PairRegex PatternDataSize DataSizeDuration DurationClass PClassTypeAlias TypeAliasThe following Pkl types have no Java representation, and an error is thrown if an expression computes to a value of these types:
- IntSeq
- Function
- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateExpressionString
java.lang.String evaluateExpressionString(ModuleSource moduleSource, java.lang.String expression)
Evaluates the Pkl expression, returning the stringified result.This is equivalent to wrapping the expression with
.toString()- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateSchema
ModuleSchema evaluateSchema(ModuleSource moduleSource)
Evalautes the module's schema, which describes the properties, methods, and classes of a module.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateOutputValueAs
<T> T evaluateOutputValueAs(ModuleSource moduleSource, PClassInfo<T> classInfo)
Evaluates the module'soutput.valueproperty, and validates that its type matches the provided class info.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
evaluateTest
TestResults evaluateTest(ModuleSource moduleSource, boolean overwrite)
Runs tests within the module, and returns the test results.This requires that the target module be a test module; it must either amend or extend module
"pkl:test". Otherwise, a type mismatch error is thrown.This method will write possibly
pcf-expected.pklandpcf-actual.pcffiles as a sibling of the test module. Theoverwriteparameter causes the evaluator to overwritepcf-expected.pklfiles if they currently exist.- Throws:
PklException- if an error occurs during evaluationjava.lang.IllegalStateException- if this evaluator has already been closed
-
close
void close()
Releases all resources held by this evaluator. If anevaluatemethod is currently executing, this method blocks until cancellation of that execution has completed.Once an evaluator has been closed, it can no longer be used, and calling
evaluatemethods will throwIllegalStateException. However, objects previously returned byevaluatemethods remain valid.- Specified by:
closein interfacejava.lang.AutoCloseable
-
-