Subversion + Certificates + Java > 1.6u17

I’ve blogged a long time ago about my problems with Subversion + Certificates and Java with a version higher than u17.

Today the author of SVNKit added a comment to the ticket talking about the problem. The solution is so simple once you know about the following resource. All you need to do is to open your eclipse.ini and add the following entry:

which makes my eclipse.ini on OS-X look like this:


On OS-X you need to open your using the Context-Menu “Show Package Content”.

QxWT: Find out API changes between Qooxdoo-Releases

While trying to update my qooxdoo wrapper to 1.3. I had the problem that I could find out easily which classes, methods and properties have been added/remove between e.g. 1.2 and 1.3 so that I could adjust my GWT-Wrappers.

This was until Andreas Ecker from the qooxdoo team pointed me to an interesting Meta-Data information the generator spits out for the API-Viewer. It took me about an hour to write a small Java-Programm which created a diff of those .json-Files.

Below you see an example output of a diff between Qooxdoo 1.2 and 1.3.

You can download the small utility from here. The usage is quite simply as long as you have Java installed on your system.

Usage: java -jar qxapidiff.jar -v0 $APIVIEWER_DIR_VERSION_0 -v1 $APIVIEWER_DIR_VERSION_1 [-a 0|1|2]
	* -v0 (mandatory) ... Path to old versions API-Viewers script directory e.g. /home/tom/qx-1.0-sdk/framework/api/script
	* -v1 (mandatory) ... Path to new versions API-Viewers script directory e.g. /home/tom/qx-1.3-sdk/framework/api/script
	* -a ................ Minum-Access-Level for Method diff: 0 = private, 1 = protected, 2 = public
	* -h ................ Prints this message

if you think you can improve it, you are free to do so (e.g. to add constructors and method-arguments to the diff calculation) because you can access the sources from my public SVN-Repository.

I think in future I can use this informations to e.g. write create wrappers or at least their stubs automagically :-) but until then I need to wrap them by hand.

Enhanced RCP: Usage of TitleAreDialogSupport

Eclipse Databinding comes with many utility classes and one of them is TitleAreaDialogSupport which can be used to show validation errors when running in an TitleAreaDialog.

But the default implementation has some missing features:

  • Once a validation error is shown the default message is not coming back when correcting them
  • The Ok-Button does not get disabled in case of validation errors

So we have to enhance it a bit by subclassing:

