JBoss Tools 4.4.2.AM2 for Eclipse Neon

by jeffmaury at October 20, 2016 01:39 PM

Happy to announce 4.4.2.AM2 (Developer Milestone 2) build for Eclipse Neon.

Downloads available at JBoss Tools 4.4.2 AM2.

What is New?

Full info is at this page. Some highlights are below.

OpenShift 3

Although our main focus is bug fixes, we continue to work on providing better experience for container based development in JBoss Tools and Developer Studio. Let’s go through a few interesting updates here and you can find more details on the What’s New page.

Common namespace template support

Common namespace was added but templates were still loaded from the hardcoded openshift namespace. They are now loaded from the configured common namespace (which still default to openshift)

User controlled hostname when creating routes

When an application is being deployed to Openshift, a route is optionally created if required by the user. Openshift/CDK used to create an xip.io based hostname. User can now set its own hostname. This allows for both changing the DNS to local IP provider (nip.io) or using you own enterprise DNS naming strategy.

The hostname can be accessed from the Services and Routing Settings page when deploying an application:

wizard new application hostname


Forge Runtime updated to 3.3.2.Final

The included Forge runtime is now 3.3.2.Final. Read the official announcement here.


New Menu in Forge Console view to trigger the Command Selection Dialog

Now it’s possible to bring the Command Selection Dialog menu (invoked when Ctrl/Command + 4 is pressed) by choosing the "Open Command Selection Dialog…​" menu item in the Forge Console view.

open command dialog


Jeff Maury

by jeffmaury at October 20, 2016 01:39 PM

Modeling Symposium at EclipseCon Europe 2016

by Maximilian Koegel and Jonas Helming at October 20, 2016 07:56 AM

The modeling symposium at EclipseCon Europe 2016 takes place on Wednesday, October 26th from 17.45pm-18.20pm (see here).

I’m happy to present the agenda of selected talks:

  1. Exploring the Future of Eclipse
    Modeling: Web and Semantic Collaboration – István Ráth (7 Minutes)
  2. The Genmodel Addon project – Olivier Prouvost (5 Minutes)
  3. App-up in 5 minutes – Jörg Riegel (10 Minutes)
  4. Generating Visual Studio Code extensions for Xtext DSLs
    – Karsten Toms (7 Minutes)

I’m looking forward to this event and interesting discussions afterwards. Hope to see you there!


Leave a Comment. Tagged with eclipse, eclipsecon, emf, modeling, eclipse, eclipsecon, emf, modeling

by Maximilian Koegel and Jonas Helming at October 20, 2016 07:56 AM

Google Cloud Shell adopts the Orion Code Editor

by Steve Northover at October 19, 2016 09:38 PM

It’s nice to see Google Cloud Shell using Orion in their latest offering. Google Cloud Shell is just that: a shell (really a bunch of shells) to a machine in the cloud. The machine contains source files (go figure) and Orion is great at editing files, syntax coloring, code assist, refactoring, dynamic linting and much more.

This is how you get to Orion in Cloud Shell:


Here is Orion running in Google Platform Shell:


I am reminded that IBM makes extensive use of Orion as a code editor in Bluemix DevOps Services and that we should really blog about that again soon.  Development in the cloud for the cloud!


by Steve Northover at October 19, 2016 09:38 PM

Editing Graphviz *.dot files with the GEF DOT Editor

by Tamas Miklossy (miklossy@itemis.de) at October 19, 2016 07:19 AM

Graphviz *.dot files are usual text files containing the textual representation of graph definitions. The structure of these *.dot files are defined by the DOT Language that provides more than 150 graph, subgraph, node and edge attributes to influence the graph visualization. Some of these dot attribute values are distinct, some of them are following their own language specification and some of them depend on the previously defined dot attribute values. Remembering the name and the possible values of all these dot attributes or searching them continuously within the Graphviz documentation not only ties up valuable resources, but also makes the entire process more error prone. And here is where the GEF DOT Editor could be of your assistance.

