Code Monkey home page Code Monkey logo

emfatic's Introduction

Eclipse Emfatic

Emfatic is a textual syntax for EMF Ecore (meta-)models.

emfatic's People

Contributors

agarciadom avatar kolovos avatar

Stargazers

 avatar

Watchers

 avatar  avatar Eclipse Webmaster team avatar Randall avatar

emfatic's Issues

Add an Emfatic-based comparison tool for Ecore metamodels

An industrial partner is working regularly with Ecore metamodels, and for technical reasons they prefer having the .ecore file under version control rather than the Emfatic .emf file, but they would still like to compare metamodel versions through the more readable Emfatic syntax rather than the XMI sources of the .ecore file.

We tried creating a textconv filter for Git that turns .ecore files into Emfatic for differencing in this project. It works fine for differencing from the terminal or from VS Code, but the Git integration in Eclipse does not support textconv filters. Instead, we would need to provide a custom comparison view for Eclipse's Compare UI (similar to the existing raw text + Ecore differencing views).

It'd be nice to add a plugin to this project which provided this functionality, which could be optionally installed as a new feature.

[Eugenia] Diagram code generation from headless ant build using epsilon.eugenia task

/There should be a clean way to generate all codes ( model, edit, test , diagram etc )
using emfactic file referred in an ant script ( in headless mode ).

Right now even after manually adding all dependencies. Running the ant script

For example,

java -jar C:\eclipse\plugins\org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -application org.eclipse.ant.core.antRunner -buildfile C:\epsilon\workspace\is\model\build.xml

Produces,

BUILD FAILED
C:\epsilon\workspace\is\model\build.xml:17: java.lang.IllegalStateException: Wor
kbench has not been created yet.
at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:93)
at org.eclipse.epsilon.workflow.tasks.eugenia.EugeniaTask.executeImpl(Eu
geniaTask.java:139)
at org.eclipse.epsilon.workflow.tasks.EpsilonTask.execute(EpsilonTask.ja
va:40)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
at org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.executeTarge
ts(EclipseDefaultExecutor.java:32)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRu
nner.java:672)
at org.eclipse.ant.internal.core.ant.InternalAntRunner.run(InternalAntRu
nner.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.ant.core.AntRunner.run(AntRunner.java:513)
at org.eclipse.ant.core.AntRunner.start(AntRunner.java:600)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandl
e.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runAppli
cation(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Ec
lipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Total time: 1 second
An error has occurred. See the log file
C:\Users\shrikanth_n_c\workspace.metadata.log.

log.log

My guess epsilon.eugenia task is tightly coupled with eclipse dependencies ( IFile, Workspace, workbench etc)

Thanks,
Shrikanth NC

Emfatic language does not allow setting the 'literal' attribute of EEnumLiteral

Jörn Guy Süß CLA 2022-12-14 00:48:24 EST
The grammar of Emfatic defines an EEnumliteral like this:

sequence enumLiteral : leadingAnnotations=annotations name=ID (EQUALS val=INT_LITERAL)? trailingAnnotations=annotations SEMI ;

But Ecore defines it like this:
https://download.eclipse.org/modeling/emf/emf/javadoc/2.9.0/org/eclipse/emf/ecore/EEnumLiteral.html

with an extra attribute literal, defined as

This is the literal, string value that represents this enumerator value. This is used in persisting instances of enumerated type. If set to null, it will return the name, instead.

Checking the source code of Emfatic, there is no call to the setLiteral() method anywhere. This, together with the grammar, seems to indicate that Emfatic does not offer this feature.

Could this please be added?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.