Skip to content

Commit af7f47c

Browse files
authored
Move IDependencyMetadata to a shared place (#44)
Refactoring: Move IDependencyMetadata to a shared place Signed-off-by: Christoph Läubrich <laeubi@laeubi-soft.de>
1 parent 9e73883 commit af7f47c

File tree

23 files changed

+167
-146
lines changed

23 files changed

+167
-146
lines changed
+10-3
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,21 @@
1010
* Contributors:
1111
* Sonatype Inc. - initial API and implementation
1212
*******************************************************************************/
13-
package org.eclipse.tycho.p2.metadata;
13+
package org.eclipse.tycho;
1414

15+
import java.util.Collection;
1516
import java.util.Set;
1617

1718
public interface IDependencyMetadata {
1819

19-
Set<Object /* IInstallableUnit */> getMetadata(boolean primary);
20+
enum DependencyMetadataType {
21+
SEED, RESOLVE;
22+
}
2023

21-
Set<Object /* IInstallableUnit */> getMetadata();
24+
Set<? /* IInstallableUnit */> getDependencyMetadata(DependencyMetadataType type);
25+
26+
Set<? /* IInstallableUnit */> getDependencyMetadata();
27+
28+
void setDependencyMetadata(DependencyMetadataType type, Collection<? /* IInstallableUnit */> units);
2229

2330
}

tycho-bundles/org.eclipse.tycho.embedder.shared/src/main/java/org/eclipse/tycho/ReactorProject.java

+1-32
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,11 @@
1414
package org.eclipse.tycho;
1515

1616
import java.io.File;
17-
import java.util.Set;
1817

1918
/**
2019
* A Tycho project in the reactor.
2120
*/
22-
public interface ReactorProject {
23-
/**
24-
* Conventional key used to store ReactorProject in MavenProject.context
25-
*/
26-
public static final String CTX_REACTOR_PROJECT = "tycho.reactor-project";
27-
28-
/**
29-
* Conventional key used to store dependency metadata in MavenProject.context
30-
*/
31-
public static final String CTX_DEPENDENCY_METADATA = "tycho.dependency-metadata";
32-
33-
/**
34-
* Conventional key used to store secondary dependency metadata in MavenProject.context
35-
*/
36-
public static final String CTX_SECONDARY_DEPENDENCY_METADATA = "tycho.secondary-dependency-metadata";
21+
public interface ReactorProject extends IDependencyMetadata {
3722

3823
/**
3924
* Conventional sources jar Maven artifact classifier.
@@ -76,22 +61,6 @@ public interface ReactorProject {
7661

7762
public void setContextValue(String key, Object value);
7863

79-
//
80-
81-
public void setDependencyMetadata(boolean primary, Set<? /* IInstallableUnit */> installableUnits);
82-
83-
/**
84-
* Returns set of p2 <tt>IInstallableUnit</tt>s that describe requirements and provided
85-
* capabilities of this project.
86-
*/
87-
public Set<?> getDependencyMetadata(boolean primary);
88-
89-
/**
90-
* Returns project dependency metadata with both primary and secondary project installable
91-
* units.
92-
*/
93-
public Set<?> getDependencyMetadata();
94-
9564
public String getBuildQualifier();
9665

9766
public String getExpandedVersion();

tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/test/ArtifactMock.java

+8-5
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
import java.util.LinkedHashSet;
1717
import java.util.Set;
1818

19+
import org.eclipse.tycho.IDependencyMetadata;
20+
import org.eclipse.tycho.IDependencyMetadata.DependencyMetadataType;
1921
import org.eclipse.tycho.p2.metadata.IArtifactFacade;
20-
import org.eclipse.tycho.p2.metadata.IDependencyMetadata;
2122

2223
public class ArtifactMock implements IArtifactFacade {
2324
private File location;
@@ -51,8 +52,8 @@ public ArtifactMock(File location, String groupId, String artifactId, String ver
5152
}
5253

5354
public ArtifactMock(ReactorProjectStub project, String classifier) {
54-
this(project.getBasedir(), project.getGroupId(), project.getArtifactId(), project.getVersion(), project
55-
.getPackaging(), classifier);
55+
this(project.getBasedir(), project.getGroupId(), project.getArtifactId(), project.getVersion(),
56+
project.getPackaging(), classifier);
5657
}
5758

5859
@Override
@@ -94,7 +95,9 @@ public Set<Object> getDependencyMetadata(boolean primary) {
9495
}
9596

9697
public void setDependencyMetadata(IDependencyMetadata dependencyMetadata) {
97-
this.dependencyMetadata = new LinkedHashSet<>(dependencyMetadata.getMetadata(true));
98-
this.secondaryDependencyMetadata = new LinkedHashSet<>(dependencyMetadata.getMetadata(false));
98+
this.dependencyMetadata = new LinkedHashSet<>(
99+
dependencyMetadata.getDependencyMetadata(DependencyMetadataType.SEED));
100+
this.secondaryDependencyMetadata = new LinkedHashSet<>(
101+
dependencyMetadata.getDependencyMetadata(DependencyMetadataType.RESOLVE));
99102
}
100103
}

tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/test/ReactorProjectStub.java

+24-12
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,18 @@
1414
package org.eclipse.tycho.p2.impl.test;
1515

1616
import java.io.File;
17+
import java.util.Collection;
18+
import java.util.Collections;
1719
import java.util.HashMap;
1820
import java.util.LinkedHashSet;
1921
import java.util.Map;
2022
import java.util.Set;
2123

2224
import org.eclipse.tycho.BuildDirectory;
2325
import org.eclipse.tycho.BuildOutputDirectory;
26+
import org.eclipse.tycho.IDependencyMetadata;
2427
import org.eclipse.tycho.ReactorProject;
2528
import org.eclipse.tycho.ReactorProjectIdentities;
26-
import org.eclipse.tycho.p2.metadata.IDependencyMetadata;
2729

2830
// TODO use interface with a subset of methods to ease stubbing?
2931
public class ReactorProjectStub extends ReactorProjectIdentities implements ReactorProject {
@@ -93,28 +95,37 @@ public String getPackaging() {
9395
}
9496

9597
@Override
96-
public Set<?> getDependencyMetadata(boolean primary) {
97-
return primary ? dependencyMetadata : secondaryDependencyMetadata;
98+
public Set<?> getDependencyMetadata(DependencyMetadataType type) {
99+
switch (type) {
100+
case SEED:
101+
return dependencyMetadata;
102+
case RESOLVE:
103+
return secondaryDependencyMetadata;
104+
default:
105+
return Collections.emptySet();
106+
}
98107
}
99108

100109
public void setDependencyMetadata(IDependencyMetadata dependencyMetadata) {
101-
this.dependencyMetadata = new LinkedHashSet<>(dependencyMetadata.getMetadata(true));
102-
this.secondaryDependencyMetadata = new LinkedHashSet<>(dependencyMetadata.getMetadata(false));
110+
this.dependencyMetadata = new LinkedHashSet<>(
111+
dependencyMetadata.getDependencyMetadata(DependencyMetadataType.SEED));
112+
this.secondaryDependencyMetadata = new LinkedHashSet<>(
113+
dependencyMetadata.getDependencyMetadata(DependencyMetadataType.RESOLVE));
103114
}
104115

105116
@Override
106-
public void setDependencyMetadata(boolean primary, Set<?> installableUnits) {
107-
if (primary)
108-
this.dependencyMetadata = installableUnits;
109-
else
110-
this.secondaryDependencyMetadata = installableUnits;
117+
public void setDependencyMetadata(DependencyMetadataType type, Collection<?> units) {
118+
if (type == DependencyMetadataType.SEED)
119+
this.dependencyMetadata = new LinkedHashSet<>(units);
120+
else if (type == DependencyMetadataType.RESOLVE)
121+
this.secondaryDependencyMetadata = new LinkedHashSet<>(units);
111122
}
112123

113124
// TODO share with real implementation?
114125
@Override
115126
public Set<?> getDependencyMetadata() {
116-
Set<?> primary = getDependencyMetadata(true);
117-
Set<?> secondary = getDependencyMetadata(false);
127+
Set<?> primary = getDependencyMetadata(DependencyMetadataType.SEED);
128+
Set<?> secondary = getDependencyMetadata(DependencyMetadataType.RESOLVE);
118129

119130
if (primary == null) {
120131
return secondary;
@@ -185,4 +196,5 @@ public String getName() {
185196
// TODO implement
186197
throw new UnsupportedOperationException();
187198
}
199+
188200
}

tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java

+18-16
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ public void testGenerateSourceBundleMetadata() throws Exception {
5454
DependencyMetadataGenerator p2GeneratorImpl = new SourcesBundleDependencyMetadataGenerator();
5555
File location = new File("resources/generator/bundle").getCanonicalFile();
5656
ArtifactMock artifactMock = new ArtifactMock(location, "org.acme", "foo", "0.0.1", "eclipse-plugin");
57-
Set<Object> units = p2GeneratorImpl
58-
.generateMetadata(artifactMock, getEnvironments(), null, new PublisherOptions(false)).getMetadata();
57+
Set<?> units = p2GeneratorImpl
58+
.generateMetadata(artifactMock, getEnvironments(), null, new PublisherOptions(false))
59+
.getDependencyMetadata();
5960
assertEquals(1, units.size());
6061
IInstallableUnit sourceBundleUnit = getUnit("foo.source", units);
6162
assertNotNull(sourceBundleUnit);
@@ -76,16 +77,17 @@ public void generateSourceBundleMetadataForProjectWithP2Inf() throws Exception {
7677
DependencyMetadataGenerator p2GeneratorImpl = new SourcesBundleDependencyMetadataGenerator();
7778
File location = new File("resources/generator/bundle-p2-inf").getCanonicalFile();
7879
ArtifactMock artifactMock = new ArtifactMock(location, "org.acme", "foo", "0.0.1", "eclipse-plugin");
79-
Set<Object> units = p2GeneratorImpl
80-
.generateMetadata(artifactMock, getEnvironments(), null, new PublisherOptions(false)).getMetadata();
80+
Set<?> units = p2GeneratorImpl
81+
.generateMetadata(artifactMock, getEnvironments(), null, new PublisherOptions(false))
82+
.getDependencyMetadata();
8183

8284
assertEquals(1, units.size());
8385

8486
IInstallableUnit unit = getUnit("foo.source", units);
8587
assertEquals(0, unit.getRequirements().size());
8688
}
8789

88-
private IInstallableUnit getUnit(String id, Set<Object> units) {
90+
private IInstallableUnit getUnit(String id, Set<?> units) {
8991
for (Object obj : units) {
9092
IInstallableUnit unit = (IInstallableUnit) obj;
9193
if (id.equals(unit.getId())) {
@@ -106,7 +108,7 @@ public void testOptionalImportPackage_REQUIRE() throws Exception {
106108
ArtifactMock artifactMock = new ArtifactMock(location, "optional-import-package", "optional-import-package",
107109
"0.0.1", "eclipse-plugin");
108110
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(),
109-
OptionalResolutionAction.REQUIRE, new PublisherOptions()).getMetadata();
111+
OptionalResolutionAction.REQUIRE, new PublisherOptions()).getDependencyMetadata();
110112
assertEquals(1, units.size());
111113
IInstallableUnit iu = getUnit("optional-import-package", units);
112114
assertNotNull(iu);
@@ -132,8 +134,8 @@ public void testOptionalImportPackage_IGNORE() throws Exception {
132134
File location = new File("resources/generator/optional-import-package").getCanonicalFile();
133135
ArtifactMock artifactMock = new ArtifactMock(location, "optional-import-package", "optional-import-package",
134136
"0.0.1", "eclipse-plugin");
135-
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.IGNORE,
136-
new PublisherOptions()).getMetadata();
137+
Set<?> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.IGNORE,
138+
new PublisherOptions()).getDependencyMetadata();
137139
assertEquals(1, units.size());
138140
IInstallableUnit iu = getUnit("optional-import-package", units);
139141
assertNotNull(iu);
@@ -147,8 +149,8 @@ public void testOptionalRequireBundle_REQUIRE() throws Exception {
147149
File location = new File("resources/generator/optional-require-bundle").getCanonicalFile();
148150
ArtifactMock artifactMock = new ArtifactMock(location, "optional-require-bundle", "optional-require-bundle",
149151
"0.0.1", "eclipse-plugin");
150-
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(),
151-
OptionalResolutionAction.REQUIRE, new PublisherOptions()).getMetadata();
152+
Set<?> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.REQUIRE,
153+
new PublisherOptions()).getDependencyMetadata();
152154
assertEquals(1, units.size());
153155
IInstallableUnit iu = getUnit("optional-require-bundle", units);
154156
assertNotNull(iu);
@@ -168,8 +170,8 @@ public void testOptionalRequireBundle_OPTIONAL() throws Exception {
168170
File location = new File("resources/generator/optional-require-bundle").getCanonicalFile();
169171
ArtifactMock artifactMock = new ArtifactMock(location, "optional-require-bundle", "optional-require-bundle",
170172
"0.0.1", "eclipse-plugin");
171-
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(),
172-
OptionalResolutionAction.OPTIONAL, new PublisherOptions()).getMetadata();
173+
Set<?> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.OPTIONAL,
174+
new PublisherOptions()).getDependencyMetadata();
173175
assertEquals(1, units.size());
174176
IInstallableUnit iu = getUnit("optional-require-bundle", units);
175177
assertNotNull(iu);
@@ -189,8 +191,8 @@ public void testOptionalRequireBundle_IGNORE() throws Exception {
189191
File location = new File("resources/generator/optional-require-bundle").getCanonicalFile();
190192
ArtifactMock artifactMock = new ArtifactMock(location, "optional-require-bundle", "optional-require-bundle",
191193
"0.0.1", "eclipse-plugin");
192-
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.IGNORE,
193-
new PublisherOptions()).getMetadata();
194+
Set<?> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.IGNORE,
195+
new PublisherOptions()).getDependencyMetadata();
194196
assertEquals(1, units.size());
195197
IInstallableUnit iu = getUnit("optional-require-bundle", units);
196198
assertNotNull(iu);
@@ -204,8 +206,8 @@ public void testOptionalRequireBundleP2inf_REQUIRE() throws Exception {
204206
File location = new File("resources/generator/optional-reqiure-bundle-p2inf").getCanonicalFile();
205207
ArtifactMock artifactMock = new ArtifactMock(location, "optional-reqiure-bundle-p2inf",
206208
"optional-reqiure-bundle-p2inf", "0.0.1", "eclipse-plugin");
207-
Set<Object> units = generator.generateMetadata(artifactMock, getEnvironments(),
208-
OptionalResolutionAction.REQUIRE, new PublisherOptions()).getMetadata();
209+
Set<?> units = generator.generateMetadata(artifactMock, getEnvironments(), OptionalResolutionAction.REQUIRE,
210+
new PublisherOptions()).getDependencyMetadata();
209211
assertEquals(1, units.size());
210212
IInstallableUnit iu = getUnit("optional-reqiure-bundle-p2inf", units);
211213
assertNotNull(iu);

tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/resolver/P2ResolverTestBase.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.ArrayList;
1818
import java.util.List;
1919

20+
import org.eclipse.tycho.IDependencyMetadata;
2021
import org.eclipse.tycho.ReactorProject;
2122
import org.eclipse.tycho.core.resolver.shared.OptionalResolutionAction;
2223
import org.eclipse.tycho.core.shared.TargetEnvironment;
@@ -25,7 +26,6 @@
2526
import org.eclipse.tycho.p2.impl.publisher.P2GeneratorImpl;
2627
import org.eclipse.tycho.p2.impl.test.ArtifactMock;
2728
import org.eclipse.tycho.p2.impl.test.ReactorProjectStub;
28-
import org.eclipse.tycho.p2.metadata.IDependencyMetadata;
2929
import org.eclipse.tycho.p2.metadata.PublisherOptions;
3030
import org.eclipse.tycho.p2.resolver.facade.P2Resolver;
3131
import org.eclipse.tycho.p2.target.PomDependencyCollectorImpl;

tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/target/TargetPlatformFactoryTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
4040
import org.eclipse.equinox.p2.metadata.IVersionedId;
41+
import org.eclipse.tycho.IDependencyMetadata.DependencyMetadataType;
4142
import org.eclipse.tycho.ReactorProject;
4243
import org.eclipse.tycho.ReactorProjectIdentities;
4344
import org.eclipse.tycho.artifacts.TargetPlatformFilter;
@@ -308,8 +309,8 @@ private ReactorProject createReactorProject(String artifactId, String[] primaryU
308309
ReactorProjectStub result = new ReactorProjectStub(basedir, artifactId);
309310

310311
DependencyMetadata dependencyMetadata = new DependencyMetadata();
311-
dependencyMetadata.setMetadata(true, createUnits(primaryUnitIds));
312-
dependencyMetadata.setMetadata(false, createUnits(secondaryUnitIds));
312+
dependencyMetadata.setDependencyMetadata(DependencyMetadataType.SEED, createUnits(primaryUnitIds));
313+
dependencyMetadata.setDependencyMetadata(DependencyMetadataType.RESOLVE, createUnits(secondaryUnitIds));
313314
result.setDependencyMetadata(dependencyMetadata);
314315

315316
return result;

tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/AbstractMetadataGenerator.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.eclipse.equinox.p2.publisher.PublisherResult;
3737
import org.eclipse.equinox.p2.publisher.actions.ICapabilityAdvice;
3838
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
39+
import org.eclipse.tycho.IDependencyMetadata.DependencyMetadataType;
3940
import org.eclipse.tycho.core.resolver.shared.OptionalResolutionAction;
4041
import org.eclipse.tycho.core.shared.BuildProperties;
4142
import org.eclipse.tycho.core.shared.BuildPropertiesParser;
@@ -130,8 +131,8 @@ private DependencyMetadata publish(PublisherInfo publisherInfo, List<IPublisherA
130131

131132
DependencyMetadata metadata = new DependencyMetadata();
132133

133-
metadata.setMetadata(true, result.getIUs(null, PublisherResult.ROOT));
134-
metadata.setMetadata(false, result.getIUs(null, PublisherResult.NON_ROOT));
134+
metadata.setDependencyMetadata(DependencyMetadataType.SEED, result.getIUs(null, PublisherResult.ROOT));
135+
metadata.setDependencyMetadata(DependencyMetadataType.RESOLVE, result.getIUs(null, PublisherResult.NON_ROOT));
135136

136137
IArtifactRepository artifactRepository = publisherInfo.getArtifactRepository();
137138
if (artifactRepository instanceof TransientArtifactRepository) {

tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/DefaultDependencyMetadataGenerator.java

+1
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ public DependencyMetadata generateMetadata(IArtifactFacade artifact, List<Target
3333
OptionalResolutionAction optionalAction, PublisherOptions options) {
3434
return super.generateMetadata(artifact, environments, new PublisherInfo(), optionalAction, options);
3535
}
36+
3637
}

0 commit comments

Comments
 (0)