Xtext-based editor within the Eclipse workbench UI

The GEF DOT Editor1 is an Xtext-based textual editor registered for *.dot files within the Eclipse workbench UI. It is – together with the GEF DOT Graph View2 – part of the GEF Graphviz DOT authoring environment and – amongst others – provides support for the following features.

Syntax Highlighting 

The GEF DOT Editor uses different visual styles (different colors and fonts) for the different dot language elements. The keywords (such as 'graph', 'digraph', 'node', 'edge', ...) are represented in bold, the dot attribute names appear in blue, their values are shown in brown (or in red if they are quoted), while the embedded comments are highlighted in green. This kind of text decoration not only makes it easier to distinguish between the different dot language elements but also helps the user to find possible errors within the currently opened dot file.


Content Assist 

The GEF DOT Editor is able to provide suggestions on how to complete the statement/expression the user has just started to type. This content assist functionality can be accessed on any place within the opened dot file using the keyboard shortcut Ctrl + Space. Depending on the current cursor position, only those dot language elements will be offered that make sense within the given context: graph attributes names within a graph context, edge attribute names within an edge context and all possible attribute values within a certain attribute context.


Background Validation

The GEF DOT Editor continuously validates the content of the opened dot file while the user is editing, even if the current dot file has not been saved yet. When the editor issues a warning/error, e.g. in case of using a deprecated/invalid dot language element, it underlines the corresponding part in yellow/red that contains the warning/error. It also puts some warning/error markers with a meaningful message on the left and right side of the editor and also populates the Problems view with all the recognized issues. With such a support the user can easily identify the parts of the dot file that need to be fixed.



The GEF DOT Editor is – in certain cases – able to automatically fix the problems the user made while editing a dot file. In such cases, the editor offers so called quickfixes to the user. This functionality is available either throught the context menu of the warning/error marker or using the keyboard shortcut Ctrl + 1. Applying such a quickfix can for instance replace an invalid dot attribute value by a valid one.



The GEF DOT Editor supports collapsing certain parts of the currently opened dot file. This functionality is especially handy for large dot files to hide unnecessary details, e.g. the attributes belonging to a certain edge. Hovering on a collapsed part still enables the user to take a look at the hidden part without explicitly expanding it.


Outline View 

The GEF DOT Editor provides an outline view to help the user navigating through the opened dot file. It provides a hierarchical view of the graph nodes and edges together with their attributes. By default, it represents the elements in the same order as defined within the dot file, but also allows the user to sort them alphabetically. Moreover, the user can choose to synchronize the outline view selection with the editor selection by switching the'Link with Editor' mode on, so a selection on an element within the outline view automatically highlights the corresponding dot element within the GEF DOT Editor.


Automatic Sync 

The GEF DOT Editor is also able to automatically notify the GEF DOT Graph View when the user saves the currently modified dot file. Using the 'Link with DOT Editor' functionality, there is no need to manually trigger the graph visualization to re-render the currently edited dot file within the GEF DOT Graph View.



The GEF DOT Editor provides useful functionalities that come in handy when working with Graphviz *.dot files. Apart from that, the open source GEF Framework provides further components as parts of the GEF Graphviz DOT authoring environment. For further information, take a look at the GEF DOT User Guide or visit the GEF session on the EclipseCon Europe 2016.

At the time of this writing, the functionality of the GEF Graphviz DOT authoring environment is limited as follows:

1 The GEF DOT Editor is not yet able to read all the dot attribute values (e.g: html-like labels)

2 The GEF DOT Graph View is not yet able to visualize all the dot attribute values.

by Tamas Miklossy (miklossy@itemis.de) at October 19, 2016 07:19 AM

JBoss Tools 4.4.2.AM1 for Eclipse Neon

by jeffmaury at October 18, 2016 11:25 PM

Happy to announce 4.4.2.AM1 (Developer Milestone 1) build for Eclipse Neon.

