Page 1 of 1

Eclipse plugin context menu modifications

Posted: Thu Feb 02, 2006 11:57 pm
by bruynb
I have an Eclipse (3.1.2) plug-in installed (Abator 0.5.1) that expects there to be an insertion point on the popup menu called "additions" (which I'm told is an Eclipse convention). When my oXygen 7.0.0.plugin is enabled, my Abator plugin is seemingly unable to put it's options on the context menu. When I disable it, everything goes back to normal.

What, if anything, has oXygen done to alter the popup menu for XML files? Does the "additions" insertion point still exist? Any other explanation for this behavior? Is this the desired method/forum for bug reports?

I doubt that it's related, but it might be worthwhile to note that I consistently find the following in my error log (following a lengthy delay whenever selecting / opening some xml file from my project):

!ENTRY org.eclipse.osgi 2006-02-02 13:58:16.171
!MESSAGE While loading class "ro.sync.exml.D.I", thread "Worker-1" timed out waiting (5000ms) for thread "main" to finish starting bundle "com.oxygenxml.editor". To avoid deadlock, thread "Worker-1" is proceeding but "ro.sync.exml.D.I" may not be fully initialized.
!STACK 0
java.lang.Exception: Generated exception.
at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:108)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:337)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:389)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:350)
at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:78)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at ro.sync.exml.D.E.E(Unknown Source)
at ro.sync.exml.D.E.B(Unknown Source)
at com.oxygenxml.editor.license.B.B(Unknown Source)
at com.oxygenxml.editor.license.C$1.run(Unknown Source)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)

!ENTRY org.eclipse.osgi 2006-02-02 13:58:21.312
!MESSAGE While loading class "ro.sync.D.K", thread "Worker-1" timed out waiting (5000ms) for thread "main" to finish starting bundle "com.oxygenxml.editor". To avoid deadlock, thread "Worker-1" is proceeding but "ro.sync.D.K" may not be fully initialized.
!STACK 0
java.lang.Exception: Generated exception.
at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:108)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:337)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:389)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:350)
at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:78)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at ro.sync.exml.D.E.C(Unknown Source)
at ro.sync.exml.D.E.B(Unknown Source)
at com.oxygenxml.editor.license.B.B(Unknown Source)
at com.oxygenxml.editor.license.C$1.run(Unknown Source)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)

!ENTRY org.eclipse.osgi 2006-02-02 13:58:26.453
!MESSAGE While loading class "ro.sync.D.D", thread "Worker-1" timed out waiting (5000ms) for thread "main" to finish starting bundle "com.oxygenxml.editor". To avoid deadlock, thread "Worker-1" is proceeding but "ro.sync.D.D" may not be fully initialized.
!STACK 0
java.lang.Exception: Generated exception.
at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:108)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:337)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:389)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:350)
at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:78)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at ro.sync.exml.D.E.C(Unknown Source)
at ro.sync.exml.D.E.B(Unknown Source)
at com.oxygenxml.editor.license.B.B(Unknown Source)
at com.oxygenxml.editor.license.C$1.run(Unknown Source)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)

!ENTRY org.eclipse.osgi 2006-02-02 13:58:31.593
!MESSAGE While loading class "ro.sync.D.G", thread "Worker-1" timed out waiting (5000ms) for thread "main" to finish starting bundle "com.oxygenxml.editor". To avoid deadlock, thread "Worker-1" is proceeding but "ro.sync.D.G" may not be fully initialized.
!STACK 0
java.lang.Exception: Generated exception.
at org.eclipse.core.runtime.adaptor.EclipseClassLoader.findLocalClass(EclipseClassLoader.java:108)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:337)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:389)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:350)
at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java:78)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at ro.sync.D.K.A(Unknown Source)
at ro.sync.exml.D.E.A(Unknown Source)
at ro.sync.exml.D.E.C(Unknown Source)
at ro.sync.exml.D.E.B(Unknown Source)
at com.oxygenxml.editor.license.B.B(Unknown Source)
at com.oxygenxml.editor.license.C$1.run(Unknown Source)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)

Posted: Mon Feb 06, 2006 12:51 pm
by Mircea
Hi,

After studying the plugin.xml file from the UI plugin of the "abator" bundle the problem seems to be related with their mode of associating the context menu actions.

So, on the "org.eclipse.ui.popupMenus" extension point you will see that the <visibility> element claims that the current object must have a certain conten type, i.e. the "org.apache.ibatis.abator.ui.abatorConfigurationFileByElement" content type.
But oXygen also has its own content type for xml documents with encoding and BOM handling which seems to be more general than the one that "abator" has, and Eclipse it taking the oXygen's one into account.

The solution for you is to edit by hand the "plugin.xml" file from the "org.apache.ibatis.abator.ui_0.5.1" directory and comment the <visibility> element, and then modify <action> as follows:

<action
enablesFor="1"
label="Generate iBATIS Artifacts"
icon="icons/iBatisLogo.gif"
class="org.apache.ibatis.abator.ui.actions.RunAbatorAction"
menubarPath="additions"
id="org.apache.ibatis.abator.ui.actions.RunAbatorAction">
<selection class="org.eclipse.core.resources.IFile" name="abatorConfig.xml"/>
</action>

The exceptions from the Error Log are now resolved on the current development stream and will be available in the next (7.1 ) release. In any case those exceptions are not critical. Eclipse is requiering that a plugin should be loaded in 5 seconds condition that is fulfilled now.

Best regards,
Mircea.

Posted: Mon Feb 06, 2006 8:37 pm
by bruynb
Thanks, Mircea.

I tried the manual config with no change. Maybe some procedural thing I'm missing? Is the selection/name attribute perhaps a path that needs to be changed? Other ideas?


Bill

Posted: Tue Feb 07, 2006 10:04 am
by Mircea
Hi Bill,

Eclipse is caching the plugins configurations, so the "Abator" plugin ID being unchaged, it is very probable that it did not read the new information from the plugin.xml files again, but it uses the one already cached.

The first option is to start the Eclipse with the -clean parameter on the command line. If you work on Win32, this can be done by editing the Eclipse shortcut's properties. The command line should be like:

D:\eclipse\eclipse.exe -clean

If this does not work either, try to manually remove the content of the "configuration" directory, excepting the "config.ini" file.

This should help.
Best regards,
Mircea

Posted: Tue Feb 07, 2006 5:13 pm
by bruynb
That did the trick. Thanks!