TitleAreaDialogSupport.create(this, dbc).setValidationMessageProvider(new ValidationMessageProvider() {
  public String getMessage(ValidationStatusProvider statusProvider) {
    if (statusProvider == null) {
      return "Neuanlage/Bearbeitung einer Abteilung";
    return super.getMessage(statusProvider);
  public int getMessageType(ValidationStatusProvider statusProvider) {
    int type = super.getMessageType(statusProvider);
    if( getButton(IDialogConstants.OK_ID) != null ) {
      getButton(IDialogConstants.OK_ID).setEnabled(type != IMessageProvider.ERROR);
    return type;

There’s already a feature request for this open but it is not fixed yet.

Improvement Properties-Editor

I’ve lately worked a lot with property files and what always bothered me was that there was no Outline-View shown for it like it is e.g. for the Java-Files.

Typically properties-File e.g. for translations are structured in a hierarchical way e.g. my files look like this:

ListView_FirstName=First Name
ListView_LastName=Last Name


Which means we could group the items in the outline a bit by using the _ as a group indicator which makes the editor and outline look like this:

I’ve uploaded the Eclipse Plugin to EclipseLabs and you can install it by pointing your Eclipse Plug-in Installer to

Enhanced RCP: How views can communicate

I’ve often seen the question in the eclipse newsgroups when it comes to view communication. People often face the problem that their views have to communicate with each other informing about state changes (selection changes are published best through ISelectionService).
It looks like many people are not familiar with the OSGi-EventAdmin-Service which is a generic Event-System using the publish and subscribe pattern and it can be used really easy in your RCP-Applications.

1. Setup

Add to your MANIFEST.MF and make sure org.eclipse.equinox.event is part of your Launch-Config and Product-Definition.

2. Sending events

public class SenderView extends ViewPart {
  public static final String ID = "viewcommunication.views.SenderView";
  private Button b;
  public void createPartControl(Composite parent) {
    parent.setLayout(new GridLayout());
    b = new Button(parent, SWT.PUSH);
    b.setText("Send Event");
    b.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        BundleContext ctx = FrameworkUtil.getBundle(SenderView.class).getBundleContext();
        ServiceReference<EventAdmin> ref = ctx.getServiceReference(EventAdmin.class);
        EventAdmin eventAdmin = ctx.getService(ref);
        Map<String,Object> properties = new HashMap<String, Object>();
        properties.put("DATA", new Date());
        Event event = new Event("viewcommunication/syncEvent", properties);
        event = new Event("viewcommunication/asyncEvent", properties);

  public void setFocus() {

3. Receiving Events

public class ReceiverView extends ViewPart {
  private TableViewer viewer;
  public void createPartControl(final Composite parent) {
    parent.setLayout(new FillLayout());
    viewer = new TableViewer(parent);
    viewer.setLabelProvider(new ColumnLabelProvider() {
      public String getText(Object element) {
        return DateFormat.getDateTimeInstance().format(element);
    BundleContext ctx = FrameworkUtil.getBundle(ReceiverView.class).getBundleContext();
    EventHandler handler = new EventHandler() {
      public void handleEvent(final Event event) {
        if( parent.getDisplay().getThread() == Thread.currentThread() ) {
        } else {
          parent.getDisplay().syncExec(new Runnable() {
            public void run() {
    Dictionary<String,String> properties = new Hashtable<String, String>();
    properties.put(EventConstants.EVENT_TOPIC, "viewcommunication/*");
    ctx.registerService(EventHandler.class, handler, properties);

  public void setFocus() {

Not too complex but is it possible in fewer lines or in other words without the many lines of glue code? Then stay tuned for a follow blog entry on how e4 provides easy access to the EventAdmin-Service or visit my Eclipse 2011 talk “Singlesourcing for Eclipse 4.x and Eclipse 3.x” where you’ll learn to apply the Eclipse 4.0 style to your 3.x applications.

2010 in review

At the end of the year it’s always good to look back on what has happened the whole year and sometimes you get suprised because your current impression on things you did doesn’t really match with the one you really did when digging into code-repositories, mailing lists, bugzillas and such.
My Eureka moment was when I looked on the dash stats which contraticted my personal feeling about my e4 involvement. My personal expression was that I’ve not contributed too much to e4 because I was quite busy doing company work after 4.0 was released.
But looking at dash I remember that I’ve worked in many areas of e4 this year:

First off all naturally the dash info is a bit missleading – I have not contributed ~30% of the e4 project. The numbers are so high because of 2 facts:

  • Modified LoC: because i’ve been in charge of most model changes where 95% of the code is generated by EMF
  • Number of Commits: I’ve been working on a very isolated branch of e4 (the model tooling) and I’m used to commit very often and because I didn’t had to collaborate and disturbe others with my changes I followed this development scheme

My blog stats

The stats helper monkeys at mulled over how this blog did in 2010, and here’s a high level summary of its overall blog health:

Healthy blog!

The Blog-Health-o-Meter™ reads Wow.

Crunchy numbers

Featured image

Madison Square Garden can seat 20,000 people for a concert. This blog was viewed about 68,000 times in 2010. If it were a concert at Madison Square Garden, it would have performed about 3 times.

In 2010, there were 49 new posts, growing the total archive of this blog to 124 posts. There were 148 pictures uploaded, taking up a total of 73mb. That’s about 3 pictures per week.

The busiest day of the year was July 29th with 728 views. The most popular post that day was Eclipse 4.0 and tutorial on writing e4-RCP-application released.

Where did they come from?

The top referring sites in 2010 were,,,, and

Some visitors came searching, mostly for qxwt, eclipse 4.0, eclipse e4 wrting application, emf databinding, and e4 workbenchmodel editor.

Attractions in 2010

These are the posts and pages that got the most views in 2010.


Eclipse 4.0 and tutorial on writing e4-RCP-application released July 2010


Galileo: EMF-Databinding – Part 3 June 2009


Galileo: EMF-Databinding – Part 2 June 2009


Galileo: EMF-Databinding – Part 1 June 2009


Galileo: EMF-Databinding – Part 4 June 2009