Downloads available at JBoss Tools 4.4.2 AM1.

What is New?

Full info is at this page. Some highlights are below.

OpenShift 3

Although our main focus is bug fixes, we continue to work on providing better experience for container based development in JBoss Tools and Developer Studio. Let’s go through a few interesting updates here and you can find more details on the What’s New page.

Cluster common namespace

When looking for Openshift resources (builder images, templates), a common namespace is browsed. Earlier hardcoded openshift namespace is now configurable with default value openshift.

Please note that templates are still loaded from the òpenshift namespace and not the from configured common namespace, this will be fixed for the next release.

It can be accessed and modified through the connection extended properties:

Connection extended properties

CDK server using native terminal for better user interactions

The CDK server adapter now uses a native terminal that allows better interaction with the user. In the case credentials are not passed in the Vagrant environment, the user will be asked just as with the standard Vagrant CLI and in case of registration failures, retries will be performed.

First, make sure your CDK server adapter is configured not to pass credentials:

CDK editor

Then, start the CDK server adapter and a new terminal window will open, asking for registration:


If you answered y to the previous questions, then the terminal window will ask for username:


Then the terminal window will ask for password:


If the registration fails, then the terminal window will perform retries and ask again for username and password:



Jeff Maury

by jeffmaury at October 18, 2016 11:25 PM

Towards an open IoT cloud platform

by Ian Skerrett at October 18, 2016 02:15 PM

Today we announced a collaboration between Bosch, Red Hat and Eurotech to begin the work to create interoperable IoT components for an IoT cloud platform. This is the first step towards creating an open source IoT cloud platform that I hope one day will become the defacto implementation for IoT solutions, similar to Apache http for web applications.

An important part of this announcement is the availability of the Eclipse Kapua code base. This initial contribution is based on code Eurotech has used to run their existing Eurotech Everyware Device Cloud and involves significant involvement from Red Hat to create a  platform for a set of modular services. The next step will be to integrate other Eclipse projects, like Hono or Hawkbit, with Kapua. Longer term I hope to see Eclipse Mosquitto, Eclipse Leshan, Eclipse ACS, etc. become services of an IoT cloud platform.

Ultimately, a successful open IoT cloud platform will have an large ecosystem of modular services provided by many different suppliers, not just Eclipse IoT projects. Each service will have a defined API to allow for easy integration with IoT solutions. The platform will run on different Cloud PaaS, like OpenShift, Cloud Foundry, and will be loosely coupled with the IoT gateways and constrained devices. We have defined the characteristics and featues of an IoT cloud platform in the recent IoT Stacks white paper.


This is the start of the work towards an open IoT cloud platform. Eurotech, Red Hat and Bosch have taken the first step but more companies and individuals will be needed to see this become a reality. To get involved, start participating in the Eclipse Kapua and Eclipse Hono projects. Next week at the Eclipse IoT Day and Eclipse IoT WG Meeting there will also be lots of discussion abut this future. Join us and help create the future.



by Ian Skerrett at October 18, 2016 02:15 PM

New Industry Collaboration to Develop Interoperable IoT Components for the Cloud

October 18, 2016 12:15 PM

Bosch Software Innovations, Eurotech and Red Hat collaborate to develop interoperable IoT components for the Cloud.

October 18, 2016 12:15 PM

Implementing IoT Architectures with Open Source [White Paper]

by Benjamin Cabé at October 18, 2016 01:02 AM

Eclipse IoT has just published a white paper that, although I’m obviously biased, is a nice read for anyone looking at understanding today’s IoT architectures, and the role that open source plays by providing some of the key software building blocks needed for implementing IoT solutions.

More specifically, the white paper looks at the core features that need to be provided by each of the three key components (stacks) of an IoT solution:

  • the constrained devices – those are typically the billions of devices you hear about in the news: they are cheap, very specialized, and often not capable in terms of communication and networking capabilities,
  • the gateways and smarter devices – here we’re talking about more powerful equipment that is sitting at the edge of the network, that’s to say that bridges the physical world to the Internet,
  • the IoT cloud platforms – this is where the devices in the field are managed, and where data is stored and analyzed. IoT cloud platforms must also allow the integration of external applications thanks to open APIs.
