Skip to content

Commit 0710ad2

Browse files
committed
Extend the copied MirrorApplication and apply some patches
1 parent 00e9fa4 commit 0710ad2

File tree

3 files changed

+12
-56
lines changed

3 files changed

+12
-56
lines changed

tycho-core/src/main/java/org/eclipse/tycho/p2tools/MirrorApplication.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2010, 2011 SAP SE and others.
2+
* Copyright (c) 2010, 2023 SAP SE and others.
33
* This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License 2.0
55
* which accompanies this distribution, and is available at
@@ -13,13 +13,11 @@
1313
package org.eclipse.tycho.p2tools;
1414

1515
import java.net.URI;
16-
import java.util.Collection;
1716
import java.util.HashMap;
1817
import java.util.HashSet;
1918
import java.util.List;
2019
import java.util.Map;
2120
import java.util.Set;
22-
import java.util.UUID;
2321
import java.util.stream.Stream;
2422

2523
import org.eclipse.core.runtime.IProgressMonitor;
@@ -31,12 +29,7 @@
3129
import org.eclipse.equinox.p2.internal.repository.tools.RepositoryDescriptor;
3230
import org.eclipse.equinox.p2.internal.repository.tools.SlicingOptions;
3331
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
34-
import org.eclipse.equinox.p2.metadata.IProvidedCapability;
3532
import org.eclipse.equinox.p2.metadata.IRequirement;
36-
import org.eclipse.equinox.p2.metadata.MetadataFactory;
37-
import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
38-
import org.eclipse.equinox.p2.metadata.Version;
39-
import org.eclipse.equinox.p2.metadata.VersionRange;
4033
import org.eclipse.equinox.p2.metadata.expression.IMatchExpression;
4134
import org.eclipse.equinox.p2.query.CollectionResult;
4235
import org.eclipse.equinox.p2.query.IQueryable;
@@ -50,7 +43,7 @@
5043
import org.eclipse.tycho.TargetPlatform;
5144
import org.eclipse.tycho.p2.tools.RepositoryReference;
5245

