Skip to content

Commit 9797f91

Browse files
committed
Track Java.Interop.Tools.Maven changes.
1 parent e52cc13 commit 9797f91

File tree

4 files changed

+22
-26
lines changed

4 files changed

+22
-26
lines changed

external/xamarin-android-tools

src/Xamarin.Android.Build.Tasks/Tasks/JavaDependencyVerification.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public override bool RunTask ()
9595
return !Log.HasLoggedErrors;
9696
}
9797

98-
static bool TryResolveProject (Artifact artifact, IPomResolver resolver, [NotNullWhen (true)]out ResolvedProject? project)
98+
static bool TryResolveProject (Artifact artifact, IProjectResolver resolver, [NotNullWhen (true)]out ResolvedProject? project)
9999
{
100100
// ResolvedProject.FromArtifact will throw if a POM cannot be resolved, but our MSBuildLoggingPomResolver
101101
// has already logged the failure as an MSBuild error. We don't want to log it again as an unhandled exception.
@@ -135,7 +135,7 @@ public bool EnsureDependencySatisfied (ResolvedDependency dependency, MicrosoftN
135135
return true;
136136

137137
var suggestion = packages.GetNuGetPackage ($"{dependency.GroupId}:{dependency.ArtifactId}");
138-
var artifact_spec = dependency.ToArtifactString (dependency.Version.HasValue ());
138+
var artifact_spec = dependency.Version.HasValue () ? dependency.VersionedArtifactString : dependency.ArtifactString;
139139

140140
if (suggestion is string nuget)
141141
log.LogCodedError ("XA4242", Properties.Resources.XA4242, artifact_spec, nuget);
@@ -157,7 +157,7 @@ public void AddAndroidLibraries (ITaskItem []? tasks)
157157

158158
if (version != null && MavenExtensions.TryParseArtifactWithVersion (id, version, log, out var art)) {
159159
log.LogMessage ("Found Java dependency '{0}:{1}' version '{2}' from AndroidLibrary '{3}'", art.GroupId, art.Id, art.Version, task.ItemSpec);
160-
artifacts.Add (art.ToGroupAndArtifactId (), art);
160+
artifacts.Add (art.ArtifactString, art);
161161
}
162162
}
163163
}
@@ -168,7 +168,7 @@ public void AddPackageReferences (ITaskItem []? tasks)
168168

169169
// See if JavaArtifact/JavaVersion overrides were used
170170
if (task.TryParseJavaArtifactAndJavaVersion ("PackageReference", log, out var explicit_artifact, out var attributes_specified)) {
171-
artifacts.Add (explicit_artifact.ToGroupAndArtifactId (), explicit_artifact);
171+
artifacts.Add (explicit_artifact.ArtifactString, explicit_artifact);
172172
continue;
173173
}
174174

@@ -181,7 +181,7 @@ public void AddPackageReferences (ITaskItem []? tasks)
181181

182182
if (artifact != null) {
183183
log.LogMessage ("Found Java dependency '{0}:{1}' version '{2}' from PackageReference '{3}'", artifact.GroupId, artifact.Id, artifact.Version, task.ItemSpec);
184-
artifacts.Add (artifact.ToGroupAndArtifactId (), artifact);
184+
artifacts.Add (artifact.ArtifactString, artifact);
185185

186186
continue;
187187
}
@@ -195,7 +195,7 @@ public void AddProjectReferences (ITaskItem []? tasks)
195195
foreach (var task in tasks.OrEmpty ()) {
196196
// See if JavaArtifact/JavaVersion overrides were used
197197
if (task.TryParseJavaArtifactAndJavaVersion ("ProjectReference", log, out var explicit_artifact, out var attributes_specified)) {
198-
artifacts.Add (explicit_artifact.ToGroupAndArtifactId (), explicit_artifact);
198+
artifacts.Add (explicit_artifact.ArtifactString, explicit_artifact);
199199
continue;
200200
}
201201

@@ -219,26 +219,26 @@ public void AddIgnoredDependencies (ITaskItem []? tasks)
219219

220220
if (version != null && MavenExtensions.TryParseArtifactWithVersion (id, version, log, out var art)) {
221221
log.LogMessage ("Ignoring Java dependency '{0}:{1}' version '{2}'", art.GroupId, art.Id, art.Version);
222-
artifacts.Add (art.ToGroupAndArtifactId (), art);
222+
artifacts.Add (art.ArtifactString, art);
223223
}
224224
}
225225
}
226226

227227
bool TrySatisfyDependency (ResolvedDependency dependency)
228228
{
229229
if (!dependency.Version.HasValue ())
230-
return artifacts.ContainsKey (dependency.ToGroupAndArtifactId ());
230+
return artifacts.ContainsKey (dependency.ArtifactString);
231231

232232
var dep_versions = MavenVersionRange.Parse (dependency.Version);
233233

234-
if (artifacts.TryGetValue (dependency.ToGroupAndArtifactId (), out var artifact))
234+
if (artifacts.TryGetValue (dependency.ArtifactString, out var artifact))
235235
return dep_versions.Any (r => r.ContainsVersion (MavenVersion.Parse (artifact.Version)));
236236

237237
return false;
238238
}
239239
}
240240