IoT Stack for Constrained Devices IoT Stack for Gateways and Smart Devices IoT Stack for Cloud Platforms


You can download the white paper from the Eclipse IoT website, or read it below.

I will also  be giving a presentation at the Virtual IoT meetup  on November 2. You should plan on attending to get a chance to learn more about some of the open source projects mentioned in the white paper, and get a more complete overview of what is going on at Eclipse IoT:

Implementing IoT Architectures using Open Source Software

Wednesday, Nov 2, 2016, 8:00 AM

No location yet.

81 IoT enthusiasts Attending

This is a virtual Meetup occurring at 8AM Pacific time (11AM Eastern, 4PM Central European Time). For help with your timezone calculation, refer to this.The meetup will be held on Google Hangouts and you will be able to watch the live stream directly on YouTube.Link will be added soon.In this session Benjamin will provide some insight into the k…

Check out this Meetup →

by Benjamin Cabé at October 18, 2016 01:02 AM

1 week to EclipseCon Europe 2016

October 17, 2016 02:50 PM

Don't miss this year's EclipseCon Europe, starting on Oct 25, in Ludwigsburg, Germany.

October 17, 2016 02:50 PM

Sleepwalk, So Fast Asleep

by waynebeaton at October 17, 2016 02:49 PM

One of my favourite literary quotes comes from Canadian author, Hugh MacLennan.

“But that night as I drove back to Montreal, I at least discovered this: that there is no simple explanation for anything important any of us do, and that the human tragedy, or the human irony, consists in the necessity of living with the consequences of actions performed under the pressure of compulsions so obscure we do not and cannot understand them.”
― Hugh MacLennan, The Watch that Ends the Night

I think that this describes our industry pretty well…

This passage was the basis for the the song Courage by the Tragically Hip, arguably one of (if not the) most Canadian bands in existence (seriously, the entire country basically shut down for the night while a third of the population dropped everything to gather in groups to watch their last concert on August 20/2016).

Anyway, this is the long way of saying that I have no recollection of why I selected the username wayninator for my primary Google account many years ago. But I’m apparently stuck with it.

by waynebeaton at October 17, 2016 02:49 PM

Drop SWT XULRunner Support on macOS?

by Gunnar Wagenknecht at October 17, 2016 02:41 PM

Last week, I started playing with the SWT macOS Cocoa port. You can follow all the changes and discussions via bug 502090. I now have a successful build using recent macOS libraries from 10.12.

The last missing piece is support for a Mozilla browser on macOS. This as been implemented using the XULRunner. However, the XULRunner is deprecated and has been removed from most Linux distros (according to Wikipedia).

I’d like to drop support for it completely from macOS. Is there anyone relying on it? If yes, do you have the time/resources to commit to maintaining it going forward?

Please comment on bug 506092.

by Gunnar Wagenknecht at October 17, 2016 02:41 PM

EclipseSource goes France!

by Maximilian Koegel and Jonas Helming at October 17, 2016 02:29 PM

Bonjour, we are delighted to announce, that EclipseSource goes France! For years, France and Germany have been hotspots for topics such as Modeling, EMF, Papyrus, and, more generally,  Eclipse. Many of our current business relations bring us together. Therefore, having an office in France is the next logical step.

Additionally, we are happy to announce that this office will be led by a well-known face in the Eclipse ecosystem: Rémi Schnekenburger. He is bringing even more Papyrus and Eclipse Modeling Framework experience to the team with a specific focus on modeling with UML, UML-RT, and SysML.

It is also worth mentioning that EclipseSource France is an excellent example how research conducted by CEA List can find an industrial application and, in turn, fuel the creation of business and jobs in France.  

