Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Oberlies2015-02-11 18:07:56 +0000
committerTobias Oberlies2015-02-16 08:29:50 +0000
commitc3cdccddfd6fb7b164b216b605252b718004f6c3 (patch)
treecb968c68bc2aeeb37a691475275cf9c21dc6d3fa /bundles
parentac896028a4cc69551aa137135fce3c06642016d5 (diff)
downloadrt.equinox.p2-c3cdccddfd6fb7b164b216b605252b718004f6c3.tar.gz
rt.equinox.p2-c3cdccddfd6fb7b164b216b605252b718004f6c3.tar.xz
rt.equinox.p2-c3cdccddfd6fb7b164b216b605252b718004f6c3.zip
373817 Add hasBundles and hasFeatures methods
... so that the check for ignored product file content does not call getBundles and getFeatures. This makes it easier to override the latter methods to also expand version references with 'qualifier' literals. Bug: 373817 Change-Id: I18591dfe5b8abd014889374b22686501d0173ef4
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/IProductDescriptor.java12
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java10
-rw-r--r--bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java4
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java21
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyBundles.product20
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFeatures.product20
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFragments.product20
7 files changed, 104 insertions, 3 deletions
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/IProductDescriptor.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/IProductDescriptor.java
index 87f7fd0a9..f3dc69b7f 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/IProductDescriptor.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/IProductDescriptor.java
@@ -51,6 +51,11 @@ public interface IProductDescriptor {
public List<IVersionedId> getBundles(boolean includeFragments);
/**
+ * Returns <code>true</code> when <code>getBundles(includeFragments)</code> returns a non-empty list.
+ */
+ public boolean hasBundles(boolean includeFragments);
+
+ /**
* Returns the fragments listed in the product.
* @see #useFeatures()
*/
@@ -63,6 +68,11 @@ public interface IProductDescriptor {
public List<IVersionedId> getFeatures();
/**
+ * Returns <code>true</code> when <code>getFeatures()</code> returns a non-empty list.
+ */
+ public boolean hasFeatures();
+
+ /**
* Returns the features listed in the product. Note: These features are only part of
* the product if {@link #useFeatures()} returns <code>true</code>.
* @param options bitmask to indicate what kind of features to return.
@@ -188,4 +198,4 @@ public interface IProductDescriptor {
*/
public List<IRepositoryReference> getRepositoryEntries();
-} \ No newline at end of file
+}
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
index 109837b64..71816dc1e 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
@@ -361,6 +361,11 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor {
return result;
}
+ public boolean hasBundles(boolean includeFragments) {
+ // implement directly; don't call the potentially overridden getBundles
+ return !plugins.isEmpty() || (includeFragments && !fragments.isEmpty());
+ }
+
private List<FeatureEntry> getBundleEntries(boolean includeFragments) {
List<FeatureEntry> result = new LinkedList<FeatureEntry>();
result.addAll(plugins);
@@ -398,6 +403,11 @@ public class ProductFile extends DefaultHandler implements IProductDescriptor {
return getFeatures(INCLUDED_FEATURES);
}
+ public boolean hasFeatures() {
+ // implement directly; don't call the potentially overridden getFeatures
+ return !features.isEmpty();
+ }
+
public List<IVersionedId> getFeatures(int options) {
List<IVersionedId> result = new LinkedList<IVersionedId>();
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
index 650f1dd3c..edaa26842 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/p2/publisher/eclipse/ProductAction.java
@@ -136,14 +136,14 @@ public class ProductAction extends AbstractPublisherAction {
case FEATURES : // include features only
list = versionElements(listElements(product.getFeatures(), ".feature.group"), IInstallableUnit.NAMESPACE_IU_ID); //$NON-NLS-1$
- if (!product.getBundles(true).isEmpty()) {
+ if (product.hasBundles(true)) {
finalStatus.add(new Status(IStatus.INFO, Activator.ID, Messages.bundlesInProductFileIgnored));
}
break;
case BUNDLES : // include bundles only
list = versionElements(listElements(product.getBundles(true), null), IInstallableUnit.NAMESPACE_IU_ID);
- if (!product.getFeatures().isEmpty()) {
+ if (product.hasFeatures()) {
finalStatus.add(new Status(IStatus.INFO, Activator.ID, Messages.featuresInProductFileIgnored));
}
break;
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
index 8ec7a5fb5..7c0c36402 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileTest.java
@@ -137,6 +137,27 @@ public class ProductFileTest extends TestCase {
assertThat(rootFeaturesProduct.getFeatures(), is(rootFeaturesProduct.getFeatures(IProductDescriptor.INCLUDED_FEATURES)));
}
+ public void testHasFeatures() throws Exception {
+ ProductFile featuresOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyFeatures.product").toString());
+ assertThat(featuresOnly.hasFeatures(), is(true));
+ assertThat(featuresOnly.hasBundles(false), is(false));
+ assertThat(featuresOnly.hasBundles(true), is(false));
+ }
+
+ public void testHasBundles() throws Exception {
+ ProductFile bundlesOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyBundles.product").toString());
+ assertThat(bundlesOnly.hasFeatures(), is(false));
+ assertThat(bundlesOnly.hasBundles(false), is(true));
+ assertThat(bundlesOnly.hasBundles(true), is(true));
+ }
+
+ public void testHasFragments() throws Exception {
+ ProductFile bundlesOnly = new ProductFile(TestData.getFile("ProductActionTest", "onlyFragments.product").toString());
+ assertThat(bundlesOnly.hasFeatures(), is(false));
+ assertThat(bundlesOnly.hasBundles(false), is(false));
+ assertThat(bundlesOnly.hasBundles(true), is(true));
+ }
+
/**
* Test method for {@link org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile#getIcons(java.lang.String)}.
*/
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyBundles.product b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyBundles.product
new file mode 100644
index 000000000..618127834
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyBundles.product
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product uid="product.with.plugin" useFeatures="false" includeLaunchers="false">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+ </launcherArgs>
+
+ <plugins>
+ <plugin id="org.eclipse.core.commands"/>
+ </plugins>
+
+ <features>
+ </features>
+
+</product>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFeatures.product b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFeatures.product
new file mode 100644
index 000000000..1fc92b22c
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFeatures.product
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product uid="product.with.feature" useFeatures="true" includeLaunchers="false">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+ </launcherArgs>
+
+ <plugins>
+ </plugins>
+
+ <features>
+ <feature id="org.eclipse.rcp"/>
+ </features>
+
+</product>
diff --git a/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFragments.product b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFragments.product
new file mode 100644
index 000000000..0c8ae9b35
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/testData/ProductActionTest/onlyFragments.product
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?pde version="3.5"?>
+
+<product uid="product.with.fragment" useFeatures="false" includeLaunchers="false">
+
+ <configIni use="default">
+ </configIni>
+
+ <launcherArgs>
+ <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
+ </launcherArgs>
+
+ <plugins>
+ <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
+ </plugins>
+
+ <features>
+ </features>
+
+</product>

Back to the top