VIATRA-Generator icon indicating copy to clipboard operation
VIATRA-Generator copied to clipboard

java.lang.ClassCastException in transformQueries method

Open mayerkr opened this issue 7 years ago • 0 comments

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)

mayerkr avatar Aug 21 '17 15:08 mayerkr