As France has so many wonderful places to start an office, it was hard to chose a location. However, given its close proximity to business partners and the vast amount of available talent, we were directed to one of the most beautiful cities of the world: Paris!

With our expansion to Paris, we can now accommodate our customers and partners in France even better than before. Additionally, we can enhance our team with more modeling experts.

Contact us now with your projects in France. We are currently completing the final legal steps necessary and will be fully operational in Paris by January 1st, 2017. We are very much looking forward to working with you on your projects in France and, as always, around rest of the world!


Photo and Copyright of Photo by Moyan Brenn (CC-BY-2.0)



Leave a Comment. Tagged with eclipse, EclipseSource, emf, France, Papyrus, eclipse, EclipseSource, emf, France, Papyrus

by Maximilian Koegel and Jonas Helming at October 17, 2016 02:29 PM

LAMP Stacks for IoT

by Ian Skerrett at October 14, 2016 05:54 PM

The Eclipse IoT community has grown considerably over the last 12 months. More importantly we have expanded the breadth of technology to include software that runs on devices, at the edge and the cloud. We have also learnt a lot about the software functionality required to build an IoT solution.

It has always been clear that for IoT to be successful it needs to be based on open source and open standards. It is also becoming clear that there are a set of core features required to implement any scalable IoT solution. Similar to the LAMP stack for web applications, we believe there are 3 different software stacks required for IoT solutions, targeting 1) constrained devices, like MCUs, 2) IoT Gateways and Smart Devices, and 3) IoT Cloud Platforms. Each of these stacks require key services to enable the IoT applications running on their platform.

schema-archi (1).png

We have also published a white paper to describe each of these stacks. The white paper also shows how each Eclipse IoT project fits within each of the 3 IoT stacks. Overtime, I think expect the Eclipse IoT community will grow to provide more integrated version of these stacks. My goal is this community becomes the provider of the LAMP Stacks for IoT.


IoT White Paper

by Ian Skerrett at October 14, 2016 05:54 PM

Xtext 2.11 Release Plan Changed

by Xtext-Team (xtext@itemis.com) at October 14, 2016 03:31 PM

The Eclipse Xtext project team has decided to change the schedule for the upcoming 2.11 release. The release was planned for October 18th, 2016 – right before EclipseCon Europe. However, instead of releasing the final version on that date, a beta version of Eclipse Xtext will be released. The new official release date has not been announced yet, but is expected until January 2017.

Language Server Protocol

The main feature for Xtext 2.11 is the support of Microsoft’s Language Server Protocol. The server side of the protocol is already implemented to some degree by Xtext now, which enables to integrate Xtext DSLs in VisualStudio Code and in future by other code editors and IDEs that support the protocol (e.g. Eclipse Che).

There is still some work until the protocol is fully implemented and with Xtext 2.11 all supportable features are expected to work. It is no problem to start already to get your experience with Xtext 2.11 beta LSP implementation, since part of the LSP is that a language server answers the Initialize Request with its ServerCapabilities. An unsupported feature of the protocol won’t just be accessed by the client then.

Bug Fixes

A main focus of our work at itemis for the Xtext project is on bugfixing. Eclipse Xtext and Xtend have over 1.000 open issues in Bugzilla and GitHub. For our customers often stability and scalability are far more important than new features or additional integration possibilities. Therefore it is important for us to assure that the known bugs are reduced. Further, we will now react on new bugs faster.

For Xtext 2.11 already over 230 bugzilla tickets and over 90 GitHub issues were solved. This is quite a large portion of the existing bugs. Our team, especially Christian and Karsten invested quite some time into bugfixing in the past months and we will continue to contribute as many fixes as possible. Some issues are already fixed and pull requests exist, but reviews are pending so some fixes are not available yet.

Repository Split Aftermath

After the 2.10 release the project’s source repository was split up into eight sub-projects. The main idea was to divide the large code base into smaller parts which could be easier maintained.

