diff --git a/src/main/java/org/springframework/data/release/build/BuildConfiguration.java b/src/main/java/org/springframework/data/release/build/BuildConfiguration.java index 43b46bf..ba6ec6d 100644 --- a/src/main/java/org/springframework/data/release/build/BuildConfiguration.java +++ b/src/main/java/org/springframework/data/release/build/BuildConfiguration.java @@ -21,7 +21,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.release.model.SupportedProject; import org.springframework.plugin.core.PluginRegistry; - import org.xmlbeam.XBProjector; import org.xmlbeam.XBProjector.Flags; import org.xmlbeam.config.DefaultXMLFactoriesConfig; diff --git a/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java b/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java index abcd0db..19a1e43 100644 --- a/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java +++ b/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java @@ -57,19 +57,11 @@ import org.springframework.data.release.deployment.DeploymentProperties.MavenCen import org.springframework.data.release.deployment.StagingRepository; import org.springframework.data.release.io.Workspace; import org.springframework.data.release.model.*; -import org.springframework.data.release.utils.HttpBasicCredentials; import org.springframework.data.release.utils.Logger; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.Assert; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; -import org.springframework.web.client.RestTemplate; import org.xmlbeam.ProjectionFactory; import org.xmlbeam.XBProjector; @@ -98,7 +90,6 @@ class MavenBuildSystem implements BuildSystem { Gpg gpg; Environment env; DeploymentProperties deploymentProperties; - RestTemplate restTemplate; static final String REPO_OPENING_TAG = ""; static final String REPO_CLOSING_TAG = ""; @@ -106,7 +97,7 @@ class MavenBuildSystem implements BuildSystem { @Override public BuildSystem withJavaVersion(JavaVersion javaVersion) { return new MavenBuildSystem(workspace, projectionFactory, logger, mvn.withJavaVersion(javaVersion), mavenProperties, - properties, gpg, env, deploymentProperties, restTemplate); + properties, gpg, env, deploymentProperties); } /* @@ -458,7 +449,7 @@ class MavenBuildSystem implements BuildSystem { } if (process == MavenCentral.Publishing.PUBLISHER && stagingRepository.isFile()) { - publishRelease(train, stagingRepository); + publishRelease(stagingRepository); return; } @@ -466,34 +457,14 @@ class MavenBuildSystem implements BuildSystem { String.format("Cannot release train using %s and staging repository %s", process, stagingRepository)); } - private void publishRelease(Train train, StagingRepository stagingRepository) { + private void publishRelease(StagingRepository stagingRepository) { File root = new File(mavenProperties.getLocalStaging(), stagingRepository.getId()); Assert.isTrue(root.exists(), "StagingRepository " + root + " does not exist"); - logger.log(train, "Creating release bundle from %s…", stagingRepository); try { File releaseBundle = createReleaseBundle(root); - - logger.log(train, "Release bundle created. About to upload release bundle …"); - - MavenCentral mavenCentral = deploymentProperties.getMavenCentral(); - HttpBasicCredentials httpCredentials = mavenCentral.getAuthentication().getHttpCredentials(); - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + httpCredentials.encode()); - - MultiValueMap body = new LinkedMultiValueMap<>(); - body.add("bundle", releaseBundle); - - HttpEntity> requestEntity = new HttpEntity<>(body, headers); - ResponseEntity response = restTemplate.postForEntity(mavenCentral.getPublisherApi() + "publisher/upload", - requestEntity, String.class); - - logger.log(train, "Bundle published with deployment Id %s", response.getBody()); - } catch (IOException e) { throw new RuntimeException(e); } diff --git a/src/main/java/org/springframework/data/release/deployment/DeploymentConfiguration.java b/src/main/java/org/springframework/data/release/deployment/DeploymentConfiguration.java index 29a820b..e631032 100644 --- a/src/main/java/org/springframework/data/release/deployment/DeploymentConfiguration.java +++ b/src/main/java/org/springframework/data/release/deployment/DeploymentConfiguration.java @@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.release.deployment.DeploymentProperties.Authentication; +import org.springframework.data.release.model.Password; +import org.springframework.data.release.utils.HttpBasicCredentials; import org.springframework.data.release.utils.HttpComponentsClientHttpRequestFactoryBuilder; import org.springframework.data.release.utils.Logger; import org.springframework.web.client.RestOperations; @@ -49,7 +51,10 @@ class DeploymentConfiguration { String uri = authentication.getServer().getUri(); if (authentication.hasCredentials()) { - builder = builder.withAuthentication(uri, authentication.getHttpCredentials()); + + HttpBasicCredentials credentials = new HttpBasicCredentials(authentication.getUsername(), + Password.of(authentication.getApiKey())); + builder = builder.withAuthentication(uri, credentials); } else { logger.warn("Infrastructure", "No credentials configured for repository %s!", uri); diff --git a/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java b/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java index defede3..32c6e82 100644 --- a/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java +++ b/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java @@ -24,7 +24,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.data.release.model.Gpg; import org.springframework.data.release.model.Password; import org.springframework.data.release.model.SupportStatusAware; -import org.springframework.data.release.utils.HttpBasicCredentials; import org.springframework.data.util.Streamable; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @@ -104,25 +103,17 @@ public class DeploymentProperties implements InitializingBean { private Publishing process; - private Authentication authentication; - private Gpg gpg; - private String publisherApi = "https://central.sonatype.com/api/v1/"; - public boolean hasGpgConfiguration() { return gpg != null && gpg.isGpgAvailable(); } public void validate() { - if (process == Publishing.OSSRH && !StringUtils.hasText(stagingProfileId)) { + if (!StringUtils.hasText(stagingProfileId)) { throw new IllegalArgumentException("No staging profile Id for Maven Central"); } - - if (process == Publishing.PUBLISHER && (authentication == null || !authentication.hasCredentials())) { - throw new IllegalArgumentException("No publisher authentication for Maven Central"); - } } public enum Publishing { @@ -146,10 +137,6 @@ public class DeploymentProperties implements InitializingBean { return StringUtils.hasText(username) && password != null; } - public HttpBasicCredentials getHttpCredentials() { - return new HttpBasicCredentials(username, password); - } - public void validate() { if (!StringUtils.hasText(stagingRepository)) { diff --git a/src/main/java/org/springframework/data/release/utils/HttpBasicCredentials.java b/src/main/java/org/springframework/data/release/utils/HttpBasicCredentials.java index 810aad6..ba487bc 100644 --- a/src/main/java/org/springframework/data/release/utils/HttpBasicCredentials.java +++ b/src/main/java/org/springframework/data/release/utils/HttpBasicCredentials.java @@ -29,16 +29,8 @@ import org.springframework.data.release.model.Password; @Value public class HttpBasicCredentials { - @NonNull String username; - @NonNull Password password; - - public String encode() { - - String header = username.concat(":").concat(password.toString()); - byte[] encodedAuth = Base64.getEncoder().encode(header.getBytes(StandardCharsets.US_ASCII)); - - return new String(encodedAuth); - } + private final @NonNull String username; + private final @NonNull Password password; /* * (non-Javadoc) @@ -46,6 +38,9 @@ public class HttpBasicCredentials { */ public String toString() { - return "Basic ".concat(encode()); + String header = username.concat(":").concat(password.toString()); + byte[] encodedAuth = Base64.getEncoder().encode(header.getBytes(StandardCharsets.US_ASCII)); + + return "Basic ".concat(new String(encodedAuth)); } }