Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2014-07-13 10:10:31 +0000
committerEd Merks2014-07-13 10:10:31 +0000
commit3bf3085258cc1f591696b7a01ddd85b4efc26ec3 (patch)
treec643630f20121bde4fffe17d528b08f630b9dd22 /plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal
parent0549931493f523191ed3d542be72e4dcc0b93464 (diff)
downloadorg.eclipse.oomph-3bf3085258cc1f591696b7a01ddd85b4efc26ec3.tar.gz
org.eclipse.oomph-3bf3085258cc1f591696b7a01ddd85b4efc26ec3.tar.xz
org.eclipse.oomph-3bf3085258cc1f591696b7a01ddd85b4efc26ec3.zip
[439398] Cannot deploy Kepler without P2 director task that contains
repository for EMF 2.10 https://bugs.eclipse.org/bugs/show_bug.cgi?id=439398
Diffstat (limited to 'plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal')
-rw-r--r--plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainer.java127
-rw-r--r--plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java7
2 files changed, 99 insertions, 35 deletions
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainer.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainer.java
index 8fd9df731..22843af09 100644
--- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainer.java
+++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/TargletContainer.java
@@ -13,6 +13,7 @@ package org.eclipse.oomph.targlets.internal.core;
import org.eclipse.oomph.p2.ProfileDefinition;
import org.eclipse.oomph.p2.Repository;
import org.eclipse.oomph.p2.Requirement;
+import org.eclipse.oomph.p2.core.P2Util;
import org.eclipse.oomph.p2.core.Profile;
import org.eclipse.oomph.p2.core.ProfileTransaction;
import org.eclipse.oomph.p2.core.ProfileTransaction.CommitContext;
@@ -102,6 +103,8 @@ import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Collection;
@@ -144,7 +147,7 @@ public class TargletContainer extends AbstractBundleContainer
private ITargetDefinition target;
- private EList<Targlet> targlets = new BasicEList<Targlet>();
+ private final EList<Targlet> targlets = new BasicEList<Targlet>();
public TargletContainer(String id)
{
@@ -164,6 +167,41 @@ public class TargletContainer extends AbstractBundleContainer
basicSetTarglets(targlets);
}
+ protected int getResolveBundlesWork()
+ {
+ return 999;
+ }
+
+ protected int getResolveFeaturesWork()
+ {
+ return 1;
+ }
+
+ public boolean isContentEqual(AbstractBundleContainer container)
+ {
+ if (container instanceof TargletContainer)
+ {
+ TargletContainer targletContainer = (TargletContainer)container;
+ if (targlets.size() != targletContainer.targlets.size())
+ {
+ return false;
+ }
+
+ for (Targlet targlet : targletContainer.targlets)
+ {
+ Targlet existingTarglet = getTarglet(targlet.getName());
+ if (existingTarglet == null || !EcoreUtil.equals(existingTarglet, targlet))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
public String getID()
{
return id;
@@ -266,7 +304,7 @@ public class TargletContainer extends AbstractBundleContainer
TargletContainerListenerRegistryImpl.INSTANCE.notifyListeners(new TargletContainerChanged(this), new NullProgressMonitor());
}
- private EList<Targlet> basicSetTarglets(Collection<? extends Targlet> targlets)
+ private void basicSetTarglets(Collection<? extends Targlet> targlets)
{
Set<String> names = new HashSet<String>();
for (Targlet targlet : targlets)
@@ -278,9 +316,8 @@ public class TargletContainer extends AbstractBundleContainer
}
}
- EList<Targlet> oldTarglets = this.targlets;
- this.targlets = TargletFactory.eINSTANCE.copyTarglets(targlets);
- return oldTarglets;
+ this.targlets.clear();
+ this.targlets.addAll(TargletFactory.eINSTANCE.copyTarglets(targlets));
}
@Override
@@ -413,18 +450,6 @@ public class TargletContainer extends AbstractBundleContainer
}
@Override
- protected int getResolveBundlesWork()
- {
- return 999;
- }
-
- @Override
- protected int getResolveFeaturesWork()
- {
- return 1;
- }
-
- @Override
protected TargetBundle[] resolveBundles(ITargetDefinition target, IProgressMonitor monitor) throws CoreException
{
resolveUnits(monitor);
@@ -907,7 +932,7 @@ public class TargletContainer extends AbstractBundleContainer
private static Set<File> getProjectLocations(IProfile profile, Map<IInstallableUnit, File> sources, IProgressMonitor monitor)
{
Set<File> projectLocations = new HashSet<File>();
- for (IInstallableUnit iu : profile.query(QueryUtil.createIUAnyQuery(), monitor))
+ for (IInstallableUnit iu : P2Util.asIterable(profile.query(QueryUtil.createIUAnyQuery(), monitor)))
{
File folder = sources.get(iu);
if (folder != null)
@@ -962,30 +987,68 @@ public class TargletContainer extends AbstractBundleContainer
return null;
}
- public static void updateWorkspace(IProgressMonitor monitor) throws CoreException
- {
- ITargetPlatformService service = null;
+ private static final Method GET_WORKSPACE_TARGET_DEFINITION_METHOD;
+ static
+ {
+ Method method = null;
try
{
- service = TargletsCorePlugin.INSTANCE.getService(ITargetPlatformService.class);
- Set<File> projectLocations = new HashSet<File>();
- ITargetDefinition target = null;
+ method = ITargetPlatformService.class.getMethod("getWorkspaceTargetDefinition");
+ }
+ catch (NoSuchMethodException ex)
+ {
+ // Ignore.
+ }
+ catch (SecurityException ex)
+ {
+ // Ignore.
+ }
+ GET_WORKSPACE_TARGET_DEFINITION_METHOD = method;
+ }
+
+ private static ITargetDefinition getWorkITargetDefinition(ITargetPlatformService service) throws CoreException
+ {
+ if (GET_WORKSPACE_TARGET_DEFINITION_METHOD != null)
+ {
try
{
- target = service.getWorkspaceTargetDefinition();
+ return (ITargetDefinition)GET_WORKSPACE_TARGET_DEFINITION_METHOD.invoke(service);
}
- catch (NoSuchMethodError ex)
+ catch (IllegalAccessException ex)
{
- // Handle gracefully that getWorkspaceTargetDefinition() has been added in Eclipse 4.4
- ITargetHandle handle = service.getWorkspaceTargetHandle();
- if (handle != null)
- {
- target = handle.getTargetDefinition();
- }
+ // Ignore.
}
+ catch (IllegalArgumentException ex)
+ {
+ // Ignore.
+ }
+ catch (InvocationTargetException ex)
+ {
+ // Ignore.
+ }
+ }
+
+ // Handle gracefully that getWorkspaceTargetDefinition() has been added in Eclipse 4.4
+ ITargetHandle handle = service.getWorkspaceTargetHandle();
+ if (handle != null)
+ {
+ return handle.getTargetDefinition();
+ }
+
+ return null;
+ }
+
+ public static void updateWorkspace(IProgressMonitor monitor) throws CoreException
+ {
+ ITargetPlatformService service = null;
+ try
+ {
+ service = TargletsCorePlugin.INSTANCE.getService(ITargetPlatformService.class);
+ Set<File> projectLocations = new HashSet<File>();
+ ITargetDefinition target = getWorkITargetDefinition(service);
if (target != null)
{
ITargetLocation[] targetLocations = target.getTargetLocations();
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
index bc4f71fb9..3053d51b9 100644
--- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
+++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/listeners/TargetDefinitionGenerator.java
@@ -13,6 +13,7 @@ package org.eclipse.oomph.targlets.internal.core.listeners;
import org.eclipse.oomph.base.Annotation;
import org.eclipse.oomph.base.ModelElement;
import org.eclipse.oomph.p2.Repository;
+import org.eclipse.oomph.p2.core.P2Util;
import org.eclipse.oomph.p2.core.Profile;
import org.eclipse.oomph.targlets.Targlet;
import org.eclipse.oomph.targlets.core.TargletContainerEvent;
@@ -281,7 +282,7 @@ public class TargetDefinitionGenerator implements TargletContainerListener
Set<IU> resultIUs = new HashSet<IU>();
IMetadataRepository metadataRepository = getMetadataRepository(repository.getURL(), metadataRepositories);
- for (IInstallableUnit repositoryIU : metadataRepository.query(QueryUtil.createIUAnyQuery(), null))
+ for (IInstallableUnit repositoryIU : P2Util.asIterable(metadataRepository.query(QueryUtil.createIUAnyQuery(), null)))
{
TargletsCorePlugin.checkCancelation(monitor);
@@ -313,7 +314,7 @@ public class TargetDefinitionGenerator implements TargletContainerListener
{
TargletsCorePlugin.checkCancelation(monitor);
- for (IInstallableUnit installableUnit : profile.query(QueryUtil.createMatchQuery(requirement.getMatches()), null))
+ for (IInstallableUnit installableUnit : P2Util.asIterable(profile.query(QueryUtil.createMatchQuery(requirement.getMatches()), null)))
{
TargletsCorePlugin.checkCancelation(monitor);
@@ -392,7 +393,7 @@ public class TargetDefinitionGenerator implements TargletContainerListener
private static IInstallableUnit getInstallableUnitFromProfile(IInstallableUnit repositoryIU, Profile profile)
{
- for (IInstallableUnit profileIU : profile.query(QueryUtil.createIUQuery(repositoryIU), null))
+ for (IInstallableUnit profileIU : P2Util.asIterable(profile.query(QueryUtil.createIUQuery(repositoryIU), null)))
{
if (!TRUE.equalsIgnoreCase(profileIU.getProperty(IUGenerator.IU_PROPERTY_SOURCE)))
{

Back to the top