The main split was done quite fast, but some things got severely broken. Many tests got broken, some scripts relied on the old directory structure, builds became dependent on upstream builds, release tags got lost and so on. There are still open restructuring issues that cannot be fixed until next week.

While working on bugfixes recently we are increasingly wondering if that split was a good idea at all. Instead of making things easier, some things became more complex. For the user it is often not clear to which repository an issue should be filed. For example, a bug detected when working with Xtend might be filed to the xtext-xtend repository. During the issue analysis it can turn out that the problem is actually in Xbase, which now is in the xtext-extras repository, or has changes for both repositories. It happened multiple times that several pull requests had to be opened for different repositories to fix one bug. This also leads to the necessity that a certain order of pull requests have to be merged and upstream builds have to be executed before a multi-repo issue is actually solved.

Also the trace link from pull request to issue gets broken when the issue was filed to a different repository than the pull request that fixes it.

Some internal languages (like Xbase) are now also spanning multiple repositories. While UI independent projects are in one repository (e.g. Xbase is now in xtext-extras), the Eclipse editors for these languages are in xtext-eclipse.

Hopefully in the future we will experience the real benefit of the split, but for now there is still some work to do to get things fixed and some overhead. We expect that the remaining problems are solved with the 2.11 release.


On October 18th, a beta version of Eclipse Xtext 2.11 will be released instead of the final release as planned in July’s developer meeting. The beta version will already contain lots of bug fixes and a usable implementation of the Language Server Protocol.

However, it is too early for a final release at the moment. Due to the project’s restructuring some issues have to be solved as well as completing the LSP implementation. The new release date will be announced soon. All main developers come together at EclipseCon Europe this month and we will then surely discuss topics like the new release plan. If you are interested in first-hand information don’t miss EclipseCon and meet us there!

by Xtext-Team (xtext@itemis.com) at October 14, 2016 03:31 PM

5 reasons to use EGerrit - #5, Being in Eclipse

by Pascal (noreply@blogger.com) at October 14, 2016 02:30 AM

To celebrate the release of EGerrit 1.1 and make you try it out, we (the EGerrit team, Jacques Bouthillier, Guy Perron, Marc Khouzam and myself) have decided to gather 5 reasons to use EGerrit and we will be posting one reason per week.

Reason #5 – Being in Eclipse.

“Being in Eclipse”?! Is that really a reason to use EGerrit? Isn’t that obvious?

Every time you bring a tool to Eclipse, there is the obvious gain of saving the user the “context switch”. In EGerrit we are addressing this by providing a view to list reviews,
Gerrit Dashboard
an editor to manage a review (rebase, submit, etc.),
Gerrit Review editor
and simple ways to comment. But beyond this, what really interests us is the integration (like in “I” of IDE) with the rest of the Eclipse ecosystem to simplify and enrich the act of performing a review.
Here is a list of some of the benefits so far:
  • By integrating with the compare editor, you can perform reviews with the most relevant editor for the given file. For example with EMF compare installed, you get a nice comparison of the EMF ecore file rather than a textual comparison; for Java files you get a java editor which takes into account your preferences for syntax coloring;
    Comparing ecore file from a review
  • By building on top of EGit, users get the UI they are familiar with when checking out code, get full access to previous versions of the code through the integrated Git blame or the History view, and can optionally perform reviews using the quick diff capability;
  • The user has access to the complete source code (instead of just the few files that are part of the review), with full navigation and all syntax-aware features, thus being able to really measure the implication of a change.
You can download EGerrit from the Neon release repo or from the Eclipse Marketplace. For questions, you can connect with us on egerrit-dev@eclipse.org; and for bugs or to take a peek at the future you can see our Kanban board.

by Pascal (noreply@blogger.com) at October 14, 2016 02:30 AM

Sirius 4.1: Ready? Go!

by Melanie Bats at October 13, 2016 08:23 AM

When I was a child one of my favorite game was Puzzle Bobble, you may remember these two little dragons Bub and Bob. What I loved in this game : simple rules, easy to play and so very addictive.

