Plugin-Dependencies are not considered with the incrementel builder

  • schmelly
Posted: Sat, 06/12/2010 - 02:31

Hello
After switching to 1.3.2N100 I noticed that my Plugin-Dependencies are not considered during compilation of JavaFX files anymore. I created a small patch which works for me and hope it to be useful.


--- d:/Temp/JFXProject.java-revBASE.svn000.tmp.java Sa Jun 12 12:02:23 2010
+++ W:/JavaFXPlugin/ide/plugins/com.exadel.javafx.ide.core/src/com/exadel/javafx/ide/internal/core/JFXProject.java Sa Jun 12 11:56:54 2010
@@ -631,6 +631,23 @@
IResource resource = ResourcesPlugin.getWorkspace().getRoot().getFile(entry.getPath());
result.add(resource.getLocation());
}
+
+ if(entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getContentKind() == IPackageFragmentRoot.K_SOURCE) {
+
+ IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project);
+
+ if(container.getPath().lastSegment().equals("org.eclipse.pde.core.requiredPlugins"))
+ {
+ IClasspathEntry[] containerEntries = container.getClasspathEntries();
+
+ for (IClasspathEntry containerEntry : containerEntries) {
+
+ if(containerEntry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+ result.add(containerEntry.getPath());
+ }
+ }
+ }
+ }
}

return result;
@@ -651,6 +668,36 @@
result.add(JavaCore.create(project));
}
}
+
+ if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER
+ && entry.getContentKind() == IPackageFragmentRoot.K_SOURCE) {
+
+ IClasspathContainer container = JavaCore.getClasspathContainer(
+ entry.getPath(), project);
+
+ if (container.getPath().lastSegment()
+ .equals("org.eclipse.pde.core.requiredPlugins")) {
+
+ IClasspathEntry[] containerEntries = container
+ .getClasspathEntries();
+
+ for (IClasspathEntry containerEntry : containerEntries) {
+
+ if (containerEntry.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
+ IProject project = getProject()
+ .getWorkspace()
+ .getRoot()
+ .getProject(
+ containerEntry.getPath()
+ .lastSegment());
+ if (!((ClasspathEntry) entry).isOptional()
+ && project.hasNature(JavaCore.NATURE_ID)) {
+ result.add(JavaCore.create(project));
+ }
+ }
+ }
+ }
+ }
}
return result;
}

What's not so nice about the patch is that i explicitely check for pde plugin dependencies:


if(container.getPath().lastSegment().equals("org.eclipse.pde.core.requiredPlugins"))
{...

Maybe there is a better way to handle this.

best regards,
David

Thank you for help. I will

  • abratukhin
  • 02/18/10
  • Sun, 06/13/2010 - 13:08

Thank you for help. I will apply patch as soon as possible.

I implemented resolving of

  • abratukhin
  • 02/18/10
  • Mon, 06/21/2010 - 19:53

I implemented resolving of classpath container entries for JavaFX builder. You can get the latest changes from http://download.exadel.org/javafx_plugin/updates/stable/

Thanks a lot :-)

  • schmelly
  • 06/12/10
  • Tue, 06/22/2010 - 23:45

Thanks a lot :-)