[galileo] Cool Views to control Plug-ins (IDE)

Part 7 of my Galileo Reviews around Target Platforms. An Overview of this blog series can be found here.

If you look at the Views available under “Plug-in Development” you should see this:

pde_views

If there’s no “Graph Plug-in Dependencies” View, then you should install it from

http://download.eclipse.org/eclipse/pde/incubator/visualization/site

There’s another Bundle available: Neil’s Bundle Monitor. You can install the Bundle Monitor from

http://neilbartlett.name/downloads/bundlemonitor/site.xml

If Neil’s Bundle Monitor is installed, then you have some more Views available:

Views from Neil Bartletts Bundle Monitor

in this Blog we’ll use the Bundles View and the Services View from Bundle Monitor. (HowTo use the Configuration View is another story and will be covered in a blog of my osgi – applications – blogseries)

Additional to these Views you can get informations of Plug-ins from your running IDE from the “About > Installation Details” Page.

Two different kind of Views

Please remember, that there are Plug-ins installed into the IDE and also Plug-ins installed into your Target Platform, so you need two different kind of Views !

ekke in crete

If your IDE is also the active  running Target Platform – then in this case all Views are pointing to the same set of Plug-ins.

Lets structure the Views now depending on the source where the Plug-ins are from:

  • 1. View @ Plug-ins defining your IDE
    • 1.1. Plug-in registry
    • 1.2. About > Installation Details > Plug-ins
    • 1.3. About > Installation Details > Configuration
    • 1.4 Bundle Monitor > Bundles View
    • 1.5 Bundle Monitor > Services View
  • 2. View @ Plug-ins defining a Target Platform
    • 2.1. Plug-ins
    • 2.2. Target Platform State
    • 2.3. Plug-in Dependencies
    • 2.4. Graph Plug-in Dependencies

In this blog entry we’ll look in detail @ Plug-ins defining your IDE (1.1 … 1.5). The next blog entry will cover the Target Platform (2.1 … 2.4)

1. View @ Plug-ins defining your IDE

All these Views are using your Plug-ins (Bundles) installed at the running IDE.

1.1. Plug-in Registry View

The Plug-in Registry View got many enhancements compared with Eclipse 3.4. Lets look at some different kind of bundles and see what kind of informations now are available.

Run-time Libraries: if a Bundle defines Run-time Libraries, they are listet. (example from plug-in com.brosinski.eclipse.regex)

plugin-registry 3rdparty with rt library

Extension Points: If Plug-ins are defining Extension Points, you can inspect them.

plugin-registry e core rt w extension points

Required Bundles: The required Bundles are listed under “Prerequisites“.

@ Location: You also see that there’s always an information about @ Location where you can easy control where the bundle comes from: per ex. eclipse/plugins installation or  dropins directory

plugin-registry e core rt w required bundles

Registered Services: Informations about Services in Plug-in Registry View are new in Eclipse 3.5 and are shown with informations about Service ID, Interface, Properties and (very useful) which bundles are using the Service at the moment.

plugin-registry e core rt w registered services

Used Services: gives you informations which OSGI Services are used by this Plug-in. BTW: It doesn’t matter if a Service is a classic OSGI Service or a Declarative Service (DS) – all are displayed in the Plug-in registry View.

plugin-registry e core rt w used services

Fragment Bundles: Fragments are easy recognized – they have an own icon. The Host is displayed right beside the Version.

plugin-registry fragment

Imported and Exported Packages: also new in Eclipse 3.5 you get detailed informations which Packages are imported and which ones exported. Great for me as I’m a fan of using Imported and Exported Packages where possible.

plugin-registry imported exported packages

Options: Right-clicking on a Plug-in there are some options:

  • Refresh (refreshes informations from running IDE)
  • Copy (copies the symbolic name into clipboard)
  • Go Home / Back / Into (some navigation)
  • Show Active Plug-ins only (Filters the View only displaying Active Plug-ins)
  • Show Disabled Plug-ins only (Filters the View only displaying Disabled Plug-ins)
  • Show Advanced Operations (a toggle to display advanced operations -see below)

plugin-registry options

Options with Advanced Operations: if advanced operations are ON, there will be some more commands available bringing functionality of OSGI Console into Plug-in registry View):

  • Start (Starts the bundle if not already running. BTW: Did you notice the small arrow indicating if a Plug-in is running or not ?)
  • Stop (Stops a running bundle)
  • Diagnose (same as “diag” from OSGI console)
  • Disable (disables a Plug-in)