This is exactly what I feel when I think about the new Properties View feature in Eclipse Sirius:

  • The rules are really simple as it is the same as the ones existing for the other Sirius representations : define your properties in the .odesign file, it is dynamic, no code generation is involved.

  • It is very easy to use as it follow habits of Sirius Specifier : use expression to go through the model, then it is flexible even for complex Ecore models.

  • And it is also greatly addictive! You will start by trying it on one of your Sirius based modeler and finally you will want to use it everywhere, even on non Sirius based editors.

The Properties View component exists from Sirius 4.0 but it was labeled as experimental. During the summer we worked hard on this topic and today we are glad to announce Sirius 4.1. Let’s go to the industrial world!

Stéphane and I will detail all the new features available in this new release at EclipseCon Europe, don’t miss it! Book the slot :  Sirius 4.1 : Let Me Sirius That For You! Theater Stage – Wednesday, October 26, 2016 – 16:00.

Also, don’t forget also to register for Fred’s funny Sirius Workshop: let’s create a graphical modeling editor for a robot! or attend Cédric’s talk about the Modeling Avengers and after all Be Serious With Sirius by coming to Etienne’s talk about Your Journey From First Experimentation to Large Deployment talk.


As my favorite small dragons are used to say Ready? for Sirius 4.1 Go!

by Melanie Bats at October 13, 2016 08:23 AM

Project Quality Day @ EclipseCon Europe

October 11, 2016 03:39 PM

Join us October 26 for a day full of talks dedicated to testing and quality.

October 11, 2016 03:39 PM

Xtext hint: Content assist for multiple consecutive keywords

by Hendrik Bünder (buender@itemis.de) at October 10, 2016 06:30 AM

Keywords play a central role in Xtext DSLs to define the languages general structure. In many cases a single keyword is sufficient to specify what is expected next. Although Xtext generally supports multiple consecutive keywords the default content assist implementation will propose one keyword after another instead of concatenating consecutive keywords. This can lead to confusing proposals for the user. This article will help you to prevent this confusion.

After demonstrating the problem with a simple DSL it will be shown that slighty changing the grammar generates the infrastructure to offer more valuable proposals. The source code for this example is available in our Github repository. Further examples for cases in which a single keyword is sufficient to specify what is expected next can be found in the blog articals regarding controlled natural languages described by Christoph Knauf.

Sample Grammar

As an example we will use the well-known domainmodel example DSL that is shipped with the Xtext SDK, extended by the new concept Relation. A Relation comes with its own semantics that is represented by a sequence of keywords. While depends on carries the semantics that one entity is relying on the existence of a certain other entity, is composed of defines a composition dependency between two entities. Since putting each keyword in its own quote is considered as good grammar style the keyword sequences are separated.

grammar org.eclipse.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.xbase.Xbase

generate domainmodel "http://www.xtext.org/example/Domainmodel"


    'entity' name=ValidID ('extends' superType=JvmParameterizedTypeReference)? '{'

    ('depends' 'on' | 'is' 'composed' 'of') referencedEntity=[Entity]

name=ValidID ':' type=JvmTypeReference;

As an example we want to define an entity Person and an entity Club where the entity Club is composed of Persons. Within the entity Club the proposal provider is invoked leading to the following suggestions:

Default Proposal Provider

The figure above shows the proposals based on the default implementation of the content assist that offers each first keyword of the Relation rule. As a consequence each single keyword of the sequence will be proposed by an additional hit of CTRL + Space. Especially the beginning of the second keyword sequence is gives no information about the whole keyword sequence making the proposal nearly unusable. To improve the suggestion of multiple consecutive keywords the grammar and the proposal provider will be slightly adjusted.

Grammar Adjustments

To enable the proposal provider to make more valuable suggestions the keyword sequences are moved to their own parser rule that is than referenced from the Relation rule.

    (DependsOn | IsComposedOf) referencedEntity=[Entity]

    'depends' 'on'

    'is' 'composed' 'of'

