VIATRA-Generator
VIATRA-Generator copied to clipboard
java.lang.ClassCastException in transformQueries method
Description
The transformQueries method found in viatra2logic runs into a ClassCastException
Query used:
pattern multipleTransitionsWithSameAction(state : State, action : java String) {
State.outgoingTransitions(state, transition);
State.outgoingTransitions(state, otherTransition);
find actionOfTransition(transition, action);
find actionOfTransition(otherTransition, action);
transition != otherTransition;
}
Relevant code in main:
def static void main(String[] args) {
val inputs = new FileSystemWorkspace('''initialModels/''',"")
val workspace = new FileSystemWorkspace('''outputModels/''',"")
workspace.initAndClear
println("Input and output workspaces are created")
val metamodel = loadMetamodel()
val partialModel = loadPartialModel(inputs)
val queries = loadQueries(metamodel)
println("DSL loaded")
val Ecore2Logic ecore2Logic = new Ecore2Logic
val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic)
val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic)
val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic
val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration())
val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel)
val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration)
//...
}
Log/Trace:
...
pattern cpsgen patterns multipleTransitionsWithSameAction
state (scoped) http://org.eclipse.viatra/model/cps/State
action java.lang.String
Exception in thread "main" java.lang.ClassCastException: org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey cannot be cast to org.eclipse.viatra.query.runtime.emf.types.BaseEMFTypeKey
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueryHeader(Viatra2Logic.java:142)
at hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:96)
at cpsgen.Run.main(Run.java:84)