mirror of
https://github.com/apple/pkl.git
synced 2026-04-18 14:39:54 +02:00
Convert org.pkl.core.project POJOs to record classes (#749)
This commit is contained in:
@@ -70,7 +70,7 @@ public final class ProjectDependenciesManager {
|
||||
SecurityManager securityManager) {
|
||||
this.declaredDependencies = declaredDependencies;
|
||||
// new URI("scheme://host/a/b/c.txt").resolve(".") == new URI("scheme://host/a/b/")
|
||||
this.projectBaseUri = IoUtils.resolve(declaredDependencies.getProjectFileUri(), ".");
|
||||
this.projectBaseUri = IoUtils.resolve(declaredDependencies.projectFileUri(), ".");
|
||||
this.moduleResolver = moduleResolver;
|
||||
this.securityManager = securityManager;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public final class ProjectDependenciesManager {
|
||||
}
|
||||
var projectDeps = getProjectDeps();
|
||||
myDependencies = doBuildResolvedDependenciesForProject(declaredDependencies, projectDeps);
|
||||
for (var localPkg : declaredDependencies.getLocalDependencies().values()) {
|
||||
for (var localPkg : declaredDependencies.localDependencies().values()) {
|
||||
ensureLocalProjectDependencyInitialized(localPkg, projectDeps);
|
||||
}
|
||||
}
|
||||
@@ -97,14 +97,14 @@ public final class ProjectDependenciesManager {
|
||||
private void ensureLocalProjectDependencyInitialized(
|
||||
DeclaredDependencies localProjectDependencies, ProjectDeps projectDeps) {
|
||||
// turn `package:` scheme into `projectpackage`: scheme
|
||||
var uri = PackageUri.create("project" + localProjectDependencies.getMyPackageUri());
|
||||
var uri = PackageUri.create("project" + localProjectDependencies.myPackageUri());
|
||||
if (localPackageDependencies.containsKey(uri)) {
|
||||
return;
|
||||
}
|
||||
var resolvedDeps = doBuildResolvedDependenciesForProject(localProjectDependencies, projectDeps);
|
||||
localPackageDependencies.put(uri, resolvedDeps);
|
||||
// TODO: check circular imports (should not be possible)
|
||||
for (var declaredDeps : localProjectDependencies.getLocalDependencies().values()) {
|
||||
for (var declaredDeps : localProjectDependencies.localDependencies().values()) {
|
||||
ensureLocalProjectDependencyInitialized(declaredDeps, projectDeps);
|
||||
}
|
||||
}
|
||||
@@ -124,22 +124,21 @@ public final class ProjectDependenciesManager {
|
||||
DeclaredDependencies declaredDeps, ProjectDeps resolvedProjectDeps) {
|
||||
var ret =
|
||||
new HashMap<String, Dependency>(
|
||||
declaredDeps.getRemoteDependencies().size()
|
||||
+ declaredDeps.getLocalDependencies().size());
|
||||
for (var entry : declaredDeps.getLocalDependencies().entrySet()) {
|
||||
declaredDeps.remoteDependencies().size() + declaredDeps.localDependencies().size());
|
||||
for (var entry : declaredDeps.localDependencies().entrySet()) {
|
||||
var localDeclaredDependencies = entry.getValue();
|
||||
var packageUri = localDeclaredDependencies.getMyPackageUri();
|
||||
var packageUri = localDeclaredDependencies.myPackageUri();
|
||||
assert packageUri != null;
|
||||
var canonicalPackageUri =
|
||||
CanonicalPackageUri.fromPackageUri(localDeclaredDependencies.getMyPackageUri());
|
||||
CanonicalPackageUri.fromPackageUri(localDeclaredDependencies.myPackageUri());
|
||||
var resolvedDep = resolvedProjectDeps.get(canonicalPackageUri);
|
||||
if (resolvedDep == null) {
|
||||
throw new PackageLoadError("unresolvedProjectDependency", packageUri);
|
||||
}
|
||||
checkProjectDependencyOutOfDate(declaredDeps.getProjectFileUri(), packageUri, resolvedDep);
|
||||
checkProjectDependencyOutOfDate(declaredDeps.projectFileUri(), packageUri, resolvedDep);
|
||||
ret.put(entry.getKey(), resolvedDep);
|
||||
}
|
||||
for (var entry : declaredDeps.getRemoteDependencies().entrySet()) {
|
||||
for (var entry : declaredDeps.remoteDependencies().entrySet()) {
|
||||
var remoteDep = entry.getValue();
|
||||
var packageUri = CanonicalPackageUri.fromPackageUri(remoteDep.getPackageUri());
|
||||
var resolvedDep = resolvedProjectDeps.get(packageUri);
|
||||
@@ -147,7 +146,7 @@ public final class ProjectDependenciesManager {
|
||||
throw new PackageLoadError("unresolvedProjectDependency", entry.getValue().getPackageUri());
|
||||
}
|
||||
checkProjectDependencyOutOfDate(
|
||||
declaredDeps.getProjectFileUri(), remoteDep.getPackageUri(), resolvedDep);
|
||||
declaredDeps.projectFileUri(), remoteDep.getPackageUri(), resolvedDep);
|
||||
ret.put(entry.getKey(), resolvedDep);
|
||||
}
|
||||
return ret;
|
||||
@@ -220,7 +219,7 @@ public final class ProjectDependenciesManager {
|
||||
}
|
||||
|
||||
public URI getProjectFileUri() {
|
||||
return declaredDependencies.getProjectFileUri();
|
||||
return declaredDependencies.projectFileUri();
|
||||
}
|
||||
|
||||
private ProjectDeps getProjectDeps() {
|
||||
|
||||
@@ -17,7 +17,6 @@ package org.pkl.core.project;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.Objects;
|
||||
import org.pkl.core.PklBugException;
|
||||
import org.pkl.core.packages.PackageUri;
|
||||
import org.pkl.core.util.ErrorMessages;
|
||||
@@ -29,10 +28,7 @@ import org.pkl.core.util.ErrorMessages;
|
||||
* package://example.com/foo/bar@0}. Does not include a URI's userinfo, query params or fragment
|
||||
* segments.
|
||||
*/
|
||||
public final class CanonicalPackageUri {
|
||||
private final URI baseUri;
|
||||
private final int majorVersion;
|
||||
|
||||
public record CanonicalPackageUri(URI baseUri, int majorVersion) {
|
||||
public static CanonicalPackageUri fromPackageUri(PackageUri packageUri) {
|
||||
var uri = packageUri.getUri();
|
||||
URI baseUri;
|
||||
@@ -71,17 +67,18 @@ public final class CanonicalPackageUri {
|
||||
return new CanonicalPackageUri(baseUri, majorVersion);
|
||||
}
|
||||
|
||||
public CanonicalPackageUri(URI baseUri, int majorVersion) {
|
||||
this.baseUri = baseUri;
|
||||
this.majorVersion = majorVersion;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #majorVersion()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public int getMajorVersion() {
|
||||
return majorVersion;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #baseUri()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public URI getBaseUri() {
|
||||
return baseUri;
|
||||
}
|
||||
@@ -98,11 +95,6 @@ public final class CanonicalPackageUri {
|
||||
return majorVersion == that.majorVersion && baseUri.equals(that.baseUri);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(baseUri, majorVersion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return baseUri + "@" + majorVersion;
|
||||
|
||||
@@ -21,35 +21,39 @@ import org.pkl.core.packages.Dependency.RemoteDependency;
|
||||
import org.pkl.core.packages.PackageUri;
|
||||
import org.pkl.core.util.Nullable;
|
||||
|
||||
public final class DeclaredDependencies {
|
||||
private final Map<String, RemoteDependency> remoteDependencies;
|
||||
private final Map<String, DeclaredDependencies> localDependencies;
|
||||
private final URI projectFileUri;
|
||||
private final @Nullable PackageUri myPackageUri;
|
||||
|
||||
public DeclaredDependencies(
|
||||
Map<String, RemoteDependency> remoteDependencies,
|
||||
Map<String, DeclaredDependencies> localDependencies,
|
||||
URI projectFileUri,
|
||||
@Nullable PackageUri myPackageUri) {
|
||||
this.remoteDependencies = remoteDependencies;
|
||||
this.localDependencies = localDependencies;
|
||||
this.projectFileUri = projectFileUri;
|
||||
this.myPackageUri = myPackageUri;
|
||||
}
|
||||
|
||||
public record DeclaredDependencies(
|
||||
Map<String, RemoteDependency> remoteDependencies,
|
||||
Map<String, DeclaredDependencies> localDependencies,
|
||||
URI projectFileUri,
|
||||
@Nullable PackageUri myPackageUri) {
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #localDependencies()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Map<String, DeclaredDependencies> getLocalDependencies() {
|
||||
return localDependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #remoteDependencies()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Map<String, RemoteDependency> getRemoteDependencies() {
|
||||
return remoteDependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #projectFileUri()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public URI getProjectFileUri() {
|
||||
return projectFileUri;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #myPackageUri()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable PackageUri getMyPackageUri() {
|
||||
return myPackageUri;
|
||||
}
|
||||
|
||||
@@ -18,209 +18,145 @@ package org.pkl.core.project;
|
||||
import java.net.URI;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import org.pkl.core.Version;
|
||||
import org.pkl.core.packages.PackageUri;
|
||||
import org.pkl.core.util.Nullable;
|
||||
|
||||
/** Java representation of class {@code pkl.Project#Package} */
|
||||
@SuppressWarnings("unused")
|
||||
public final class Package {
|
||||
|
||||
private final String name;
|
||||
private final PackageUri uri;
|
||||
private final Version version;
|
||||
private final URI packageZipUrl;
|
||||
private final @Nullable String description;
|
||||
private final List<String> authors;
|
||||
private final @Nullable URI website;
|
||||
private final @Nullable URI documentation;
|
||||
private final @Nullable URI sourceCode;
|
||||
private final @Nullable String sourceCodeUrlScheme;
|
||||
private final @Nullable String license;
|
||||
private final @Nullable String licenseText;
|
||||
private final @Nullable URI issueTracker;
|
||||
private final List<Path> apiTests;
|
||||
private final List<String> exclude;
|
||||
|
||||
public Package(
|
||||
String name,
|
||||
PackageUri uri,
|
||||
Version version,
|
||||
URI packageZipUrl,
|
||||
@Nullable String description,
|
||||
List<String> authors,
|
||||
@Nullable URI website,
|
||||
@Nullable URI documentation,
|
||||
@Nullable URI sourceCode,
|
||||
@Nullable String sourceCodeUrlScheme,
|
||||
@Nullable String license,
|
||||
@Nullable String licenseText,
|
||||
@Nullable URI issueTracker,
|
||||
List<Path> apiTests,
|
||||
List<String> exclude) {
|
||||
this.name = name;
|
||||
this.uri = uri;
|
||||
this.version = version;
|
||||
this.packageZipUrl = packageZipUrl;
|
||||
this.description = description;
|
||||
this.authors = authors;
|
||||
this.website = website;
|
||||
this.documentation = documentation;
|
||||
this.sourceCode = sourceCode;
|
||||
this.sourceCodeUrlScheme = sourceCodeUrlScheme;
|
||||
this.license = license;
|
||||
this.licenseText = licenseText;
|
||||
this.issueTracker = issueTracker;
|
||||
this.apiTests = apiTests;
|
||||
this.exclude = exclude;
|
||||
}
|
||||
|
||||
public record Package(
|
||||
String name,
|
||||
PackageUri uri,
|
||||
Version version,
|
||||
URI packageZipUrl,
|
||||
@Nullable String description,
|
||||
List<String> authors,
|
||||
@Nullable URI website,
|
||||
@Nullable URI documentation,
|
||||
@Nullable URI sourceCode,
|
||||
@Nullable String sourceCodeUrlScheme,
|
||||
@Nullable String license,
|
||||
@Nullable String licenseText,
|
||||
@Nullable URI issueTracker,
|
||||
List<Path> apiTests,
|
||||
List<String> exclude) {
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #name()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #uri()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public PackageUri getUri() {
|
||||
return uri;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #version()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Version getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #packageZipUrl()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public URI getPackageZipUrl() {
|
||||
return packageZipUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #description()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #authors()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public List<String> getAuthors() {
|
||||
return authors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #website()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable URI getWebsite() {
|
||||
return website;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #documentation()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable URI getDocumentation() {
|
||||
return documentation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #sourceCode()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable URI getSourceCode() {
|
||||
return sourceCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #sourceCodeUrlScheme()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable String getSourceCodeUrlScheme() {
|
||||
return sourceCodeUrlScheme;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #licenseText()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable String getLicenseText() {
|
||||
return licenseText;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #license()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable String getLicense() {
|
||||
return license;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #issueTracker()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public @Nullable URI getIssueTracker() {
|
||||
return issueTracker;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #apiTests()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public List<Path> getApiTests() {
|
||||
return apiTests;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #exclude()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public List<String> getExclude() {
|
||||
return exclude;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Package aPackage = (Package) o;
|
||||
return name.equals(aPackage.name)
|
||||
&& uri.equals(aPackage.uri)
|
||||
&& version.equals(aPackage.version)
|
||||
&& Objects.equals(description, aPackage.description)
|
||||
&& authors.equals(aPackage.authors)
|
||||
&& Objects.equals(website, aPackage.website)
|
||||
&& Objects.equals(documentation, aPackage.documentation)
|
||||
&& Objects.equals(sourceCode, aPackage.sourceCode)
|
||||
&& Objects.equals(sourceCodeUrlScheme, aPackage.sourceCodeUrlScheme)
|
||||
&& Objects.equals(license, aPackage.license)
|
||||
&& Objects.equals(licenseText, aPackage.licenseText)
|
||||
&& Objects.equals(issueTracker, aPackage.issueTracker)
|
||||
&& Objects.equals(apiTests, aPackage.apiTests)
|
||||
&& exclude.equals(aPackage.exclude);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(
|
||||
name,
|
||||
uri,
|
||||
version,
|
||||
description,
|
||||
authors,
|
||||
website,
|
||||
documentation,
|
||||
sourceCode,
|
||||
sourceCodeUrlScheme,
|
||||
license,
|
||||
licenseText,
|
||||
issueTracker,
|
||||
apiTests,
|
||||
exclude);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Package{"
|
||||
+ "name="
|
||||
+ name
|
||||
+ ", uri="
|
||||
+ uri
|
||||
+ ", version='"
|
||||
+ version
|
||||
+ '\''
|
||||
+ ", description='"
|
||||
+ description
|
||||
+ '\''
|
||||
+ ", authors="
|
||||
+ authors
|
||||
+ ", website='"
|
||||
+ website
|
||||
+ ", documentation='"
|
||||
+ documentation
|
||||
+ '\''
|
||||
+ ", sourceCode='"
|
||||
+ sourceCode
|
||||
+ '\''
|
||||
+ ", sourceCodeUrlScheme='"
|
||||
+ sourceCodeUrlScheme
|
||||
+ '\''
|
||||
+ ", license='"
|
||||
+ license
|
||||
+ '\''
|
||||
+ ", licenseText='"
|
||||
+ licenseText
|
||||
+ '\''
|
||||
+ ", issueTracker='"
|
||||
+ issueTracker
|
||||
+ '\''
|
||||
+ ", apiTests='"
|
||||
+ apiTests
|
||||
+ '\''
|
||||
+ ", exclude='"
|
||||
+ exclude
|
||||
+ '\''
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,8 +62,8 @@ public final class ProjectDependenciesResolver {
|
||||
|
||||
public ProjectDeps resolve() {
|
||||
buildResolvedDependencies(project.getDependencies());
|
||||
for (var localProject : project.getDependencies().getLocalDependencies().values()) {
|
||||
var packageUri = localProject.getMyPackageUri();
|
||||
for (var localProject : project.getDependencies().localDependencies().values()) {
|
||||
var packageUri = localProject.myPackageUri();
|
||||
assert packageUri != null;
|
||||
var canonicalUri = CanonicalPackageUri.fromPackageUri(packageUri);
|
||||
var resolvedDependency = resolvedDependencies.get(canonicalUri);
|
||||
@@ -86,11 +86,11 @@ public final class ProjectDependenciesResolver {
|
||||
}
|
||||
|
||||
private void buildResolvedDependencies(DeclaredDependencies declaredDependencies) {
|
||||
for (var dependency : declaredDependencies.getRemoteDependencies().values()) {
|
||||
for (var dependency : declaredDependencies.remoteDependencies().values()) {
|
||||
resolveDependenciesOfPackageUri(
|
||||
dependency.getPackageUri().toProjectPackageUri(), dependency.getChecksums());
|
||||
}
|
||||
for (var localDeclaredDependencies : declaredDependencies.getLocalDependencies().values()) {
|
||||
for (var localDeclaredDependencies : declaredDependencies.localDependencies().values()) {
|
||||
resolveDependencies(localDeclaredDependencies);
|
||||
}
|
||||
}
|
||||
@@ -128,9 +128,9 @@ public final class ProjectDependenciesResolver {
|
||||
}
|
||||
|
||||
private void resolveDependencies(DeclaredDependencies declaredDependencies) {
|
||||
var packageUri = declaredDependencies.getMyPackageUri();
|
||||
var packageUri = declaredDependencies.myPackageUri();
|
||||
assert packageUri != null;
|
||||
var projectDir = Path.of(declaredDependencies.getProjectFileUri()).getParent();
|
||||
var projectDir = Path.of(declaredDependencies.projectFileUri()).getParent();
|
||||
var relativePath = IoUtils.relativize(projectDir, this.project.getProjectDir());
|
||||
var localDependency = new LocalDependency(packageUri.toProjectPackageUri(), relativePath);
|
||||
updateDependency(localDependency);
|
||||
|
||||
@@ -134,10 +134,10 @@ public final class ProjectPackager {
|
||||
public void createPackages() throws IOException {
|
||||
for (var project : projects) {
|
||||
var packageResult = doPackage(project);
|
||||
writeLine(IoUtils.relativize(packageResult.getMetadataFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.getMetadataChecksumFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.getZipFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.getZipChecksumFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.metadataFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.metadataChecksumFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.zipFile(), workingDir).toString());
|
||||
writeLine(IoUtils.relativize(packageResult.zipChecksumFile(), workingDir).toString());
|
||||
outputWriter.flush();
|
||||
}
|
||||
}
|
||||
@@ -145,8 +145,8 @@ public final class ProjectPackager {
|
||||
private Path resolveOutputDirectory(Package pkg) {
|
||||
var substituted =
|
||||
outputPathPattern
|
||||
.replace("%{name}", pkg.getName())
|
||||
.replace("%{version}", pkg.getVersion().toString());
|
||||
.replace("%{name}", pkg.name())
|
||||
.replace("%{version}", pkg.version().toString());
|
||||
return workingDir.resolve(substituted);
|
||||
}
|
||||
|
||||
@@ -156,13 +156,13 @@ public final class ProjectPackager {
|
||||
throw new PklException(
|
||||
ErrorMessages.create("noPackageDefinedByProject", project.getProjectFileUri()));
|
||||
}
|
||||
if (packageResults.containsKey(pkg.getUri())) {
|
||||
return packageResults.get(pkg.getUri());
|
||||
if (packageResults.containsKey(pkg.uri())) {
|
||||
return packageResults.get(pkg.uri());
|
||||
}
|
||||
var files = collectPackageElements(project, pkg);
|
||||
validatePklImportsAndReads(project, files);
|
||||
var outputDir = resolveOutputDirectory(pkg);
|
||||
var metadataFileName = IoUtils.takeLastSegment(pkg.getUri().getUri().getPath(), '/');
|
||||
var metadataFileName = IoUtils.takeLastSegment(pkg.uri().getUri().getPath(), '/');
|
||||
var metadataFile = outputDir.resolve(metadataFileName);
|
||||
var metadataChecksumFile = outputDir.resolve(metadataFileName + ".sha256");
|
||||
var zipFile = outputDir.resolve(metadataFileName + ".zip");
|
||||
@@ -178,21 +178,20 @@ public final class ProjectPackager {
|
||||
var result =
|
||||
new PackageResult(
|
||||
metadataFile, metadataChecksumFile, zipFile, zipChecksumFile, metadataFileChecksum);
|
||||
packageResults.put(pkg.getUri(), result);
|
||||
packageResults.put(pkg.uri(), result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void checkAlreadyPublishedPackage(Package pkg, String computedChecksum)
|
||||
throws IOException {
|
||||
try {
|
||||
var metadataAndChecksum =
|
||||
packageResolver.getDependencyMetadataAndComputeChecksum(pkg.getUri());
|
||||
var metadataAndChecksum = packageResolver.getDependencyMetadataAndComputeChecksum(pkg.uri());
|
||||
var receivedChecksum = metadataAndChecksum.second.getSha256();
|
||||
if (!receivedChecksum.equals(computedChecksum)) {
|
||||
throw new PklException(
|
||||
ErrorMessages.create(
|
||||
"packageAlreadyPublishedWithDifferentContents",
|
||||
pkg.getUri(),
|
||||
pkg.uri(),
|
||||
computedChecksum,
|
||||
receivedChecksum));
|
||||
}
|
||||
@@ -204,8 +203,8 @@ public final class ProjectPackager {
|
||||
throw new PklException(
|
||||
ErrorMessages.create(
|
||||
"unableToAccessPublishedPackage",
|
||||
pkg.getName(),
|
||||
pkg.getPackageZipUrl(),
|
||||
pkg.name(),
|
||||
pkg.packageZipUrl(),
|
||||
e.getArguments()[0]));
|
||||
}
|
||||
}
|
||||
@@ -229,15 +228,15 @@ public final class ProjectPackager {
|
||||
try {
|
||||
var ret =
|
||||
new HashMap<String, RemoteDependency>(
|
||||
project.getDependencies().getLocalDependencies().size()
|
||||
+ project.getDependencies().getRemoteDependencies().size());
|
||||
project.getDependencies().localDependencies().size()
|
||||
+ project.getDependencies().remoteDependencies().size());
|
||||
// module resolver is only used for reading PklProject.deps.json, so provide one that reads
|
||||
// files.
|
||||
var moduleResolver = new ModuleResolver(List.of(ModuleKeyFactories.file));
|
||||
var projectDependenciesManager =
|
||||
new ProjectDependenciesManager(
|
||||
project.getDependencies(), moduleResolver, this.securityManager);
|
||||
for (var entry : project.getDependencies().getRemoteDependencies().entrySet()) {
|
||||
for (var entry : project.getDependencies().remoteDependencies().entrySet()) {
|
||||
var resolved =
|
||||
(RemoteDependency)
|
||||
projectDependenciesManager.getResolvedDependency(entry.getValue().getPackageUri());
|
||||
@@ -249,7 +248,7 @@ public final class ProjectPackager {
|
||||
for (var entry : project.getLocalProjectDependencies().entrySet()) {
|
||||
var localProject = entry.getValue();
|
||||
assert localProject.getPackage() != null;
|
||||
var packageUri = localProject.getPackage().getUri();
|
||||
var packageUri = localProject.getPackage().uri();
|
||||
var resolved = projectDependenciesManager.getResolvedDependency(packageUri);
|
||||
if (resolved instanceof LocalDependency) {
|
||||
var packageResult = doPackage(localProject);
|
||||
@@ -257,7 +256,7 @@ public final class ProjectPackager {
|
||||
entry.getKey(),
|
||||
new RemoteDependency(
|
||||
packageUri.toExternalPackageUri(),
|
||||
new Checksums(packageResult.getMetadataChecksum())));
|
||||
new Checksums(packageResult.metadataChecksum())));
|
||||
} else {
|
||||
var remoteDep = (RemoteDependency) resolved;
|
||||
ret.put(
|
||||
@@ -278,20 +277,20 @@ public final class ProjectPackager {
|
||||
private DependencyMetadata createDependencyMetadata(
|
||||
Project project, Package pkg, String packageZipChecksum) throws IOException {
|
||||
return new DependencyMetadata(
|
||||
pkg.getName(),
|
||||
pkg.getUri(),
|
||||
pkg.getVersion(),
|
||||
pkg.getPackageZipUrl(),
|
||||
pkg.name(),
|
||||
pkg.uri(),
|
||||
pkg.version(),
|
||||
pkg.packageZipUrl(),
|
||||
new Checksums(packageZipChecksum),
|
||||
buildDependencies(project),
|
||||
pkg.getSourceCodeUrlScheme(),
|
||||
pkg.getSourceCode(),
|
||||
pkg.getDocumentation(),
|
||||
pkg.getLicense(),
|
||||
pkg.getLicenseText(),
|
||||
pkg.getAuthors(),
|
||||
pkg.getIssueTracker(),
|
||||
pkg.getDescription(),
|
||||
pkg.sourceCodeUrlScheme(),
|
||||
pkg.sourceCode(),
|
||||
pkg.documentation(),
|
||||
pkg.license(),
|
||||
pkg.licenseText(),
|
||||
pkg.authors(),
|
||||
pkg.issueTracker(),
|
||||
pkg.description(),
|
||||
project.getAnnotations());
|
||||
}
|
||||
|
||||
@@ -343,7 +342,7 @@ public final class ProjectPackager {
|
||||
|
||||
private List<Pattern> getExcludePatterns(Package pkg) {
|
||||
var excludePatterns = new ArrayList<Pattern>();
|
||||
for (String s : pkg.getExclude()) {
|
||||
for (String s : pkg.exclude()) {
|
||||
try {
|
||||
excludePatterns.add(GlobResolver.toRegexPattern(s));
|
||||
} catch (InvalidGlobPatternException e) {
|
||||
@@ -452,42 +451,48 @@ public final class ProjectPackager {
|
||||
}
|
||||
}
|
||||
|
||||
public static class PackageResult {
|
||||
private final Path zipFile;
|
||||
private final Path zipChecksumFile;
|
||||
private final Path metadataFile;
|
||||
private final Path metadataChecksumFile;
|
||||
private final String metadataChecksum;
|
||||
|
||||
public PackageResult(
|
||||
Path zipFile,
|
||||
Path zipChecksumFile,
|
||||
Path metadataFile,
|
||||
Path metadataChecksumFile,
|
||||
String metadataChecksum) {
|
||||
this.zipFile = zipFile;
|
||||
this.zipChecksumFile = zipChecksumFile;
|
||||
this.metadataFile = metadataFile;
|
||||
this.metadataChecksumFile = metadataChecksumFile;
|
||||
this.metadataChecksum = metadataChecksum;
|
||||
}
|
||||
|
||||
public record PackageResult(
|
||||
Path zipFile,
|
||||
Path zipChecksumFile,
|
||||
Path metadataFile,
|
||||
Path metadataChecksumFile,
|
||||
String metadataChecksum) {
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #zipFile()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Path getZipFile() {
|
||||
return zipFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #zipChecksumFile()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Path getZipChecksumFile() {
|
||||
return zipChecksumFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #metadataFile()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Path getMetadataFile() {
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #metadataChecksumFile()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public Path getMetadataChecksumFile() {
|
||||
return metadataChecksumFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated As of 0.28.0, replaced by {@link #metadataChecksum()}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public String getMetadataChecksum() {
|
||||
return metadataChecksum;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user