Cannot find extension point

I just fixed some weird behaviour with one of my plug-ins that depend from another one since it uses some extension point. The message was that the extension point in the plugin could not be found. After some search on the net I stumbled upon the Eclipse Wiki Book. All the tips mentioned there did not help. What I noticed though was a bunch of access rules. Among them the following: forbidden */**. So I compared the Manifest file with other plug-ins there I noticed the one with the problem had an entry „Eclipse-Buddy: global“. Removing this line got me rid of the access rules and my problem.
Since all other plug-ins are based on 3.2 and only this on 3.4 I figure that might be the problem.

In Three steps to your Java Emitter template

Creating a Java Emitter Template (JET) is no easy feat, but if you have the right infrastructure set up it’s not that difficult.
This article is based on the Java Code Generator plug-in for Eclipse.
„In Three steps to your Java Emitter template“ weiterlesen

How to debug a Java Emitter template

This is a tricky task. The generation of a piece of code – let’s assume that it is a Java class – is based on a java emitter template that defines with literal constants and JSP like syntax the code of the resulting class. To create a source file a Java generator class is generated from the template. This generator class produces dour output Java source file.
„How to debug a Java Emitter template“ weiterlesen

Define access restriction on plugin

In Eclipse it seems to be common practice to define interfaces and hide a concrete implementation in a package under *.internal.*. The actual hiding though is not result of the word „internal“ in the package name but must be specified in the MANIFEST.MF with the exported packages.
There are also further possibilities that can be engaged. For example you can define a package a friend to another package(es) so that only these can access the classes within.

Manifest.MF
Bundle-SymbolicName: example
Export-Package:
com.example.public, // Anyone can access com.example.public if imported
com.example.test;x-internal:=true, // This is marked as internal, but can be used
com.example.impl;x-friends:=com.example.other, // Only com.example.other should access it

This is not part of the OSGi Standard but the Equinox reference implementation.
For further reference see the Article at EclipseZone.