Question

I created a Xpand generator. In its src/ folder I've defined my model My.nn a template and a workflow.

This is how my workflow.mwe2 file looks like:

module workflow.NeuralNetworksGenerator

import org.eclipse.emf.mwe.utils.*

var targetDir = "src-gen"
var fileEncoding = "Cp1252"
var modelPath = "src/model"

Workflow {
    component = org.eclipse.xtext.mwe.Reader {
        // lookup all resources on the classpath
        //useJavaClassPath = true

        // or define search scope explicitly
        path = modelPath

        // this class will be generated by the xtext generator 
        register = org.xtext.example.neuralnetworks.NeuralNetworksStandaloneSetup {}
        load = {
            slot = "systems"
            type = "System"
        }
    }

    component = org.eclipse.xpand2.Generator {
        expand = "templates::Template::main FOREACH systems"
        outlet = {
            path = targetDir
        }
        fileEncoding = fileEncoding
    }
}

When I'm trying to run this workflow.mwe2 file as MWE2 Workflow, I get the following errors:

0    INFO  AbstractExpressionsUsingWorkflowComponent - No meta models configured, using JavaBeans as default.
75   ERROR Mwe2Launcher       - Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
java.lang.RuntimeException: Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:99)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:73)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:64)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:55)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
Caused by: org.eclipse.emf.mwe.core.WorkflowInterruptedException: Couldn't find EClass for name 'System'.
    at org.eclipse.xtext.mwe.SlotEntry.findEClasses(SlotEntry.java:135)
    at org.eclipse.xtext.mwe.SlotEntry.put(SlotEntry.java:91)
    at org.eclipse.xtext.mwe.AbstractReader.addModelElementsToContext(AbstractReader.java:95)
    at org.eclipse.xtext.mwe.Reader.invokeInternal(Reader.java:166)
    at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
    at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
    at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
    at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
    at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:97)
    ... 5 more

The example that I used to create my particularized workflow mwe2 file is taken from the Xpand reference manual.

This is the list of plug-in dependencies from the MANIFEST.MF file:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my.neuralnetworks.generator.project
Bundle-SymbolicName: my.neuralnetworks.generator.project; singleton:=true
Bundle-Version: 1.0.0
Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
 org.eclipse.xtend.profiler;resolution:=optional,
 org.apache.commons.logging,
 org.apache.log4j;resolution:=optional,
 com.ibm.icu;bundle-version="4.0.1",
 org.antlr.runtime;bundle-version="3.0.0",
 org.eclipse.core.runtime;bundle-version="3.5.0",
 org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
 org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
 org.eclipse.jface.text;bundle-version="3.5.0",
 org.eclipse.xpand;bundle-version="0.7.0",
 org.eclipse.xtend;bundle-version="0.7.0",
 org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
 org.eclipse.xtend.backend;bundle-version="1.0.0";resolution:=optional,
 org.eclipse.xtend.middleend.xpand;bundle-version="1.0.0";resolution:=optional,
 org.eclipse.xtend.middleend.xtend;bundle-version="1.0.0";resolution:=optional,
 neuralnetworks;bundle-version="1.0.0",
 org.xtext.example.neuralnetworks;bundle-version="1.0.0",
 org.eclipse.emf.ecore.xmi.source;bundle-version="2.7.0",
 org.eclipse.jface.text.source;bundle-version="3.7.0",
 org.antlr.runtime.source;bundle-version="3.2.0",
 org.antlr.runtime_3.1.b1;bundle-version="3.1.0",
 com.ibm.icu.source;bundle-version="4.4.2",
 org.eclipse.jdt.core.source;bundle-version="3.7.0",
 org.eclipse.emf.mwe2.launch;bundle-version="2.2.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: nn

The neuralnetworks plug-in refers to my gmf project for my graphical editor where the metamodel is found and the org.xtext.example.neuralnetworks is the one corresponding to my text editor.

The ecore file corresponding to the emf file does have the EClass System in it.

Was it helpful?

Solution

How does your dsl look like? Does it contain a EClass named System? Update: Just saw you do not have a Xtext based metamodel. So if you want to use the Xtext Mwe Reader Component you have to use a AbstractGenericResourceSupport and register your epackage as well as it is described in this Xtend2 example http://christiandietrich.wordpress.com/2011/07/29/xtend2-code-generators-with-non-xtext-models/

OTHER TIPS

No, but since you use a existing metamodel and not a derived one you should add the following to the beginning of your workflow

bean = StandaloneSetup {
    registerGeneratedEPackage = "sample.SamplePackage"
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top