From 08a04cbff4fc6393ec56c61fff7f859d1d707cd6 Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber@redhat.com>
Date: Fri, 26 Jun 2015 15:34:12 -0400
Subject: [PATCH] Respect compatibility with Java 7.
---
org.fedoraproject.p2/META-INF/MANIFEST.MF | 2 +-
.../p2/installer/impl/DefaultEclipseInstaller.java | 58 ++++++++++++++++------
xmvn-p2-installer-plugin/pom.xml | 4 +-
3 files changed, 45 insertions(+), 19 deletions(-)
diff --git a/fedoraproject-p2/org.fedoraproject.p2/META-INF/MANIFEST.MF b/fedoraproject-p2/org.fedoraproject.p2/META-INF/MANIFEST.MF
index 4319079..2967c22 100644
--- a/fedoraproject-p2/org.fedoraproject.p2/META-INF/MANIFEST.MF
+++ b/fedoraproject-p2/org.fedoraproject.p2/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: Fedora Project P2 Repository
Bundle-SymbolicName: org.fedoraproject.p2;singleton:=true
Bundle-Version: 0.0.1.qualifier
Bundle-Vendor: Fedora
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.equinox.p2.metadata,
org.eclipse.equinox.p2.repository,
diff --git a/fedoraproject-p2/org.fedoraproject.p2/src/org/fedoraproject/p2/installer/impl/DefaultEclipseInstaller.java b/fedoraproject-p2/org.fedoraproject.p2/src/org/fedoraproject/p2/installer/impl/DefaultEclipseInstaller.java
index 35c6657..77da1f5 100644
--- a/fedoraproject-p2/org.fedoraproject.p2/src/org/fedoraproject/p2/installer/impl/DefaultEclipseInstaller.java
+++ b/fedoraproject-p2/org.fedoraproject.p2/src/org/fedoraproject/p2/installer/impl/DefaultEclipseInstaller.java
@@ -26,11 +26,11 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.stream.Collectors;
import org.eclipse.equinox.p2.metadata.IArtifactKey;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IInstallableUnitFragment;
+import org.eclipse.equinox.p2.metadata.IProvidedCapability;
import org.eclipse.equinox.p2.metadata.IRequirement;
import org.eclipse.equinox.p2.query.IQuery;
import org.eclipse.equinox.p2.query.QueryUtil;
@@ -89,13 +89,27 @@ public class DefaultEclipseInstaller implements EclipseInstaller {
Director.publish(reactorRepo, plugins, features);
reactor = reactorRepo.getAllUnits();
// Remove all host localization fragments
- reactor.removeAll(reactor.stream()
- .filter(u -> u.getId().endsWith("translated_host_properties"))
- .collect(Collectors.toSet()));
- Set<Path> reactorPaths = reactor.stream().map(u -> P2Utils.getPath(u)).collect(Collectors.toSet());
- request.getArtifacts().stream().filter(a -> !reactorPaths.contains(a.getPath()))
- .forEach(a -> logger.error("Not a valid {}: {}", a.isFeature() ? "feature" : "plugin", a.getPath()));
- if (reactor.stream().collect(Collectors.summingInt(u -> u.getArtifacts().size()))
+ Set<IInstallableUnit> hostLocalizationFragments = new LinkedHashSet<>();
+ for (IInstallableUnit u : reactor) {
+ if (u.getId().endsWith("translated_host_properties")) {
+ hostLocalizationFragments.add(u);
+ }
+ }
+ reactor.removeAll(hostLocalizationFragments);
+ Set<Path> reactorPaths = new LinkedHashSet<>();
+ for (IInstallableUnit u : reactor) {
+ reactorPaths.add(P2Utils.getPath(u));
+ }
+ for (EclipseArtifact a : request.getArtifacts()) {
+ if (!reactorPaths.contains(a.getPath())) {
+ logger.error("Not a valid {}: {}", a.isFeature() ? "feature" : "plugin", a.getPath());
+ }
+ }
+ int numOfArtifacts = 0;
+ for (IInstallableUnit u : reactor) {
+ numOfArtifacts += u.getArtifacts().size();
+ }
+ if (numOfArtifacts
!= plugins.size() + features.size()) {
throw new RuntimeException("Reactor contains invalid plugin or feature");
}
@@ -106,7 +120,10 @@ public class DefaultEclipseInstaller implements EclipseInstaller {
List<Path> sclConfs = request.getConfigFiles();
if (sclConfs.isEmpty())
sclConfs = EclipseSystemLayout.getSclConfFiles();
- List<SCL> scls = sclConfs.stream().map(c -> new SCL(c)).collect(Collectors.toList());
+ List<SCL> scls = new LinkedList<>();
+ for (Path c : sclConfs) {
+ scls.add(new SCL(c));
+ }
index = new CompoundBundleRepository(scls);
SCL currentScl = scls.iterator().next();
@@ -223,14 +240,23 @@ public class DefaultEclipseInstaller implements EclipseInstaller {
.get(unit);
requires.removeAll(content);
// Remove all fragments from requires generation
- requires.removeAll(requires.stream().filter(
- r -> r.getProvidedCapabilities().stream().anyMatch(
- p -> p.getNamespace().equals("osgi.fragment")))
- .collect(Collectors.toSet()));
+ Set<IInstallableUnit> fragments = new LinkedHashSet<>();
+ for (IInstallableUnit u : requires) {
+ for (IProvidedCapability p : u.getProvidedCapabilities()) {
+ if (p.getNamespace().equals("osgi.fragment")) {
+ fragments.add(u);
+ break;
+ }
+ }
+ }
+ requires.removeAll(fragments);
if (!requires.isEmpty()) {
- provide.setProperty("osgi.requires", requires
- .stream().map(u -> P2Utils.toString(u))
- .collect(Collectors.joining(",")));
+ StringBuffer osgiRequiresString = new StringBuffer();
+ for (IInstallableUnit u : requires) {
+ osgiRequiresString.append(",");
+ osgiRequiresString.append(P2Utils.toString(u));
+ }
+ provide.setProperty("osgi.requires", osgiRequiresString.substring(1));
}
}
}
diff --git a/fedoraproject-p2/xmvn-p2-installer-plugin/pom.xml b/fedoraproject-p2/xmvn-p2-installer-plugin/pom.xml
index 2974dda..3ca2d3c 100644
--- a/fedoraproject-p2/xmvn-p2-installer-plugin/pom.xml
+++ b/fedoraproject-p2/xmvn-p2-installer-plugin/pom.xml
@@ -85,8 +85,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
- <source>1.8</source>
- <target>1.8</target>
+ <source>1.7</source>
+ <target>1.7</target>
</configuration>
</plugin>
</plugins>
--
2.1.0