diff options
author | Tom Schindl | 2013-05-08 22:05:26 +0000 |
---|---|---|
committer | Tom Schindl | 2013-05-08 22:05:26 +0000 |
commit | 5be5cb1b2ab19af828fc9a69a6ad3e229f7dc214 (patch) | |
tree | 937301dc480f5f0be49ad6aa532ac8c0651a8ddd | |
parent | d2513a4500eeb5e3418ddf40bc92fc506b2063cf (diff) | |
download | org.eclipse.efxclipse-5be5cb1b2ab19af828fc9a69a6ad3e229f7dc214.tar.gz org.eclipse.efxclipse-5be5cb1b2ab19af828fc9a69a6ad3e229f7dc214.tar.xz org.eclipse.efxclipse-5be5cb1b2ab19af828fc9a69a6ad3e229f7dc214.zip |
initial check in
29 files changed, 958 insertions, 0 deletions
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.classpath b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.classpath new file mode 100755 index 000000000..b1dabee38 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.gitignore b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.gitignore new file mode 100755 index 000000000..4dc009173 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.gitignore @@ -0,0 +1,2 @@ +/target +/bin diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.project b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.project new file mode 100755 index 000000000..f83f8fd35 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.ide.pde.adapter</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.resources.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.resources.prefs new file mode 100755 index 000000000..4824b8026 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.runtime.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.runtime.prefs new file mode 100755 index 000000000..deae05a97 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\r\n diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.jdt.core.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 000000000..f42de363a --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/META-INF/MANIFEST.MF b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/META-INF/MANIFEST.MF new file mode 100755 index 000000000..a0bb4f29c --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/META-INF/MANIFEST.MF @@ -0,0 +1,11 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: org.eclipse.fx.ide.pde.adapter +Bundle-Version: 0.8.1.qualifier +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.jdt.core;bundle-version="[3.7.0,3.9.0)" +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: org.eclipse.pde.core +Bundle-Vendor: %Bundle-Vendor diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/OSGI-INF/l10n/bundle.properties b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/OSGI-INF/l10n/bundle.properties new file mode 100755 index 000000000..02d9d97d9 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,3 @@ +#Properties file for org.eclipse.fx.ide.pde.adapter
+Bundle-Vendor = BestSolution.at
+Bundle-Name = Adaptors for PDE
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/about.html b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/about.html new file mode 100755 index 000000000..ecd1378e9 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 2, 2006</p> +<h3>License</h3> + +<p>The BestSolution.at makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the BestSolution.at, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/build.properties b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/build.properties new file mode 100755 index 000000000..bad151d65 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/build.properties @@ -0,0 +1,6 @@ +source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ OSGI-INF/
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/pom.xml b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/pom.xml new file mode 100755 index 000000000..061b98663 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/pom.xml @@ -0,0 +1,34 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>e(fx)clipse - IDE - PDE Classpath Enhancer</name> + <groupId>org.eclipse.fx.ide</groupId> + <artifactId>org.eclipse.fx.ide.pde.adapter</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>org.eclipse.fx.ide</groupId> + <artifactId>releng</artifactId> + <relativePath>../../../releng/org.eclipse.fx.ide.releng/pom.xml</relativePath> + <version>0.8.1-SNAPSHOT</version> + </parent> + + <build> + <resources> + <!-- to ensure that the feature lookup of the ui test works --> + <resource> + <directory>.</directory> + <includes> + <include>META-INF/</include> + </includes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-source-plugin</artifactId> + </plugin> + </plugins> + </build> + +</project>
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.adapter/src/org/eclipse/pde/core/IClasspathContributor.java b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/src/org/eclipse/pde/core/IClasspathContributor.java new file mode 100755 index 000000000..3ad08a834 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.adapter/src/org/eclipse/pde/core/IClasspathContributor.java @@ -0,0 +1,58 @@ +/*******************************************************************************
+ * Copyright (c) 2013 BestSolution.at and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BestSolution.at - initial API and implementation
+ * IBM Corporation - ongoing enhancements
+ *******************************************************************************/
+package org.eclipse.pde.core;
+
+import java.util.List;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.osgi.service.resolver.BundleDescription;
+
+/**
+ * Implementors of this interface can contribute additional {@link IClasspathEntry}
+ * to a plug-in project as the classpath is computed. The contributor is consulted
+ * when the initial classpath for a plug-in project is calculated as well as whenever
+ * a new bundle dependency is created.
+ * <p>
+ * A classpath contributor is declared as an extension (<code>org.eclipse.pde.core.pluginClasspathContributors</code>).
+ * </p>
+ * <p>
+ * The added classpath entries are only stored as long as the project classpath is and will
+ * not be considered during plug-in or feature export.
+ * </p>
+ *
+ * @since 3.9
+ */
+public interface IClasspathContributor {
+
+ /**
+ * Get any additional classpath entries to add to a project when its classpath is
+ * first computed. The provided {@link BundleDescription} describes the plug-in
+ * project that the classpath is being computed for. Additional PDE model information
+ * can be obtained using {@link PluginRegistry#findModel(BundleDescription)}.
+ *
+ * @param project the bundle descriptor for the plug-in project having its classpath computed
+ * @return additional classpath entries to add to the project, possibly empty, must not be <code>null</code>
+ */
+ public List<IClasspathEntry> getInitialEntries(BundleDescription project);
+
+ /**
+ * Get any additional classpath entries to add to a project when a new bundle
+ * is being added to the project classpath as a dependency. The {@link BundleDescription}
+ * is provided for both the plug-in that the classpath is being calculated for and
+ * the dependency being added. The dependency may be a project in the workspace or an
+ * external bundle from the target platform.
+ *
+ * @param project the bundle descriptor for the plug-in project having its classpath computed
+ * @param addedDependency the bundle descriptor for the bundle being added to the classpath as a dependency
+ * @return additional classpath entries to add to the project, possibly empty, must not be <code>null</code>
+ */
+ public List<IClasspathEntry> getEntriesForDependency(BundleDescription project, BundleDescription addedDependency);
+}
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.classpath b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.classpath new file mode 100755 index 000000000..b1dabee38 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.gitignore b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.gitignore new file mode 100755 index 000000000..4dc009173 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.gitignore @@ -0,0 +1,2 @@ +/target +/bin diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project new file mode 100755 index 000000000..6c989117a --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.fx.ide.pde.fragment</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project.swp b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project.swp Binary files differnew file mode 100644 index 000000000..5d253cbb1 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.project.swp diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.resources.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.resources.prefs new file mode 100755 index 000000000..4824b8026 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.runtime.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.runtime.prefs new file mode 100755 index 000000000..deae05a97 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\r\n diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.jdt.core.prefs b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 000000000..f42de363a --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/IP-TODO.txt b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/IP-TODO.txt new file mode 100755 index 000000000..8072add0d --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/IP-TODO.txt @@ -0,0 +1 @@ +Class is copied from PDE 3.9
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/META-INF/MANIFEST.MF b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/META-INF/MANIFEST.MF new file mode 100755 index 000000000..316dd8b32 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: org.eclipse.fx.ide.pde.fragment;singleton:=true +Bundle-Version: 0.8.1.qualifier +Fragment-Host: org.eclipse.pde.core;bundle-version="[3.7.0,3.9.0)" +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Equinox-BundleType: fxpatch.fragment +Require-Bundle: org.eclipse.fx.ide.jdt.core;bundle-version="0.8.1", + org.eclipse.fx.ide.pde.adapter;bundle-version="0.8.1" +Bundle-Vendor: %Bundle-Vendor +Export-Package: org.eclipse.pde.core diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/OSGI-INF/l10n/bundle.properties b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/OSGI-INF/l10n/bundle.properties new file mode 100755 index 000000000..15d7826d0 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,3 @@ +#Properties file for org.eclipse.fx.ide.pde.fragment
+Bundle-Vendor = BestSolution.at
+Bundle-Name = Fragment which patches PDE
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/about.html b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/about.html new file mode 100755 index 000000000..ecd1378e9 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 2, 2006</p> +<h3>License</h3> + +<p>The BestSolution.at makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the BestSolution.at, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p> + +</body> +</html>
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/build.properties b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/build.properties new file mode 100755 index 000000000..ec79a6ae8 --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/build.properties @@ -0,0 +1,7 @@ +source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ OSGI-INF/,\
+ fragment.xml
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/fragment.xml b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/fragment.xml new file mode 100755 index 000000000..f4374ca4b --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/fragment.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+ <extension-point id="pluginClasspathContributors" name="pluginClasspathContributors" schema="schema/pluginClasspathContributors.exsd"/>
+
+</fragment>
diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/pom.xml b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/pom.xml new file mode 100755 index 000000000..060f703cc --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/pom.xml @@ -0,0 +1,34 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <name>e(fx)clipse - IDE - PDE Patch Fragment</name> + <groupId>org.eclipse.fx.ide</groupId> + <artifactId>org.eclipse.fx.ide.pde.fragment</artifactId> + <packaging>eclipse-plugin</packaging> + + <parent> + <groupId>org.eclipse.fx.ide</groupId> + <artifactId>releng</artifactId> + <relativePath>../../../releng/org.eclipse.fx.ide.releng/pom.xml</relativePath> + <version>0.8.1-SNAPSHOT</version> + </parent> + + <build> + <resources> + <!-- to ensure that the feature lookup of the ui test works --> + <resource> + <directory>.</directory> + <includes> + <include>META-INF/</include> + </includes> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.eclipse.tycho</groupId> + <artifactId>tycho-source-plugin</artifactId> + </plugin> + </plugins> + </build> + +</project>
\ No newline at end of file diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/schema/pluginClasspathContributors.exsd b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/schema/pluginClasspathContributors.exsd new file mode 100755 index 000000000..11b06d70c --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/schema/pluginClasspathContributors.exsd @@ -0,0 +1,119 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- Schema file written by PDE --> +<schema targetNamespace="org.eclipse.pde.core" xmlns="http://www.w3.org/2001/XMLSchema"> +<annotation> + <appinfo> + <meta.schema plugin="org.eclipse.pde.core" id="pluginClasspathContributors" name="Plug-in Classpath Contributors"/> + </appinfo> + <documentation> + This extension point provides a mechanism to contribute additional classpath entries to a plug-in project when the PDE classpath is computered. Each plug-in classpath contributor is consulted for additional entries when the initial classpath is calculated as well as whenever a new bundle dependency is added to the project. + +The additional classpath entries are only stored as long as the project classpath is. The additional entries will not be considered during plug-in or feature export. + </documentation> + </annotation> + + <element name="extension"> + <annotation> + <appinfo> + <meta.element /> + </appinfo> + </annotation> + <complexType> + <sequence minOccurs="1" maxOccurs="unbounded"> + <element ref="contributor"/> + </sequence> + <attribute name="point" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + + </documentation> + <appinfo> + <meta.attribute translatable="true"/> + </appinfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="contributor"> + <complexType> + <attribute name="class" type="string" use="required"> + <annotation> + <documentation> + The class that implements the plug-in classpath contributor. The class must implement <code>IClasspathContributor</code> + </documentation> + <appinfo> + <meta.attribute kind="java" basedOn=":org.eclipse.pde.core.IClasspathContributor"/> + </appinfo> + </annotation> + </attribute> + </complexType> + </element> + + <annotation> + <appinfo> + <meta.section type="since"/> + </appinfo> + <documentation> + 3.9 + </documentation> + </annotation> + + <annotation> + <appinfo> + <meta.section type="examples"/> + </appinfo> + <documentation> + The following is an example of the classpath contributor + +<p> +<pre> + <extension + point="org.eclipse.pde.core.pluginClasspathContributors"> + <contribtor + class="at.bestsolution.efxclipse.tooling.pde.core.JavaFXClassPathExtender"> + </contribtor> + </extension> +</pre> +</p> + </documentation> + </annotation> + + <annotation> + <appinfo> + <meta.section type="apiinfo"/> + </appinfo> + <documentation> + Each contributor must provide a class that implements <code>org.eclipse.pde.core.IClasspathContributor</code> + </documentation> + </annotation> + + + <annotation> + <appinfo> + <meta.section type="copyright"/> + </appinfo> + <documentation> + Copyright (c) 2013 BestSolution.at and others.&lt;br&gt; +All rights reserved. This program and the accompanying materials +are made available under the terms of the Eclipse Public License v1.0 +which accompanies this distribution, and is available at +&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt; + </documentation> + </annotation> + +</schema> diff --git a/bundles/tooling/org.eclipse.fx.ide.pde.fragment/src/org/eclipse/pde/internal/core/RequiredPluginsClasspathContainer.java b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/src/org/eclipse/pde/internal/core/RequiredPluginsClasspathContainer.java new file mode 100755 index 000000000..3e9e01f8a --- /dev/null +++ b/bundles/tooling/org.eclipse.fx.ide.pde.fragment/src/org/eclipse/pde/internal/core/RequiredPluginsClasspathContainer.java @@ -0,0 +1,510 @@ +/******************************************************************************* + * Copyright (c) 2000, 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.pde.internal.core; + +import java.io.File; +import java.util.*; +import org.eclipse.core.resources.*; +import org.eclipse.core.runtime.*; +import org.eclipse.jdt.core.*; +import org.eclipse.osgi.service.resolver.*; +import org.eclipse.pde.core.IClasspathContributor; +import org.eclipse.pde.core.build.IBuild; +import org.eclipse.pde.core.build.IBuildEntry; +import org.eclipse.pde.core.plugin.IPluginModelBase; +import org.eclipse.pde.core.plugin.PluginRegistry; +import org.eclipse.pde.internal.build.IBuildPropertiesConstants; +import org.eclipse.pde.internal.core.ibundle.IBundlePluginModelBase; + +public class RequiredPluginsClasspathContainer extends PDEClasspathContainer implements IClasspathContainer { + + private IPluginModelBase fModel; + private IBuild fBuild; + + private static boolean DEBUG = false; + + private IClasspathEntry[] fEntries = null; + + /** + * Cached list of {@link IClasspathContributor} from plug-in extensions + * @see #getClasspathContributors() + */ + private List<IClasspathContributor> fClasspathContributors = null; + + static { + DEBUG = PDECore.getDefault().isDebugging() && "true".equals(Platform.getDebugOption("org.eclipse.pde.core/classpath")); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /** + * Constructor for RequiredPluginsClasspathContainer. + */ + public RequiredPluginsClasspathContainer(IPluginModelBase model) { + this(model, null); + } + + public RequiredPluginsClasspathContainer(IPluginModelBase model, IBuild build) { + fModel = model; + fBuild = build; + System.err.println("LAUNCHING PATCHED CLASSPATH CONTAINER"); + } + + /* + * (non-Javadoc) + * @see org.eclipse.jdt.core.IClasspathContainer#getKind() + */ + public int getKind() { + return K_APPLICATION; + } + + /* + * (non-Javadoc) + * @see org.eclipse.jdt.core.IClasspathContainer#getPath() + */ + public IPath getPath() { + return PDECore.REQUIRED_PLUGINS_CONTAINER_PATH; + } + + /* + * (non-Javadoc) + * @see org.eclipse.jdt.core.IClasspathContainer#getDescription() + */ + public String getDescription() { + return PDECoreMessages.RequiredPluginsClasspathContainer_description; + } + + /* + * (non-Javadoc) + * @see org.eclipse.jdt.core.IClasspathContainer#getClasspathEntries() + */ + public IClasspathEntry[] getClasspathEntries() { + if (fModel == null) { + if (DEBUG) { + System.out.println("********Returned an empty container"); //$NON-NLS-1$ + System.out.println(); + } + return new IClasspathEntry[0]; + } + if (fEntries == null) { + fEntries = computePluginEntries(); + } + if (DEBUG) { + System.out.println("Dependencies for plugin '" + fModel.getPluginBase().getId() + "':"); //$NON-NLS-1$ //$NON-NLS-2$ + for (int i = 0; i < fEntries.length; i++) { + System.out.println(fEntries[i]); + } + System.out.println(); + } + return fEntries; + } + + private IClasspathEntry[] computePluginEntries() { + System.err.println("COMPUTING ENTRIES"); + ArrayList<IClasspathEntry> entries = new ArrayList<IClasspathEntry>(); + try { + BundleDescription desc = fModel.getBundleDescription(); + if (desc == null) + return new IClasspathEntry[0]; + + Map<BundleDescription, ArrayList<Rule>> map = retrieveVisiblePackagesFromState(desc); + + // Add any library entries contributed via classpath contributor extension (Bug 363733) + for (IClasspathContributor cc : getClasspathContributors()) { + System.err.println("Consulting " + cc); + List<IClasspathEntry> classpathEntries = cc.getInitialEntries(desc); + if (classpathEntries == null || classpathEntries.isEmpty()) { + continue; + } + entries.addAll(classpathEntries); + } + + HashSet<BundleDescription> added = new HashSet<BundleDescription>(); + + // to avoid cycles, e.g. when a bundle imports a package it exports + added.add(desc); + + HostSpecification host = desc.getHost(); + if (host != null) { + addHostPlugin(host, added, map, entries); + } else if ("true".equals(System.getProperty("pde.allowCycles"))) { //$NON-NLS-1$ //$NON-NLS-2$ + BundleDescription[] fragments = desc.getFragments(); + for (int i = 0; i < fragments.length; i++) { + if (fragments[i].isResolved()) { + addPlugin(fragments[i], false, map, entries); + } + } + } + + // add dependencies + BundleSpecification[] required = desc.getRequiredBundles(); + for (int i = 0; i < required.length; i++) { + addDependency((BundleDescription) required[i].getSupplier(), added, map, entries); + } + + if (fBuild == null) + fBuild = ClasspathUtilCore.getBuild(fModel); + if (fBuild != null) + addSecondaryDependencies(desc, added, entries); + + // add Import-Package + // sort by symbolicName_version to get a consistent order + Map<String, BundleDescription> sortedMap = new TreeMap<String, BundleDescription>(); + Iterator<BundleDescription> iter = map.keySet().iterator(); + while (iter.hasNext()) { + BundleDescription bundle = iter.next(); + sortedMap.put(bundle.toString(), bundle); + } + + iter = sortedMap.values().iterator(); + while (iter.hasNext()) { + BundleDescription bundle = iter.next(); + IPluginModelBase model = PluginRegistry.findModel(bundle); + if (model != null && model.isEnabled()) + addDependencyViaImportPackage(model.getBundleDescription(), added, map, entries); + } + + if (fBuild != null) + addExtraClasspathEntries(added, entries); + + } catch (CoreException e) { + } + return entries.toArray(new IClasspathEntry[entries.size()]); + } + + /** + * Return the list of {@link IClasspathContributor}s provided by the + * <code>org.eclipse.pde.core.pluginClasspathContributors</code> extension point. + * @return list of classpath contributors from the extension point + */ + private List<IClasspathContributor> getClasspathContributors() { + if (fClasspathContributors == null) { + fClasspathContributors = new ArrayList<IClasspathContributor>(); + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IConfigurationElement[] elements = registry.getConfigurationElementsFor("org.eclipse.pde.core.pluginClasspathContributors"); //$NON-NLS-1$ + for (int i = 0; i < elements.length; i++) { + try { + fClasspathContributors.add((IClasspathContributor) elements[i].createExecutableExtension("class")); //$NON-NLS-1$ + } catch (CoreException e) { + PDECore.log(e.getStatus()); + } + } + } + return fClasspathContributors; + } + + private Map<BundleDescription, ArrayList<Rule>> retrieveVisiblePackagesFromState(BundleDescription desc) { + Map<BundleDescription, ArrayList<Rule>> visiblePackages = new HashMap<BundleDescription, ArrayList<Rule>>(); + StateHelper helper = Platform.getPlatformAdmin().getStateHelper(); + addVisiblePackagesFromState(helper, desc, visiblePackages); + if (desc.getHost() != null) + addVisiblePackagesFromState(helper, (BundleDescription) desc.getHost().getSupplier(), visiblePackages); + return visiblePackages; + } + + private void addVisiblePackagesFromState(StateHelper helper, BundleDescription desc, Map<BundleDescription, ArrayList<Rule>> visiblePackages) { + if (desc == null) + return; + ExportPackageDescription[] exports = helper.getVisiblePackages(desc); + for (int i = 0; i < exports.length; i++) { + BundleDescription exporter = exports[i].getExporter(); + if (exporter == null) + continue; + ArrayList<Rule> list = visiblePackages.get(exporter); + if (list == null) { + list = new ArrayList<Rule>(); + visiblePackages.put(exporter, list); + } + Rule rule = getRule(helper, desc, exports[i]); + if (!list.contains(rule)) + list.add(rule); + } + } + + private Rule getRule(StateHelper helper, BundleDescription desc, ExportPackageDescription export) { + Rule rule = new Rule(); + rule.discouraged = helper.getAccessCode(desc, export) == StateHelper.ACCESS_DISCOURAGED; + String name = export.getName(); + rule.path = (name.equals(".")) ? new Path("*") : new Path(name.replaceAll("\\.", "/") + "/*"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ + return rule; + } + + protected void addDependencyViaImportPackage(BundleDescription desc, HashSet<BundleDescription> added, Map<BundleDescription, ArrayList<Rule>> map, ArrayList<IClasspathEntry> entries) throws CoreException { + if (desc == null || !added.add(desc)) + return; + + addPlugin(desc, true, map, entries); + + if (hasExtensibleAPI(desc) && desc.getContainingState() != null) { + BundleDescription[] fragments = desc.getFragments(); + for (int i = 0; i < fragments.length; i++) { + if (fragments[i].isResolved()) + addDependencyViaImportPackage(fragments[i], added, map, entries); + } + } + } + + private void addDependency(BundleDescription desc, HashSet<BundleDescription> added, Map<BundleDescription, ArrayList<Rule>> map, ArrayList<IClasspathEntry> entries) throws CoreException { + addDependency(desc, added, map, entries, true); + } + + private void addDependency(BundleDescription desc, HashSet<BundleDescription> added, Map<BundleDescription, ArrayList<Rule>> map, ArrayList<IClasspathEntry> entries, boolean useInclusion) throws CoreException { + if (desc == null || !added.add(desc)) + return; + + BundleDescription[] fragments = hasExtensibleAPI(desc) ? desc.getFragments() : new BundleDescription[0]; + + // add fragment patches before host + for (int i = 0; i < fragments.length; i++) { + if (fragments[i].isResolved() && ClasspathUtilCore.isPatchFragment(fragments[i])) { + addDependency(fragments[i], added, map, entries, useInclusion); + } + } + + addPlugin(desc, useInclusion, map, entries); + + // add fragments that are not patches after the host + for (int i = 0; i < fragments.length; i++) { + if (fragments[i].isResolved() && !ClasspathUtilCore.isPatchFragment(fragments[i])) { + addDependency(fragments[i], added, map, entries, useInclusion); + } + } + + BundleSpecification[] required = desc.getRequiredBundles(); + for (int i = 0; i < required.length; i++) { + if (required[i].isExported()) { + addDependency((BundleDescription) required[i].getSupplier(), added, map, entries, useInclusion); + } + } + } + + private boolean addPlugin(BundleDescription desc, boolean useInclusions, Map<BundleDescription, ArrayList<Rule>> map, ArrayList<IClasspathEntry> entries) throws CoreException { + IPluginModelBase model = PluginRegistry.findModel(desc); + if (model == null || !model.isEnabled()) + return false; + + IResource resource = model.getUnderlyingResource(); + Rule[] rules = useInclusions ? getInclusions(map, model) : null; + + BundleDescription hostBundle = fModel.getBundleDescription(); + if (desc == null) + return false; + + // Add any library entries contributed via classpath contributor extension (Bug 363733) + for (IClasspathContributor cc : getClasspathContributors()) { + List<IClasspathEntry> classpathEntries = cc.getEntriesForDependency(hostBundle, desc); + if (classpathEntries == null || classpathEntries.isEmpty()) { + continue; + } + entries.addAll(classpathEntries); + } + + if (resource != null) { + addProjectEntry(resource.getProject(), rules, entries); + } else { + addExternalPlugin(model, rules, entries); + } + return true; + } + + private Rule[] getInclusions(Map<BundleDescription, ArrayList<Rule>> map, IPluginModelBase model) { + BundleDescription desc = model.getBundleDescription(); + if (desc == null || "false".equals(System.getProperty("pde.restriction")) //$NON-NLS-1$ //$NON-NLS-2$ + || !(fModel instanceof IBundlePluginModelBase) || TargetPlatformHelper.getTargetVersion() < 3.1) + return null; + + Rule[] rules; + + if (desc.getHost() != null) + rules = getInclusions(map, (BundleDescription) desc.getHost().getSupplier()); + else + rules = getInclusions(map, desc); + + return (rules.length == 0 && !ClasspathUtilCore.hasBundleStructure(model)) ? null : rules; + } + + private Rule[] getInclusions(Map<BundleDescription, ArrayList<Rule>> map, BundleDescription desc) { + ArrayList<?> list = map.get(desc); + return list != null ? (Rule[]) list.toArray(new Rule[list.size()]) : new Rule[0]; + } + + private void addHostPlugin(HostSpecification hostSpec, HashSet<BundleDescription> added, Map<BundleDescription, ArrayList<Rule>> map, ArrayList<IClasspathEntry> entries) throws CoreException { + BaseDescription desc = hostSpec.getSupplier(); + + if (desc instanceof BundleDescription) { + BundleDescription host = (BundleDescription) desc; + + // add host plug-in + if (added.add(host) && addPlugin(host, false, map, entries)) { + BundleSpecification[] required = host.getRequiredBundles(); + for (int i = 0; i < required.length; i++) { + addDependency((BundleDescription) required[i].getSupplier(), added, map, entries); + } + + // add Import-Package + ImportPackageSpecification[] imports = host.getImportPackages(); + for (int i = 0; i < imports.length; i++) { + BaseDescription supplier = imports[i].getSupplier(); + if (supplier instanceof ExportPackageDescription) { + addDependencyViaImportPackage(((ExportPackageDescription) supplier).getExporter(), added, map, entries); + } + } + } + } + } + + private boolean hasExtensibleAPI(BundleDescription desc) { + IPluginModelBase model = PluginRegistry.findModel(desc); + return model != null ? ClasspathUtilCore.hasExtensibleAPI(model) : false; + } + + protected void addExtraClasspathEntries(HashSet<BundleDescription> added, ArrayList<IClasspathEntry> entries) { + IBuildEntry[] buildEntries = fBuild.getBuildEntries(); + for (int i = 0; i < buildEntries.length; i++) { + String name = buildEntries[i].getName(); + if (name.equals(IBuildPropertiesConstants.PROPERTY_JAR_EXTRA_CLASSPATH) || name.startsWith(IBuildPropertiesConstants.PROPERTY_EXTRAPATH_PREFIX)) { + addExtraClasspathEntries(added, entries, buildEntries[i].getTokens()); + } + } + } + + protected void addExtraClasspathEntries(HashSet<BundleDescription> added, ArrayList<IClasspathEntry> entries, String[] tokens) { + for (int i = 0; i < tokens.length; i++) { + IPath path = Path.fromPortableString(tokens[i]); + if (!path.isAbsolute()) { + File file = new File(fModel.getInstallLocation(), path.toString()); + if (file.exists()) { + IFile resource = PDECore.getWorkspace().getRoot().getFileForLocation(new Path(file.getAbsolutePath())); + if (resource != null && resource.getProject().equals(fModel.getUnderlyingResource().getProject())) { + addExtraLibrary(resource.getFullPath(), null, entries); + continue; + } + } + if (path.segmentCount() >= 3 && "..".equals(path.segment(0))) { //$NON-NLS-1$ + path = path.removeFirstSegments(1); + path = Path.fromPortableString("platform:/plugin/").append(path); //$NON-NLS-1$ + } else { + continue; + } + } + + if (!path.toPortableString().startsWith("platform:")) { //$NON-NLS-1$ + addExtraLibrary(path, null, entries); + } else { + int count = path.getDevice() == null ? 4 : 3; + if (path.segmentCount() >= count) { + String pluginID = path.segment(count - 2); + if (added.contains(pluginID)) + continue; + IPluginModelBase model = PluginRegistry.findModel(pluginID); + if (model != null && model.isEnabled()) { + path = path.setDevice(null); + path = path.removeFirstSegments(count - 1); + if (model.getUnderlyingResource() == null) { + File file = new File(model.getInstallLocation(), path.toOSString()); + if (file.exists()) { + addExtraLibrary(new Path(file.getAbsolutePath()), model, entries); + } + } else { + IProject project = model.getUnderlyingResource().getProject(); + IFile file = project.getFile(path); + if (file.exists()) { + addExtraLibrary(file.getFullPath(), model, entries); + } + } + } + } + } + } + } + + private void addSecondaryDependencies(BundleDescription desc, HashSet<BundleDescription> added, ArrayList<IClasspathEntry> entries) { + try { + IBuildEntry entry = fBuild.getEntry(IBuildEntry.SECONDARY_DEPENDENCIES); + if (entry != null) { + String[] tokens = entry.getTokens(); + for (int i = 0; i < tokens.length; i++) { + String pluginId = tokens[i]; + // Get PluginModelBase first to resolve system.bundle entry if it exists + IPluginModelBase model = PluginRegistry.findModel(pluginId); + if (model != null) { + BundleDescription bundleDesc = model.getBundleDescription(); + if (added.contains(bundleDesc)) + continue; + Map<BundleDescription, ArrayList<Rule>> rules = new HashMap<BundleDescription, ArrayList<Rule>>(); + findExportedPackages(bundleDesc, desc, rules); + addDependency(bundleDesc, added, rules, entries, true); + } + } + } + } catch (CoreException e) { + return; + } + } + + protected final void findExportedPackages(BundleDescription desc, BundleDescription projectDesc, Map<BundleDescription, ArrayList<Rule>> map) { + if (desc != null) { + Stack<BaseDescription> stack = new Stack<BaseDescription>(); + stack.add(desc); + while (!stack.isEmpty()) { + BundleDescription bdesc = (BundleDescription) stack.pop(); + ExportPackageDescription[] expkgs = bdesc.getExportPackages(); + ArrayList<Rule> rules = new ArrayList<Rule>(); + for (int i = 0; i < expkgs.length; i++) { + Rule rule = new Rule(); + rule.discouraged = restrictPackage(projectDesc, expkgs[i]); + rule.path = new Path(expkgs[i].getName().replaceAll("\\.", "/") + "/*"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + rules.add(rule); + } + map.put(bdesc, rules); + + // Look at re-exported Require-Bundles for any other exported packages + BundleSpecification[] requiredBundles = bdesc.getRequiredBundles(); + for (int i = 0; i < requiredBundles.length; i++) + if (requiredBundles[i].isExported()) { + BaseDescription bd = requiredBundles[i].getSupplier(); + if (bd != null && bd instanceof BundleDescription) + stack.add(bd); + } + } + } + } + + private boolean restrictPackage(BundleDescription desc, ExportPackageDescription pkg) { + String[] friends = (String[]) pkg.getDirective(ICoreConstants.FRIENDS_DIRECTIVE); + if (friends != null) { + String symbolicName = desc.getSymbolicName(); + for (int i = 0; i < friends.length; i++) { + if (symbolicName.equals(friends[i])) + return false; + + } + return true; + } + return (((Boolean) pkg.getDirective(ICoreConstants.INTERNAL_DIRECTIVE)).booleanValue()); + } + + private void addExtraLibrary(IPath path, IPluginModelBase model, ArrayList<IClasspathEntry> entries) { + if (path.segmentCount() > 1) { + IPath srcPath = null; + if (model != null) { + IPath shortPath = path.removeFirstSegments(path.matchingFirstSegments(new Path(model.getInstallLocation()))); + srcPath = ClasspathUtilCore.getSourceAnnotation(model, shortPath.toString()); + } else { + String filename = ClasspathUtilCore.getSourceZipName(path.lastSegment()); + IPath candidate = path.removeLastSegments(1).append(filename); + if (PDECore.getWorkspace().getRoot().getFile(candidate).exists()) + srcPath = candidate; + } + IClasspathEntry clsEntry = JavaCore.newLibraryEntry(path, srcPath, null); + if (!entries.contains(clsEntry)) + entries.add(clsEntry); + } + } +} diff --git a/releng/org.eclipse.fx.ide.releng/pom.xml b/releng/org.eclipse.fx.ide.releng/pom.xml index 5c4a79448..e621b3c5d 100755 --- a/releng/org.eclipse.fx.ide.releng/pom.xml +++ b/releng/org.eclipse.fx.ide.releng/pom.xml @@ -27,6 +27,8 @@ <module>../../bundles/tooling/org.eclipse.fx.ide.ui</module> <module>../../bundles/tooling/org.eclipse.fx.ide.jdt.ui</module> <module>../../bundles/tooling/org.eclipse.fx.ide.java6</module> + <module>../../bundles/tooling/org.eclipse.fx.ide.pde.adapter</module> + <module>../../bundles/tooling/org.eclipse.fx.ide.pde.fragment</module> <!-- CSS Tooling --> <module>../../bundles/tooling/org.eclipse.fx.ide.css</module> |