53-
public class MirrorApplication extends org.eclipse.equinox.p2.internal.repository.tools.MirrorApplication {
46+
public class MirrorApplication extends org.eclipse.tycho.p2tools.copiedfromp2.MirrorApplication {
5447

5548
private static final String SOURCE_SUFFIX = ".source";
5649
private final Map<String, String> extraArtifactRepositoryProperties;
@@ -62,8 +55,7 @@ public class MirrorApplication extends org.eclipse.equinox.p2.internal.repositor
6255

6356
public MirrorApplication(IProvisioningAgent agent, Map<String, String> extraArtifactRepositoryProperties,
6457
List<RepositoryReference> repositoryReferences) {
65-
super();
66-
this.agent = agent;
58+
super(agent);
6759
this.extraArtifactRepositoryProperties = extraArtifactRepositoryProperties;
6860
this.repositoryReferences = repositoryReferences;
6961
this.removeAddedRepositories = false;

tycho-core/src/main/java/org/eclipse/tycho/p2tools/copiedfromp2/AbstractApplication.java

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@
2222
import org.eclipse.core.runtime.IProgressMonitor;
2323
import org.eclipse.core.runtime.IStatus;
2424
import org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository;
25-
import org.eclipse.equinox.internal.p2.core.helpers.LogHelper;
2625
import org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository;
2726
import org.eclipse.equinox.internal.p2.repository.helpers.RepositoryHelper;
2827
import org.eclipse.equinox.p2.core.IProvisioningAgent;
29-
import org.eclipse.equinox.p2.core.IProvisioningAgentProvider;
3028
import org.eclipse.equinox.p2.core.ProvisionException;
3129
import org.eclipse.equinox.p2.internal.repository.tools.Messages;
3230
import org.eclipse.equinox.p2.internal.repository.tools.RepositoryDescriptor;
@@ -39,8 +37,6 @@
3937
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
4038
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
4139
import org.eclipse.osgi.util.NLS;
42-
import org.osgi.framework.BundleContext;
43-
import org.osgi.framework.ServiceReference;
4440

4541
public abstract class AbstractApplication {
4642
protected boolean removeAddedRepositories = true;
@@ -59,45 +55,10 @@ public abstract class AbstractApplication {
5955

6056
protected IProvisioningAgent agent;
6157

62-
public AbstractApplication() {
63-
super();
64-
try {
65-
setupAgent();
66-
} catch (ProvisionException e) {
67-
LogHelper.log(e);
68-
}
69-
}
70-
7158
public AbstractApplication(IProvisioningAgent agent) {
7259
this.agent = agent;
7360
}
7461

75-
private void setupAgent() throws ProvisionException {
76-
// note if we ever wanted these applications to act on a different agent than
77-
// the currently running system we would need to set it here
78-
BundleContext bundleContext = Activator.getBundleContext();
79-
if (bundleContext == null) {
80-
return;
81-
}
82-
ServiceReference<IProvisioningAgent> agentRef = bundleContext.getServiceReference(IProvisioningAgent.class);
83-
if (agentRef != null) {
84-
agent = bundleContext.getService(agentRef);
85-
if (agent != null)
86-
return;
87-
}
88-
// there is no agent around so we need to create one
89-
ServiceReference<IProvisioningAgentProvider> providerRef = bundleContext
90-
.getServiceReference(IProvisioningAgentProvider.class);
91-
if (providerRef == null)
92-
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
93-
IProvisioningAgentProvider provider = bundleContext.getService(providerRef);
94-
if (provider == null)
95-
throw new RuntimeException("No provisioning agent provider is available"); //$NON-NLS-1$
96-
// obtain agent for currently running system
97-
agent = provider.createAgent(null);
98-
bundleContext.ungetService(providerRef);
99-
}
100-
10162
public void setSourceIUs(List<IInstallableUnit> ius) {
10263
sourceIUs = ius;
10364
}

tycho-core/src/main/java/org/eclipse/tycho/p2tools/copiedfromp2/MirrorApplication.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,6 @@ public class MirrorApplication extends AbstractApplication implements IApplicati
7777
private IArtifactMirrorLog mirrorLog;
7878
private IArtifactMirrorLog comparatorLog;
7979

80-
public MirrorApplication() {
81-
super();
82-
}
83-
8480
public MirrorApplication(IProvisioningAgent agent) {
8581
super(agent);
8682
}
@@ -369,10 +365,10 @@ private IArtifactMirrorLog getLog(File location, String root) {
369365
}
370366

371367
private IQueryable<IInstallableUnit> performResolution(IProgressMonitor monitor) throws ProvisionException {
372-
IProfileRegistry registry = Activator.getProfileRegistry();
368+
IProfileRegistry registry = getProfileRegistry();
373369
String profileId = "MirrorApplication-" + System.currentTimeMillis(); //$NON-NLS-1$
374370
IProfile profile = registry.addProfile(profileId, slicingOptions.getFilter());
375-
IPlanner planner = Activator.getAgent().getService(IPlanner.class);
371+
IPlanner planner = agent.getService(IPlanner.class);
376372
if (planner == null)
377373
throw new IllegalStateException();
378374
IProfileChangeRequest pcr = planner.createChangeRequest(profile);
@@ -387,6 +383,13 @@ private IQueryable<IInstallableUnit> performResolution(IProgressMonitor monitor)
387383
return new CompoundQueryable<>(arr);
388384
}
389385

386+
private IProfileRegistry getProfileRegistry() throws ProvisionException {
387+
IProfileRegistry registry = agent.getService(IProfileRegistry.class);
388+
if (registry == null)
389+
throw new ProvisionException(Messages.no_profile_registry);
390+
return registry;
391+
}
392+
390393
private IQueryable<IInstallableUnit> slice(IProgressMonitor monitor) throws ProvisionException {
391394
if (slicingOptions == null)
392395
slicingOptions = new SlicingOptions();

0 commit comments

Comments
 (0)