diff --git a/lombok.config b/lombok.config
index 71bb610..255addb 100644
--- a/lombok.config
+++ b/lombok.config
@@ -1 +1,2 @@
lombok.nonNull.exceptionType = IllegalArgumentException
+lombok.anyConstructor.addConstructorProperties = true
diff --git a/pom.xml b/pom.xml
index 4955fe4..4ee03d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
-
4.0.0
org.springframework.data.build
@@ -8,13 +9,11 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.4.RELEASE
+ 2.2.1.RELEASE
- 1.8
- org.springframework.data.release.Application
- 2.0.0.BUILD-SNAPSHOT
+ 2.0.0.RELEASE
@@ -52,7 +51,7 @@
org.springframework.shell
spring-shell
- 1.2.0.RC1
+ 1.2.0.RELEASE
@@ -75,13 +74,13 @@
org.projectlombok
lombok
- 1.16.6
provided
org.springframework.plugin
spring-plugin-core
+ ${spring-plugin.version}
@@ -120,57 +119,32 @@
test
+
+ com.google.guava
+ guava
+ 28.1-jre
+ test
+
+
javax.servlet
javax.servlet-api
test
-
- com.google.guava
- guava
- 19.0
-
-
+ ${project.name}
-
-
- org.codehaus.mojo
- appassembler-maven-plugin
- 1.7
-
-
-
- ${jar.mainclass}
- spring-data-release-shell
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- ${java.version}
- ${java.version}
- -parameters
-
+ org.springframework.boot
+ spring-boot-maven-plugin
-
-
- spring-libs-snapshot
- https://repo.spring.io/libs-snapshot
-
-
diff --git a/readme.md b/readme.md
index 969945d..f12270b 100644
--- a/readme.md
+++ b/readme.md
@@ -21,7 +21,7 @@ See `application-local.template` for details.
### Build and execute the release shell
-Run `mvn package appassembler:assemble && sh target/appassembler/bin/spring-data-release-shell`
+Run `mvn package && java -jar target/spring-data-release-cli.jar`
## The release process
diff --git a/src/main/java/org/springframework/data/release/TimedCommand.java b/src/main/java/org/springframework/data/release/TimedCommand.java
index a3f61cf..e778676 100644
--- a/src/main/java/org/springframework/data/release/TimedCommand.java
+++ b/src/main/java/org/springframework/data/release/TimedCommand.java
@@ -22,14 +22,14 @@ import org.springframework.util.StopWatch;
/**
* Base class for command implementations who want to get their execution time logged.
- *
+ *
* @author Oliver Gierke
*/
public abstract class TimedCommand implements ExecutionProcessor, CommandMarker {
private StopWatch watch;
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.core.ExecutionProcessor#beforeInvocation(org.springframework.shell.event.ParseResult)
*/
@@ -42,7 +42,7 @@ public abstract class TimedCommand implements ExecutionProcessor, CommandMarker
return invocationContext;
}
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.core.ExecutionProcessor#afterReturningInvocation(org.springframework.shell.event.ParseResult, java.lang.Object)
*/
@@ -51,7 +51,7 @@ public abstract class TimedCommand implements ExecutionProcessor, CommandMarker
stopAndLog();
}
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.core.ExecutionProcessor#afterThrowingInvocation(org.springframework.shell.event.ParseResult, java.lang.Throwable)
*/
@@ -63,6 +63,6 @@ public abstract class TimedCommand implements ExecutionProcessor, CommandMarker
private void stopAndLog() {
watch.stop();
- System.out.println(String.format("Took: %s sec.", watch.getTotalTimeSeconds()));
+ System.out.println(String.format("Took: %.2f sec.", watch.getTotalTimeSeconds()));
}
}
diff --git a/src/main/java/org/springframework/data/release/build/BuildExecutor.java b/src/main/java/org/springframework/data/release/build/BuildExecutor.java
index 733e79b..d89841e 100644
--- a/src/main/java/org/springframework/data/release/build/BuildExecutor.java
+++ b/src/main/java/org/springframework/data/release/build/BuildExecutor.java
@@ -18,15 +18,19 @@ package org.springframework.data.release.build;
import lombok.NonNull;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;
@@ -45,8 +49,6 @@ import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
-import com.google.common.util.concurrent.MoreExecutors;
-
/**
* Build executor service.
*
@@ -72,7 +74,7 @@ class BuildExecutor {
int parallelity = Math.max(2, (processors / 2));
executor = new ThreadPoolExecutor(parallelity, parallelity, 10, TimeUnit.MINUTES, new ArrayBlockingQueue<>(256));
} else {
- executor = MoreExecutors.newDirectExecutorService();
+ executor = ImmediateExecutorService.INSTANCE;
}
}
@@ -266,4 +268,82 @@ class BuildExecutor {
}
}
+ enum ImmediateExecutorService implements ExecutorService {
+ INSTANCE;
+
+ @Override
+ public void shutdown() {
+
+ }
+
+ @Override
+ public List shutdownNow() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public boolean isShutdown() {
+ return false;
+ }
+
+ @Override
+ public boolean isTerminated() {
+ return false;
+ }
+
+ @Override
+ public boolean awaitTermination(long timeout, TimeUnit unit) {
+ return false;
+ }
+
+ @Override
+ public Future submit(Callable task) {
+ try {
+ return CompletableFuture.completedFuture(task.call());
+ } catch (Exception e) {
+ CompletableFuture f = new CompletableFuture<>();
+ f.completeExceptionally(e);
+ return f;
+ }
+ }
+
+ @Override
+ public Future submit(Runnable task, T result) {
+ return submit(() -> {
+ task.run();
+ return result;
+ });
+ }
+
+ @Override
+ public Future> submit(Runnable task) {
+ return submit(task, null);
+ }
+
+ @Override
+ public List> invokeAll(Collection extends Callable> tasks) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List> invokeAll(Collection extends Callable> tasks, long timeout, TimeUnit unit) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public T invokeAny(Collection extends Callable> tasks) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public T invokeAny(Collection extends Callable> tasks, long timeout, TimeUnit unit) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void execute(Runnable command) {
+ submit(command);
+ }
+ }
+
}
diff --git a/src/main/java/org/springframework/data/release/build/BuildOperations.java b/src/main/java/org/springframework/data/release/build/BuildOperations.java
index 254705a..c8a814c 100644
--- a/src/main/java/org/springframework/data/release/build/BuildOperations.java
+++ b/src/main/java/org/springframework/data/release/build/BuildOperations.java
@@ -24,6 +24,8 @@ import java.util.function.BiFunction;
import java.util.function.Supplier;
import java.util.stream.Collectors;
+import org.assertj.core.util.VisibleForTesting;
+
import org.springframework.data.release.deployment.DeploymentInformation;
import org.springframework.data.release.model.Module;
import org.springframework.data.release.model.ModuleIteration;
@@ -36,8 +38,6 @@ import org.springframework.plugin.core.PluginRegistry;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
-import com.google.common.annotations.VisibleForTesting;
-
/**
* @author Oliver Gierke
* @author Mark Paluch
diff --git a/src/main/java/org/springframework/data/release/cli/SpringDataReleaseCliBannerProvider.java b/src/main/java/org/springframework/data/release/cli/SpringDataReleaseCliBannerProvider.java
index 5c185f3..e73c6ea 100644
--- a/src/main/java/org/springframework/data/release/cli/SpringDataReleaseCliBannerProvider.java
+++ b/src/main/java/org/springframework/data/release/cli/SpringDataReleaseCliBannerProvider.java
@@ -15,6 +15,7 @@
*/
package org.springframework.data.release.cli;
+import org.springframework.boot.SpringBootVersion;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.shell.plugin.BannerProvider;
@@ -26,7 +27,7 @@ import org.springframework.stereotype.Component;
@Component
class SpringDataReleaseCliBannerProvider implements BannerProvider {
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.plugin.NamedProvider#getProviderName()
*/
@@ -35,7 +36,7 @@ class SpringDataReleaseCliBannerProvider implements BannerProvider {
return "Spring Data Release Shell";
}
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.plugin.BannerProvider#getBanner()
*/
@@ -51,16 +52,16 @@ class SpringDataReleaseCliBannerProvider implements BannerProvider {
return builder.toString();
}
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.plugin.BannerProvider#getVersion()
*/
@Override
public String getVersion() {
- return "1.0";
+ return "1.0 on Spring Boot " + SpringBootVersion.getVersion();
}
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.shell.plugin.BannerProvider#getWelcomeMessage()
*/
diff --git a/src/main/java/org/springframework/data/release/io/Workspace.java b/src/main/java/org/springframework/data/release/io/Workspace.java
index d4a35ea..4b5254d 100644
--- a/src/main/java/org/springframework/data/release/io/Workspace.java
+++ b/src/main/java/org/springframework/data/release/io/Workspace.java
@@ -32,6 +32,7 @@ import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Optional;
import java.util.Scanner;
import java.util.function.Predicate;
@@ -192,10 +193,6 @@ public class Workspace {
}
}
- public boolean processFiles(String pattern, Project project, LineCallback callback) {
- return false;
- }
-
public boolean processFile(String filename, Project project, LineCallback callback) {
File file = getFile(filename, project);
@@ -226,7 +223,7 @@ public class Workspace {
private void writeContentToFile(String name, Project project, String content) throws IOException {
File file = getFile(name, project);
- com.google.common.io.Files.write(content, file, UTF_8);
+ Files.write(file.toPath(), Collections.singleton(content), UTF_8);
}
/**
diff --git a/src/main/java/org/springframework/data/release/issues/IssueTrackerConfiguration.java b/src/main/java/org/springframework/data/release/issues/IssueTrackerConfiguration.java
index b9571f8..ca94212 100644
--- a/src/main/java/org/springframework/data/release/issues/IssueTrackerConfiguration.java
+++ b/src/main/java/org/springframework/data/release/issues/IssueTrackerConfiguration.java
@@ -15,10 +15,10 @@
*/
package org.springframework.data.release.issues;
-import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
@@ -26,11 +26,9 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.release.model.Project;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.plugin.core.OrderAwarePluginRegistry;
import org.springframework.plugin.core.PluginRegistry;
-import org.springframework.web.client.RestTemplate;
import com.fasterxml.jackson.annotation.JsonCreator.Mode;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@@ -70,19 +68,13 @@ class IssueTrackerConfiguration {
@Bean
@Qualifier("tracker")
- RestTemplate restTemplate() {
+ RestTemplateBuilder restTemplate() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(jacksonObjectMapper());
- List> converters = new ArrayList<>();
- converters.add(converter);
-
- RestTemplate template = new RestTemplate();
- template.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
- template.setMessageConverters(converters);
-
- return template;
+ return new RestTemplateBuilder().messageConverters(converter)
+ .requestFactory(HttpComponentsClientHttpRequestFactory.class);
}
@Bean
diff --git a/src/main/java/org/springframework/data/release/issues/github/GitHub.java b/src/main/java/org/springframework/data/release/issues/github/GitHub.java
index 7ea69e6..d6d701b 100644
--- a/src/main/java/org/springframework/data/release/issues/github/GitHub.java
+++ b/src/main/java/org/springframework/data/release/issues/github/GitHub.java
@@ -30,6 +30,7 @@ import java.util.regex.Pattern;
import java.util.stream.Stream;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.ParameterizedTypeReference;
@@ -53,6 +54,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestOperations;
+import org.springframework.web.util.DefaultUriBuilderFactory;
import org.springframework.web.util.UriTemplate;
/**
@@ -62,13 +64,13 @@ import org.springframework.web.util.UriTemplate;
@Component
class GitHub implements IssueTracker {
- private static final String MILESTONE_URI = "{githubBaseUrl}/repos/spring-projects/{repoName}/milestones?state={state}";
- private static final String ISSUES_BY_MILESTONE_AND_ASSIGNEE_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/issues?milestone={id}&state=all&assignee={assignee}";
- private static final String ISSUES_BY_MILESTONE_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/issues?milestone={id}&state=all";
- private static final String MILESTONES_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/milestones";
- private static final String MILESTONE_BY_ID_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/milestones/{id}";
- private static final String ISSUE_BY_ID_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/issues/{id}";
- private static final String ISSUES_URI_TEMPLATE = "{githubBaseUrl}/repos/spring-projects/{repoName}/issues";
+ private static final String MILESTONE_URI = "/repos/spring-projects/{repoName}/milestones?state={state}";
+ private static final String ISSUES_BY_MILESTONE_AND_ASSIGNEE_URI_TEMPLATE = "/repos/spring-projects/{repoName}/issues?milestone={id}&state=all&assignee={assignee}";
+ private static final String ISSUES_BY_MILESTONE_URI_TEMPLATE = "/repos/spring-projects/{repoName}/issues?milestone={id}&state=all";
+ private static final String MILESTONES_URI_TEMPLATE = "/repos/spring-projects/{repoName}/milestones";
+ private static final String MILESTONE_BY_ID_URI_TEMPLATE = "/repos/spring-projects/{repoName}/milestones/{id}";
+ private static final String ISSUE_BY_ID_URI_TEMPLATE = "/repos/spring-projects/{repoName}/issues/{id}";
+ private static final String ISSUES_URI_TEMPLATE = "/repos/spring-projects/{repoName}/issues";
private static final ParameterizedTypeReference> MILESTONES_TYPE = new ParameterizedTypeReference>() {};
private static final ParameterizedTypeReference> ISSUES_TYPE = new ParameterizedTypeReference>() {};
@@ -79,13 +81,13 @@ class GitHub implements IssueTracker {
private final GitHubProperties properties;
/**
- * @param operations
+ * @param templateBuilder
* @param logger
* @param properties
*/
- public GitHub(@Qualifier("tracker") RestOperations operations, Logger logger, GitHubProperties properties) {
+ public GitHub(@Qualifier("tracker") RestTemplateBuilder templateBuilder, Logger logger, GitHubProperties properties) {
- this.operations = operations;
+ this.operations = templateBuilder.uriTemplateHandler(new DefaultUriBuilderFactory(properties.getApiUrl())).build();
this.logger = logger;
this.properties = properties;
}
@@ -353,8 +355,6 @@ class GitHub implements IssueTracker {
private Map newUrlTemplateVariables() {
Map parameters = new HashMap<>();
- parameters.put("githubBaseUrl", properties.getApiUrl());
-
return parameters;
}
diff --git a/src/main/java/org/springframework/data/release/issues/jira/Jira.java b/src/main/java/org/springframework/data/release/issues/jira/Jira.java
index 7bc233a..cef967c 100644
--- a/src/main/java/org/springframework/data/release/issues/jira/Jira.java
+++ b/src/main/java/org/springframework/data/release/issues/jira/Jira.java
@@ -26,6 +26,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.ParameterizedTypeReference;
@@ -52,6 +53,7 @@ import org.springframework.util.Assert;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestOperations;
+import org.springframework.web.util.DefaultUriBuilderFactory;
import org.springframework.web.util.UriTemplate;
/**
@@ -61,15 +63,14 @@ import org.springframework.web.util.UriTemplate;
@Component
class Jira implements JiraConnector {
- private static final String BASE_URI = "{jiraBaseUrl}/rest/api/2";
- private static final String CREATE_ISSUES_TEMPLATE = BASE_URI + "/issue";
- private static final String ISSUE_TEMPLATE = BASE_URI + "/issue/{ticketId}";
- private static final String TRANSITION_TEMPLATE = BASE_URI + "/issue/{ticketId}/transitions";
- private static final String PROJECT_VERSIONS_TEMPLATE = BASE_URI + "/project/{project}/version?startAt={startAt}";
- private static final String PROJECT_COMPONENTS_TEMPLATE = BASE_URI + "/project/{project}/components";
- private static final String VERSIONS_TEMPLATE = BASE_URI + "/version";
- private static final String VERSION_TEMPLATE = BASE_URI + "/version/{id}";
- private static final String SEARCH_TEMPLATE = BASE_URI + "/search?jql={jql}&fields={fields}&startAt={startAt}";
+ private static final String CREATE_ISSUES_TEMPLATE = "/issue";
+ private static final String ISSUE_TEMPLATE = "/issue/{ticketId}";
+ private static final String TRANSITION_TEMPLATE = "/issue/{ticketId}/transitions";
+ private static final String PROJECT_VERSIONS_TEMPLATE = "/project/{project}/version?startAt={startAt}";
+ private static final String PROJECT_COMPONENTS_TEMPLATE = "/project/{project}/components";
+ private static final String VERSIONS_TEMPLATE = "/version";
+ private static final String VERSION_TEMPLATE = "/version/{id}";
+ private static final String SEARCH_TEMPLATE = "/search?jql={jql}&fields={fields}&startAt={startAt}";
private static final String INFRASTRUCTURE_COMPONENT_NAME = "Infrastructure";
private static final String IN_PROGRESS_STATUS_CATEGORY = "indeterminate";
@@ -87,13 +88,15 @@ class Jira implements JiraConnector {
private final JiraProperties jiraProperties;
/**
- * @param operations
+ * @param templateBuilder
* @param logger
* @param jiraProperties
*/
- public Jira(@Qualifier("tracker") RestOperations operations, Logger logger, JiraProperties jiraProperties) {
+ public Jira(@Qualifier("tracker") RestTemplateBuilder templateBuilder, Logger logger, JiraProperties jiraProperties) {
- this.operations = operations;
+ String baseUri = String.format("%s/rest/api/2", jiraProperties.getApiUrl());
+
+ this.operations = templateBuilder.uriTemplateHandler(new DefaultUriBuilderFactory(baseUri)).build();
this.logger = logger;
this.jiraProperties = jiraProperties;
}
@@ -556,7 +559,6 @@ class Jira implements JiraConnector {
return project.uses(Tracker.JIRA);
}
- @Cacheable("jira-components")
protected JiraComponents getJiraComponents(ProjectKey projectKey) {
HttpHeaders headers = new HttpHeaders();
@@ -706,7 +708,6 @@ class Jira implements JiraConnector {
private Map newUrlTemplateVariables() {
Map parameters = new HashMap<>();
- parameters.put("jiraBaseUrl", jiraProperties.getApiUrl());
return parameters;
}
diff --git a/src/main/java/org/springframework/data/release/model/Project.java b/src/main/java/org/springframework/data/release/model/Project.java
index 5e8b7ad..019e8cc 100644
--- a/src/main/java/org/springframework/data/release/model/Project.java
+++ b/src/main/java/org/springframework/data/release/model/Project.java
@@ -20,7 +20,7 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
-import lombok.experimental.Wither;
+import lombok.With;
import java.util.Arrays;
import java.util.Collection;
@@ -42,11 +42,11 @@ public class Project implements Comparable {
private final @Getter ProjectKey key;
private final @Getter String name;
- private final @Wither String fullName;
+ private final @With String fullName;
private final Collection dependencies;
private final @Getter Tracker tracker;
- private final @Wither ArtifactCoordinates additionalArtifacts;
- private final @Wither boolean skipTests;
+ private final @With ArtifactCoordinates additionalArtifacts;
+ private final @With boolean skipTests;
Project(String key, String name) {
this(key, name, null, Tracker.JIRA);
diff --git a/src/main/java/org/springframework/data/release/model/Train.java b/src/main/java/org/springframework/data/release/model/Train.java
index dc40775..a9f8514 100644
--- a/src/main/java/org/springframework/data/release/model/Train.java
+++ b/src/main/java/org/springframework/data/release/model/Train.java
@@ -22,7 +22,7 @@ import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.Value;
-import lombok.experimental.Wither;
+import lombok.With;
import java.util.Arrays;
import java.util.Collection;
@@ -47,8 +47,8 @@ public class Train implements Streamable {
private final String name;;
private final Modules modules;
- private @Wither Iterations iterations;
- private @Wither boolean alwaysUseBranch;
+ private @With Iterations iterations;
+ private @With boolean alwaysUseBranch;
public Train(String name, Module... modules) {
this(name, Arrays.asList(modules));
diff --git a/src/main/java/org/springframework/data/release/sagan/SaganConfiguration.java b/src/main/java/org/springframework/data/release/sagan/SaganConfiguration.java
index fbc9c93..6ba77dd 100644
--- a/src/main/java/org/springframework/data/release/sagan/SaganConfiguration.java
+++ b/src/main/java/org/springframework/data/release/sagan/SaganConfiguration.java
@@ -15,27 +15,17 @@
*/
package org.springframework.data.release.sagan;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-
-import java.io.IOException;
-import java.util.Arrays;
-
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.release.git.GitOperations;
import org.springframework.data.release.utils.Logger;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpRequest;
-import org.springframework.http.client.ClientHttpRequestExecution;
-import org.springframework.http.client.ClientHttpRequestInterceptor;
-import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.RestTemplate;
/**
* Configuration for the Sagan interaction subsystem.
- *
+ *
* @author Oliver Gierke
*/
@Configuration
@@ -58,29 +48,6 @@ class SaganConfiguration {
@Bean
RestTemplate saganRestTemplate() {
-
- RestTemplate template = new RestTemplate();
- template.setInterceptors(Arrays.asList(new AuthenticatingClientHttpRequestInterceptor(properties)));
-
- return template;
- }
-
- @RequiredArgsConstructor
- private static class AuthenticatingClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
-
- private final @NonNull SaganProperties properties;
-
- /*
- * (non-Javadoc)
- * @see org.springframework.http.client.ClientHttpRequestInterceptor#intercept(org.springframework.http.HttpRequest, byte[], org.springframework.http.client.ClientHttpRequestExecution)
- */
- @Override
- public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
- throws IOException {
-
- request.getHeaders().add(HttpHeaders.AUTHORIZATION, properties.getCredentials().toString());
-
- return execution.execute(request, body);
- }
+ return new RestTemplateBuilder().basicAuthentication(properties.key, "").build();
}
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index aab5b88..fa3b02e 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,25 +1,21 @@
+spring.main.banner-mode=off
io.work-dir=~/temp/spring-data-shell/workspace
io.logs=logs
-
# Maven setup
maven.local-repository=~/temp/spring-data-shell/repository
maven.plugins.versions=org.codehaus.mojo:versions-maven-plugin:2.2
maven.console-logger=true
-
deployment.server.uri=https://repo.spring.io
deployment.staging-repository=libs-staging-local
deployment.distribution-repository=temp-private-local
deployment.username=buildmaster
#deployment.password <- local
-
# GPG setup
deployment.gpg.executable=/usr/local/bin/gpg2
# deployment.gpg.keyname
# deployment.gpg.password
-
# JIRA
jira.api-url=https://jira.spring.io
-
# GitHub
github.api-url=https://api.github.com
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(%-20.20logger{19}){cyan}%clr(:){faint} %m%n%wEx
diff --git a/src/test/java/org/springframework/data/release/deployment/DeploymentOperationsUnitTests.java b/src/test/java/org/springframework/data/release/deployment/DeploymentOperationsUnitTests.java
index fdf626f..6efc9a1 100644
--- a/src/test/java/org/springframework/data/release/deployment/DeploymentOperationsUnitTests.java
+++ b/src/test/java/org/springframework/data/release/deployment/DeploymentOperationsUnitTests.java
@@ -15,7 +15,6 @@
*/
package org.springframework.data.release.deployment;
-import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
@@ -45,7 +44,7 @@ public class DeploymentOperationsUnitTests {
operations.promote(information);
- verify(logger).log(eq(module), any());
- verifyZeroInteractions(client);
+ verify(logger).log(eq(module), anyString());
+ verifyNoInteractions(client);
}
}
diff --git a/src/test/java/org/springframework/data/release/issues/github/GitHubIssueTrackerIntegrationTests.java b/src/test/java/org/springframework/data/release/issues/github/GitHubIssueTrackerIntegrationTests.java
index 2953395..b6c4260 100644
--- a/src/test/java/org/springframework/data/release/issues/github/GitHubIssueTrackerIntegrationTests.java
+++ b/src/test/java/org/springframework/data/release/issues/github/GitHubIssueTrackerIntegrationTests.java
@@ -148,7 +148,7 @@ public class GitHubIssueTrackerIntegrationTests extends AbstractIntegrationTests
github.createReleaseVersion(BUILD_HOPPER_RC1);
verify(postRequestedFor(urlPathMatching(MILESTONES_URI)).withRequestBody(
- equalToJson("{\"title\":\"1.8 RC1 (Hopper)\", \"description\":\"Hopper RC1\",\"open\":false}")));
+ equalToJson("{\"title\":\"1.8 RC1 (Hopper)\", \"description\":\"Hopper RC1\"}")));
}
/**