plugin-registry options w advanced operations

Group By: By default the Plug-in Registry View is groupd by Plug-in, but you can also group by Extension Point and Service.

plugin-registry group by selections

Group By Extension Point: you can easy find the Extension Points avalable and control who’s contributing an extension and what variables are set.

plugin-registry group by extension point

Group By Services: The Interface, who registered the Service, what Properties are set

plugin-registry group by services

Group By Services (DS): In this case its a Declarative Service and you also get Informations about the Component. Also you see that this Service is used by a Bundle, the other Service above was registered, but not used yet.

plugin-registry group by services DS example

From my POV the Plug-in Registry is very helpful to analyse your running IDE and I dont want miss it. Thx to the PDE Team that DS are very well integrated.

1.2. About > Installation Details > Plug-ins

As seen in previous blog there’s also a list of all Plug-ins from running IDE.

1.3. About > Installation Details -> Configuration

The Installation Details offer informations about your Configuration. You should open this and explore the content. Here are only some parts:

The installed Features:

configuration - features

The installed Plug-ins: with exact informations from bundle-lifecycle – you see if a bundle is [ACTIVE] [STARTING] [RESOLVED] etc.

configuration - plug-ins

… and much more.

1.4. Bundle Monitor > Bundles View

If you have installed Neil Bartletts Bundle Monitor, the View OSGI Runtime > Bundles looks like the OSGI Console and gives you an information about the state of your bundles from running IDE. (You can include this view also into your RCP application to display the infos from your Runtime then)

bundle monitor bundles

From this View you can also

bundle monitor bundles options

  • Filter the Bundles
  • Install new Bundle from File
  • Install new Bundle from URL
  • Try to resolve all Bundles

Attention if Installing Bundles ! (see below)

Right-clicking on a Bundle gives you:

bundle monitor bundles right click

  • Properties…
  • Resolve the bundle
  • Start the bundle
  • Stop the bundle
  • Uninstall the bundle
  • Diagnose the bundle

The Properties are displaying informations from the MANIFEST. From your IDE you can easy open the MANIFEST directly, but if inside an RCP app its a good option to explore things.

bundle monitor bundles properties

ATTENTION: If you Install a bundle from Bundle Monitor then

  • the Bundle is correctly installed
  • has State [INSTALLED]
  • will be displayed in Plug-in registry View
  • is NOT visible under About > Installation Details Plug-ins
  • you can NOT Uninstall it from About > Installation Details > Installed Software
  • after Restart the Bundle is “gone” – nothing in Plug-in Registry

Why  are some nice features from Eclipse 3.5 not available ? If you look into Installation Details > Configuration you see the Bundle is recognized as “Bundle in System”, from “Plug-in registry”, but not as “P2 IU – Installable Unit”. The missing P2 is the key: “Bundle Monitor” doesn’t support P2 at the moment.

The nice thing: you can easy test some bundles in your running IDE without persisting the installation – only do a restart and they are gone ! if all works as expected then you can install them after restart the usual P2-aware way.

I like Neil’s Bundles View: its great to see the State of all Bundles – and sometimes its good to have a way to install a bundle without letting P2 knowing about ;-)

1.5. Bundle Monitor > Services View

The Services View from Bundle Monitor gives you a List of all Services:

bundle monitor services

In this case I would prefer to use the Plug-ins registry View grouped by Services. But installed into a RCP app this View can be used to display all Services. (or use it in Eclipse 3.4 Installations without Services listed under Plug-ins Registry View)

The next blog entry of my Galileo reviews will look in detail @ Plug-ins defining a Target Platform.

2 responses

  1. Hi! Many thanks for the great summary.

    Just to be clear about the bundle installation feature, I am using the lowest level OSGi API (that is, BundleContext.installBundle) rather than interacting with P2 because this view is intended to be used in quite general OSGi environments. I’m not sure why P2 ignores bundles installed through the OSGi API, and I’m also curious why the bundles are uninstalled on shutdown. OSGi is after all a persistent, stateful environment; normally when you shut down and restart the framework all the bundles will be still installed and restored to the same state as they were before the shutdown.

  2. Maybe the installed bundles will remain installed if used from a running RCP app. …haven’t tried this yet, but its on the schedule. The IDE installation is completely based on P2 and needs InstallableUnits (IU). P2 works well with old-style-update-sites, but seems not to recognize bundles installed into the running IDE using BundleContext.installBundle.
    I opened a Bugzilla 282344

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: