Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Internal class referenced above will be instantiated, and its lookup function called with the namespace and name from functionQName object. If it returns null, we'll throw an error, otherwise we'll use Reflection API to query for the parameter type, return type and to find the evaluate function. The below implementation can also be distributed

Code Block
languagescala
val functionClass = functionClassObject.getClass

// infer argument types; this implementation supports overloading evaluate function
val pTypes = argumentsFromDpath.map { o => o.getClass() }
val fEvaluate = functionClass.getMethods.find { p =>
	p.getName == "evaluate" && p.getParameterTypes.sameElements(pTypes)
}

val dResultType = NodeInfo.fromObject(fEvaluate.getReturnType)
val dArgTypes = fEvaluate.getParameterType.map { NodeInfo.fromObject }

...