241-
class MSBuildLoggingPomResolver : IPomResolver
241+
class MSBuildLoggingPomResolver : IProjectResolver
242242
{
243243
readonly TaskLoggingHelper logger;
244244
readonly Dictionary<string, Project> poms = new ();
@@ -272,8 +272,8 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
272272

273273
try {
274274
using (var file = File.OpenRead (filename)) {
275-
var project = Project.Parse (file);
276-
var registered_artifact = Artifact.Parse (project.ToString ());
275+
var project = Project.Load (file);
276+
var registered_artifact = Artifact.Parse (project.VersionedArtifactString);
277277

278278
// Return the registered artifact, preferring any overrides specified in the task item
279279
var final_artifact = new Artifact (
@@ -283,7 +283,7 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
283283
);
284284

285285
// Use index instead of Add to handle duplicates
286-
poms [final_artifact.ToString ()] = project;
286+
poms [final_artifact.VersionedArtifactString] = project;
287287

288288
logger.LogDebugMessage ("Registered POM for artifact '{0}' from '{1}'", final_artifact, filename);
289289

@@ -295,9 +295,9 @@ public MSBuildLoggingPomResolver (TaskLoggingHelper logger)
295295
}
296296
}
297297

298-
public Project ResolveRawProject (Artifact artifact)
298+
public Project Resolve (Artifact artifact)
299299
{
300-
if (poms.TryGetValue (artifact.ToString (), out var project))
300+
if (poms.TryGetValue (artifact.VersionedArtifactString, out var project))
301301
return project;
302302

303303
logger.LogCodedError ("XA4247", Properties.Resources.XA4247, artifact);

src/Xamarin.Android.Build.Tasks/Tasks/MavenDownload.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ public async override System.Threading.Tasks.Task RunTaskAsync ()
110110
var project = ResolvedProject.FromArtifact (artifact, resolver);
111111

112112
// Set the POM file path for _this_ artifact
113-
var primary_pom = resolver.ResolvedPoms [artifact.ToString ()];
113+
var primary_pom = resolver.ResolvedPoms [artifact.VersionedArtifactString];
114114
result.SetMetadata ("Manifest", primary_pom);
115115

116116
Log.LogMessage ("Found POM file '{0}' for Java artifact '{1}'.", primary_pom, artifact);
117117

118118
// Create TaskItems for any other POMs we resolved
119-
foreach (var kv in resolver.ResolvedPoms.Where (k => k.Key != artifact.ToString ())) {
119+
foreach (var kv in resolver.ResolvedPoms.Where (k => k.Key != artifact.VersionedArtifactString)) {
120120

121121
var pom_item = new TaskItem (kv.Value);
122122
var pom_artifact = Artifact.Parse (kv.Key);
@@ -163,7 +163,7 @@ public async override System.Threading.Tasks.Task RunTaskAsync ()
163163

164164
// This wrapper around CachedMavenRepository is used to log the POMs that are resolved.
165165
// We need these on-disk file locations so we can pass them as <AndroidAdditionalJavaManifest> items.
166-
class LoggingPomResolver : IPomResolver
166+
class LoggingPomResolver : IProjectResolver
167167
{
168168
readonly CachedMavenRepository repository;
169169

@@ -174,14 +174,14 @@ public LoggingPomResolver (CachedMavenRepository repository)
174174
this.repository = repository;
175175
}
176176

177-
public Project ResolveRawProject (Artifact artifact)
177+
public Project Resolve (Artifact artifact)
178178
{
179179
if (repository.TryGetFilePath (artifact, $"{artifact.Id}-{artifact.Version}.pom", out var path)) {
180180
using (var stream = File.OpenRead (path)) {
181-
var pom = Project.Parse (stream) ?? throw new InvalidOperationException ($"Could not deserialize POM for {artifact}");
181+
var pom = Project.Load (stream) ?? throw new InvalidOperationException ($"Could not deserialize POM for {artifact}");
182182

183183
// Use index instead of Add to handle duplicates
184-
ResolvedPoms [artifact.ToString ()] = path;
184+
ResolvedPoms [artifact.VersionedArtifactString] = path;
185185

186186
return pom;
187187
}

src/Xamarin.Android.Build.Tasks/Utilities/MavenExtensions.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,4 @@ public static bool TryParseJavaArtifactAndJavaVersion (this ITaskItem task, stri
154154
public static bool IsRuntimeDependency (this ResolvedDependency dependency) => dependency?.Scope != null && dependency.Scope.IndexOf ("runtime", StringComparison.OrdinalIgnoreCase) != -1;
155155

156156
public static bool IsOptional (this ResolvedDependency dependency) => dependency?.Optional != null && dependency.Optional.IndexOf ("true", StringComparison.OrdinalIgnoreCase) != -1;
157-
158-
public static string ToGroupAndArtifactId (this Artifact artifact) => $"{artifact.GroupId}:{artifact.Id}";
159-
160-
public static string ToGroupAndArtifactId (this ResolvedDependency dependency) => $"{dependency.GroupId}:{dependency.ArtifactId}";
161157
}

0 commit comments

Comments
 (0)