Although, the change makes no difference to the grammar itself it causes valuable changes in the generated language framework and especially in the proposal provider. Each of the keyword sequences now has its own complete_ method in the AbstractDomainmodelProposalProvider.

    public void complete_DependsOn(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
        // subclasses may override
    public void complete_IsComposedOf(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
        // subclasses may override

As the by default generated methods suggest we now implement each of these in the DomainmodelProposalProvider to return the whole sequence of keywords as a proposal. First, as preparation we inject the DomainmodelGrammarAccess as an extension to the DomainmodelProposalProvider. The GrammarAccess is used in the overwritten complete_ methods to get easy access to the keyword sequence defined by the grammar.

class DomainmodelProposalProvider extends AbstractDomainmodelProposalProvider {

    @Inject extension DomainmodelGrammarAccess

Second, the complete_ methods are overwritten to create a proposal string that contains all elements of the keyword sequence. The injected DomainmodelGrammarAccess is used to get the group of keywords that is than passed to the createKeywordProposal method that does the real magic.

override complete_DependsOn(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
override complete_IsComposedOf(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {

The following code snippet shows how a coherent keyword sequence is computed and proposed. After checking that the passed in group is not null the proposal string is concatenated. First, the list of elements from the group are retrieved and filtered for instances of org.eclipse.xtext.Keyword. Second, the values of each Keyword are fetched and concatenated using the join method with a single space as delimiter. Finally, the proposalString is turned into a completion proposal that is than handed over to the ICompletionProposalAcceptor calling the accept method.

def createKeywordProposal(Group group, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    if (group == null) {
        return null
    val proposalString = group.elements.filter(Keyword).map[value].join(" ") + " "
    acceptor.accept(createCompletionProposal(proposalString, proposalString, null, context))

The following figure shows the newly created proposal strings that now contain the whole sequence of keywords.

Enhanced Proposal Provider


As demonstrated above the default keyword support of the Xtext language workbench is sufficient for single keywords. However, there are situations in which multiple consecutive keywords are required to define thorough and comprehensive language statements. To cope with sequences of keywords as a whole small changes to the grammar are required. In addition to solely proposing consecutive keywords the overwritten methods can also be used to filter, e.g. allow only one depends on relation per entity. All in all, the rather small changes to the grammar make the suggested consecutive keywords more valuable and in addition create new opportunities to improve the overall proposals.


by Hendrik Bünder (buender@itemis.de) at October 10, 2016 06:30 AM

MARTE 1.2.1

by tevirselrahc at October 10, 2016 04:00 AM

Have you heard about MARTE?

Well, MARTE is the OMG Modeling and Analysis of Real-Time Embedded Systems profile.

Yes, it’s a mouthful, but if you are interested in the nitty-gritty of embedded systems, it can be very useful!

Here’s a short message from one of my minion about it:

We are pleased to announce that the MARTE feature has been transformed into a Papyrus Component. The MARTE 1.2.1 release, for Eclipse Neon, can be downloaded from [1]. We advise you to uninstal4l any previous version of MARTE beforehand.

The old MARTE projects, in the extra folder of the main Papyrus repository, will soon be completely removed. The new repository can be cloned from [2].

[1] http://download.eclipse.org/modeling/mdt/papyrus/components/marte/neon/
[2] https://git.eclipse.org/r/papyrus/org.eclipse.papyrus-marte

Aren’t you lucky that I support it?

Filed under: MARTE, News, Papyrus, Uncategorized

by tevirselrahc at October 10, 2016 04:00 AM

Me 2.0.1! Shine bright like a Neon(.1)

by tevirselrahc at October 07, 2016 04:00 AM

You might have missed it, but my Neon.1 version (a.k.a. 2.0.1) is available!

My minions did their usual excellent job in keeping me up to date!

Go get it…I’ll wait…😉

Filed under: News, Papyrus

by tevirselrahc at October 07, 2016 04:00 AM