Using Google Guice within Eclipse plugins - eclipse-plugin

Is there a comprehensive discussion of the approaches of using Google Guice in the context of Eclipse plugins? There is the Peaberry project that targets OSGi containers in general, but this seems not to be used much in production plugin projects, which makes me a bit skeptic to use it (someone correct me if I'm wrong).

The complete Xtext and Xtend wiring is done with Guice. This includes the non-Eclipse relevant parts but also the Eclipse plugins and UI components.

Related

JBoss Drools - BPMN IntelliJ Plugin

I am looking for a plugin to use in IntelliJ to edit visually a .bpmn file. I installed the JBoss jBPM plugin, but it doesn't associate or open up a *.bpmn2 file. Can someone suggest if this supported in IntelliJ or another plugin is available to visually edit a .bpmn2 file?
JBoss JBPM plugin is an old plugin that covers Jboss proprietary jPDL notation but doesn't cover BPMN. There is also ActiBPM plugin ((https://plugins.jetbrains.com/plugin/7429?pr=), but it seems to be dead. Unfortunately there is no better tool for IntelliJ, so you probably remain stuck with your current tools (I'm stuck with Eclipse + Camunda plugin).
Unfortunately, most BPMN 2.0 engines I've seen use slightly different dialects. It means that the file structure is the same. But the details, like executed Java class reference, are provided in a slightly different way, for example by using custom XML namespace that is relevant to the concrete BPMN engine.
I've created a plugin for Flowable BPMN and IntelliJ with navigation-to-code-support:
https://plugins.jetbrains.com/plugin/14318-flowable-bpmn-visualizer
And sources are here:
https://github.com/valb3r/flowable-bpmn-intellij-plugin
What I suggest is community participation in expanding this plugin or forking it to support i.e. JBPMN BPMN 2.0 dialect, as all we need to change is XML Parser, and all other parts of the plugin can remain as is

OSGI aware IDE at development time

I'm starting development using OSGi but when one of my concerns is about the lack of support at development time, meaning that commonly IDEs (started using Intellij IDEA) don't use OSGi for class discovery but classpath search IDE managed (I'm in search for one that uses OSGi instead).
The main concern here is to prevent classpath issues at execution time by suing the same OSGi mechanisms at development time.
Does any IDE work this way ?
update: added link to blog post with my experience with IDEA
OSGi is a runtime technology, therefore there is no such thing as an OSGi mechanism at build time. Also bear in mind that ultimately all Java code must be compiled by a Java compiler, usually javac. The javac compiler does not use package dependencies like Import-Package, it always uses JARs or directories on the classpath.
Having said that, Bndtools uses package filtering at build time, based on the exported and private packages of the dependencies. This is a special feature of Eclipse and it does not work when you compile outside of the IDE, e.g. with Ant or Maven. However it may still be useful because if you try to use a non-exported package from another bundle you will get a problem marker with a red X in the Eclipse IDE.

Mocking framework for osgi/eclipse applications?

I am looking for mocking framework to use in my osgi/eclipse test fragments. I have looked at:
http://www.jmock.org/download.html
but since its not osgi I need to convert it manually. I have tried to google for some mocking frameworks that works with osgi out of the box but have not been able to find any, does osgi developers not use mocking?
One solution will be to create mock objects of OSGi objects (like BundleContext and ServiceReference). You can use any mocking framework for this and of course you don't have to run the test in an OSGi container. This will be OK for simple scenarios.
If you want to test inside a container, you have the following options:
Pax-Exam
Spring DM Testing facilities
Actually Mockito works quite good with OSGI applications, since it has OSGI manifest. You can simply add it to your target platform from the latest orbit repository. I managed to make Powermock also working for Eclipse Plugins and it is available as well as update site at https://code.google.com/p/powermock-osgi/

can my eclipse rcp and plugins be used by other parties?

If I develop my application using eclipse RCP and my own eclipse plugins, can other people copy and paste my plugins and used in other application?
thanks
The short answer is "yes". RCP applications rely on reusable plugins.
The correct answer is "it depends". It depends on what extensions and extension points you define. Basically, plugins need to "talk" to each other in order to work with each other. When you create a plugin, you define who can talk to it and how.
I recommend the following lecture: http://www.vogella.de/articles/EclipseExtensionPoint/article.html

Use maven2 for build-automation and continuous integration of an eclipse rcp project?

My company starts a new project next week. We have planned to develop the application with eclipse rcp. The build process should be fully automated, so we're prepared to set up a continuous integration environment (e.g. Continuum). For the build-automation-part I intended to use maven2, because I want use its dependency management.
I have used maven2 for a small old-style java project, but have never set up maven for using it with eclipse rcp.
What's the best way to do this? Basic concepts? Common traps? Are any tutorials or book's around there? The tutorials and informations I found, seemed outdated or incomplete.
PS: The main project will be divided into sub-project's (plug-in's). But I think this is typical for eclipse rcp projects.
You should take a look at Tycho:
the-future-of-maven-osgi-join-the-tycho-users-mailing-list
the-next-generation-of-build-tools-for-eclipse-plugins-and-rcp-applications
Like most Maven questions, this is solved by a link to a plug-in:
"pde-maven-plugin"
Other advice:
use the assembly plug-in to build
the update site
consider using hudson rather than
Continuum
I've been battling maven2/Eclipse RCP integration for some time. The key is not so much getting your setup right: You can get it to work - eventually - by reverse-engineering Eclipse's build process in maven.
In my experience, the hard part is keeping everything up to date. Every time Eclipse revs their libs, you'll find yourself re-writing a bunch of pom files for that newest RCP widget or SWT lib. Naturally, CI helps with this somewhat. The problem is that Eclipse and maven are very particular about the way they do the business of building, and their approaches are quite different. To make matters worse, PDE dev (and Eclipse dev, more generally) is powered by a lot of wizard code, which is sometimes quite opaque as to what's happening behind the scenes.
The question you really need to ask yourself is if it's worth the effort. In my particular case, I believe it has been. (CI is too good to live without.) But the trade-off is that you may find yourself being the "build guy", which can take valuable time away from actual development, which is probably what you enjoy most.
I've got recently the same problem : build eclipse RCP application through continuous integration.
I haven't applied them yet but I've found some interesting articles :
Here's the documentation for Tycho
Building Eclipse Plugins with Maven 2 on eclipse.org
Build Eclipse RCP products using Maven 2 - how hard can it be? from Immo Hüneke's blog
Here's an article about PDE build automation
Here's a shell script to automate JUnit test launch