Skip to content

Commit

Permalink
Review fix - allowedClasses - type change
Browse files Browse the repository at this point in the history
  • Loading branch information
apanczyk committed Jul 19, 2021
1 parent c88779d commit ae8602e
Show file tree
Hide file tree
Showing 9 changed files with 23 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ExpressionConfig implements Serializable {

private final List<WithCategories<String>> globalImports;

private final List<WithCategories<Object>> additionalClasses;
private final List<Class<?>> additionalClasses;

private final LanguageConfiguration languages;

Expand All @@ -29,12 +29,12 @@ public class ExpressionConfig implements Serializable {

private final boolean hideMetaVariable;

public ExpressionConfig(Map<String, WithCategories<Object>> globalProcessVariables, List<WithCategories<String>> globalImports, List<WithCategories<Object>> additionalClasses) {
public ExpressionConfig(Map<String, WithCategories<Object>> globalProcessVariables, List<WithCategories<String>> globalImports, List<Class<?>> additionalClasses) {
this(globalProcessVariables, globalImports, additionalClasses, new LanguageConfiguration(List$.MODULE$.empty()), true, true, Collections.emptyMap(), false);
}

public ExpressionConfig(Map<String, WithCategories<Object>> globalProcessVariables, List<WithCategories<String>> globalImports,
List<WithCategories<Object>> additionalClasses, LanguageConfiguration languages, boolean optimizeCompilation, boolean strictTypeChecking,
List<Class<?>> additionalClasses, LanguageConfiguration languages, boolean optimizeCompilation, boolean strictTypeChecking,
Map<String, WithCategories<DictDefinition>> dictionaries, boolean hideMetaVariable) {
this.globalProcessVariables = globalProcessVariables;
this.globalImports = globalImports;
Expand All @@ -54,7 +54,7 @@ public List<WithCategories<String>> getGlobalImports() {
return globalImports;
}

public List<WithCategories<Object>> getAdditionalClasses() {
public List<Class<?>> getAdditionalClasses() {
return additionalClasses;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import pl.touk.nussknacker.engine.api.expression.ExpressionParser
//TODO: how to make this config less spel-centric?, move globalImports and optimizeCompilation to spel configuration
case class ExpressionConfig(globalProcessVariables: Map[String, WithCategories[AnyRef]],
globalImports: List[WithCategories[String]],
additionalClasses: List[WithCategories[AnyRef]] = List.empty,
additionalClasses: List[Class[_]] = List.empty,
languages: LanguageConfiguration = LanguageConfiguration.default,
optimizeCompilation: Boolean = true,
strictTypeChecking: Boolean = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ class DevProcessConfigCreator extends ProcessConfigCreator {
)

val additionalClasses = List(
WithCategories(ReturningTestCaseClass)
classOf[ReturningTestCaseClass]
)

ExpressionConfig(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,12 @@ object DefinitionExtractor {
TypesInformationExtractor.clazzAndItsChildrenDefinition(classesToExtractDefinitions)
}

def extractFromClassList(objectToExtractClassesFromCollection: Iterable[Class[_]])
(implicit settings: ClassExtractionSettings): Set[TypeInfos.ClazzDefinition] = {
val ref = objectToExtractClassesFromCollection.map(Typed.apply)
TypesInformationExtractor.clazzAndItsChildrenDefinition(ref)
}

private def extractTypesFromObjectDefinition(obj: ObjectWithMethodDef): List[TypingResult] = {
def typesFromParameter(parameter: Parameter): List[TypingResult] = {
val fromAdditionalVars = parameter.additionalVariables.values
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,14 @@ import pl.touk.nussknacker.engine.api.typed.typing.Typed
import pl.touk.nussknacker.engine.definition.DefinitionExtractor.{ObjectDefinition, ObjectWithMethodDef, StandardObjectWithMethodDef}
import pl.touk.nussknacker.engine.definition.MethodDefinitionExtractor.{MethodDefinition, OrderedDependencies}

object ExpressionConfigDefinitionExtractor {
object GlobalVariableDefinitionExtractor {

def extractDefinitions(objs: Map[String, WithCategories[AnyRef]]): Map[String, ObjectWithMethodDef] = {
objs.map { case (varName, varWithCategories) =>
(varName, extractDefinition(varName, varWithCategories))
}
}

def extractDefinitions(objs: List[WithCategories[AnyRef]]): List[ObjectWithMethodDef] = {
objs.map(obj => extractDefinition(obj.value.toString, obj))
}

private def extractDefinition(varName: String, varWithCategories: WithCategories[AnyRef]): StandardObjectWithMethodDef = {
val returnType = varWithCategories.value match {
case typedGlobalVariable: TypedGlobalVariable => typedGlobalVariable.initialReturnType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ object ProcessDefinitionExtractor {
definition.sourceFactories.values ++
definition.customStreamTransformers.values.map(_._1) ++
definition.signalsWithTransformers.values.map(_._1) ++
definition.expressionConfig.globalVariables.values ++
definition.expressionConfig.additionalClasses
) (definition.settings)
definition.expressionConfig.globalVariables.values
) (definition.settings) ++
TypesInformation.extractFromClassList(definition.expressionConfig.additionalClasses)(definition.settings)
}

import pl.touk.nussknacker.engine.util.Implicits._
Expand Down Expand Up @@ -65,12 +65,10 @@ object ProcessDefinitionExtractor {

val exceptionHandlerFactoryDefs = ObjectWithMethodDef.withEmptyConfig(exceptionHandlerFactory, ProcessObjectDefinitionExtractor.exceptionHandler)

val globalVariablesDefs = ExpressionConfigDefinitionExtractor.extractDefinitions(expressionConfig.globalProcessVariables)
val globalVariablesDefs = GlobalVariableDefinitionExtractor.extractDefinitions(expressionConfig.globalProcessVariables)

val globalImportsDefs = expressionConfig.globalImports.map(_.value)

val additionalClassesDefs = ExpressionConfigDefinitionExtractor.extractDefinitions(expressionConfig.additionalClasses)

val settings = creator.classExtractionSettings(processObjectDependencies)


Expand All @@ -80,7 +78,7 @@ object ProcessDefinitionExtractor {
customStreamTransformersDefs.mapValuesNow(k => (k, extractCustomTransformerData(k))),
signalsDefs, exceptionHandlerFactoryDefs, ExpressionDefinition(globalVariablesDefs,
globalImportsDefs,
additionalClassesDefs,
expressionConfig.additionalClasses,
expressionConfig.languages,
expressionConfig.optimizeCompilation,
expressionConfig.strictTypeChecking,
Expand Down Expand Up @@ -145,7 +143,7 @@ object ProcessDefinitionExtractor {
val expressionDefinition = ExpressionDefinition(
definition.expressionConfig.globalVariables.mapValuesNow(_.objectDefinition),
definition.expressionConfig.globalImports,
definition.expressionConfig.additionalClasses.map(_.objectDefinition),
definition.expressionConfig.additionalClasses,
definition.expressionConfig.languages,
definition.expressionConfig.optimizeCompilation,
definition.expressionConfig.strictTypeChecking,
Expand All @@ -165,7 +163,7 @@ object ProcessDefinitionExtractor {
)
}

case class ExpressionDefinition[+T <: ObjectMetadata](globalVariables: Map[String, T], globalImports: List[String], additionalClasses: List[T],
case class ExpressionDefinition[+T <: ObjectMetadata](globalVariables: Map[String, T], globalImports: List[String], additionalClasses: List[Class[_]],
languages: LanguageConfiguration, optimizeCompilation: Boolean, strictTypeChecking: Boolean,
dictionaries: Map[String, DictDefinition], hideMetaVariable: Boolean, strictMethodsChecking: Boolean)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ object ProcessDefinitionBuilder {
val expressionDefinition = ExpressionDefinition(
definition.expressionConfig.globalVariables.mapValuesNow(makeDummyDefinition(_)),
definition.expressionConfig.globalImports,
definition.expressionConfig.additionalClasses.map(makeDummyDefinition(_)),
definition.expressionConfig.additionalClasses,
definition.expressionConfig.languages,
definition.expressionConfig.optimizeCompilation,
definition.expressionConfig.strictTypeChecking,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ class ProcessDefinitionExtractorSpec extends FunSuite with Matchers {
"typedGlobal" -> WithCategories(SampleTypedVariable, "category")
),
globalImports = Nil, additionalClasses = List(
WithCategories(AdditionalClass)
classOf[AdditionalClass]
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ class DefinitionResourcesSpec extends FunSpec with ScalatestRouteTest with FailF
typesInformation.focus.get shouldBe Json.fromString("ReturningTestCaseClass")
}
}

it("should handle missing processing type") {
it("should handle missing scenario type") {
getProcessDefinitionData("foo", Map.empty[String, Long].asJson) ~> check {
status shouldBe StatusCodes.NotFound
}
Expand Down

0 comments on commit ae8602e

Please sign in to comment.