From c77ae8397e4bdd098ebdad286290ac47bf0b9bd2 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 5 Sep 2019 11:46:33 +0200 Subject: [PATCH] Added missing beans --- .../internal/buildsystem/BomParser.java | 2 +- .../buildsystem/MavenBomParserAccessor.java | 13 ---- .../{internal => }/ReleaserApplication.java | 2 +- .../SpringCloudBuildsystemConfiguration.java | 30 +++++++++ .../docs/SpringCloudDocsConfiguration.java | 32 +++++++++ .../buildsystem/BuildsystemConfiguration.java | 51 +++++++++++++++ .../spring/ReleaserConfiguration.java | 26 ++++++-- .../cloud/docs/SpringCloudDocsAccessor.java | 65 +++++++++++++++++++ .../buildsystem/MavenBomParserAccessor.java | 31 +++++++++ .../docs/TestDocumentationUpdater.java | 37 ++--------- .../internal/spring/AcceptanceTests.java | 26 +++++--- .../spring/ReleaserApplicationEventTests.java | 2 + 12 files changed, 255 insertions(+), 62 deletions(-) rename spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/{internal => }/ReleaserApplication.java (98%) create mode 100644 spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/buildsystem/SpringCloudBuildsystemConfiguration.java create mode 100644 spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsConfiguration.java create mode 100644 spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/buildsystem/BuildsystemConfiguration.java create mode 100644 spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsAccessor.java create mode 100644 spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java diff --git a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/buildsystem/BomParser.java b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/buildsystem/BomParser.java index d2458d64..d907f07f 100644 --- a/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/buildsystem/BomParser.java +++ b/spring-cloud-release-tools-core/src/main/java/org/springframework/cloud/release/internal/buildsystem/BomParser.java @@ -22,7 +22,7 @@ import java.util.List; /** * Parses the bom and returns all parsed versions. */ -interface BomParser { +public interface BomParser { /** * @param clonedBom - location of the cloned BOM repository diff --git a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java index 3df3a1f6..dcd45b7a 100644 --- a/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java +++ b/spring-cloud-release-tools-core/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java @@ -16,9 +16,7 @@ package org.springframework.cloud.release.internal.buildsystem; -import java.io.File; import java.util.Collections; -import java.util.Set; import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParser; import org.springframework.cloud.release.internal.ReleaserProperties; @@ -30,15 +28,4 @@ public class MavenBomParserAccessor { Collections.singletonList(new SpringCloudMavenBomParser())); } - public static BomParser testCloudBomParser(ReleaserProperties properties) { - return new MavenBomParser(properties, - Collections.singletonList(new SpringCloudMavenBomParser() { - @Override - public boolean isApplicable(File root, ReleaserProperties properties, - Set projects) { - return true; - } - })); - } - } diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/ReleaserApplication.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/ReleaserApplication.java similarity index 98% rename from spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/ReleaserApplication.java rename to spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/ReleaserApplication.java index 02cfdc2e..d747443c 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/ReleaserApplication.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/ReleaserApplication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.release.internal; +package org.springframework.cloud.release; import java.io.File; import java.io.IOException; diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/buildsystem/SpringCloudBuildsystemConfiguration.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/buildsystem/SpringCloudBuildsystemConfiguration.java new file mode 100644 index 00000000..920be840 --- /dev/null +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/buildsystem/SpringCloudBuildsystemConfiguration.java @@ -0,0 +1,30 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.cloud.buildsystem; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +class SpringCloudBuildsystemConfiguration { + + @Bean + SpringCloudMavenBomParser springCloudMavenBomParser() { + return new SpringCloudMavenBomParser(); + } + +} diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsConfiguration.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsConfiguration.java new file mode 100644 index 00000000..2020b870 --- /dev/null +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsConfiguration.java @@ -0,0 +1,32 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.cloud.docs; + +import org.springframework.cloud.release.internal.git.ProjectGitHandler; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +class SpringCloudDocsConfiguration { + + @Bean + SpringCloudCustomProjectDocumentationUpdater springCloudCustomProjectDocumentationUpdater( + ProjectGitHandler handler) { + return new SpringCloudCustomProjectDocumentationUpdater(handler); + } + +} diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/buildsystem/BuildsystemConfiguration.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/buildsystem/BuildsystemConfiguration.java new file mode 100644 index 00000000..b652f6a7 --- /dev/null +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/buildsystem/BuildsystemConfiguration.java @@ -0,0 +1,51 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.internal.buildsystem; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.release.internal.ReleaserProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +class BuildsystemConfiguration { + + @Autowired + ReleaserProperties releaserProperties; + + @Autowired(required = false) + List customBomParsers = new ArrayList<>(); + + @Bean + BomParser mavenBomParser() { + return new MavenBomParser(this.releaserProperties, this.customBomParsers); + } + + @Bean + BomParser gradleBomParser() { + return new MavenBomParser(this.releaserProperties, this.customBomParsers); + } + + @Bean + ProjectPomUpdater pomUpdater(List bomParsers) { + return new ProjectPomUpdater(this.releaserProperties, bomParsers); + } + +} diff --git a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/ReleaserConfiguration.java b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/ReleaserConfiguration.java index 66ee498b..9604e07b 100644 --- a/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/ReleaserConfiguration.java +++ b/spring-cloud-release-tools-spring/src/main/java/org/springframework/cloud/release/internal/spring/ReleaserConfiguration.java @@ -16,13 +16,18 @@ package org.springframework.cloud.release.internal.spring; +import java.util.ArrayList; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.release.internal.Releaser; import org.springframework.cloud.release.internal.ReleaserProperties; import org.springframework.cloud.release.internal.buildsystem.GradleUpdater; import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater; +import org.springframework.cloud.release.internal.docs.CustomProjectDocumentationUpdater; import org.springframework.cloud.release.internal.docs.DocumentationUpdater; +import org.springframework.cloud.release.internal.docs.ProjectDocumentationUpdater; import org.springframework.cloud.release.internal.git.ProjectGitHandler; import org.springframework.cloud.release.internal.github.ProjectGitHubHandler; import org.springframework.cloud.release.internal.options.Parser; @@ -61,11 +66,6 @@ class ReleaserConfiguration { return new ProjectCommandExecutor(this.properties); } - @Bean - ProjectPomUpdater pomUpdater() { - return new ProjectPomUpdater(this.properties, bomParsers); - } - @Bean VersionsFetcher versionsFetcher(ProjectPomUpdater updater) { return new VersionsFetcher(this.properties, updater); @@ -106,10 +106,22 @@ class ReleaserConfiguration { projectCommandExecutor, releaserProperties, versionsFetcher); } + @Autowired(required = false) + List customProjectDocumentationUpdaters = new ArrayList<>(); + + @Bean + ProjectDocumentationUpdater projectDocumentationUpdater( + ProjectGitHandler projectGitHandler) { + return new ProjectDocumentationUpdater(this.properties, projectGitHandler, + this.customProjectDocumentationUpdaters); + } + @Bean DocumentationUpdater documentationUpdater(ProjectGitHandler projectGitHandler, - ReleaserProperties properties, TemplateGenerator templateGenerator) { - return new DocumentationUpdater(projectGitHandler, properties, templateGenerator); + ReleaserProperties properties, TemplateGenerator templateGenerator, + ProjectDocumentationUpdater projectDocumentationUpdater) { + return new DocumentationUpdater(projectGitHandler, properties, templateGenerator, + projectDocumentationUpdater); } @Bean diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsAccessor.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsAccessor.java new file mode 100644 index 00000000..e53e8b5b --- /dev/null +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/cloud/docs/SpringCloudDocsAccessor.java @@ -0,0 +1,65 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.cloud.docs; + +import java.io.File; + +import org.springframework.cloud.release.internal.docs.CustomProjectDocumentationUpdater; +import org.springframework.cloud.release.internal.git.ProjectGitHandler; + +public class SpringCloudDocsAccessor { + + public static CustomProjectDocumentationUpdater updater(ProjectGitHandler handler) { + return new SpringCloudCustomProjectDocumentationUpdater(handler); + } + + public static CustomProjectDocumentationUpdater testUpdater(ProjectGitHandler handler, + String version) { + return new TestCustomProjectDocumentationUpdater(handler, version); + } + +} + +class TestCustomProjectDocumentationUpdater + extends SpringCloudCustomProjectDocumentationUpdater { + + private final String version; + + public TestCustomProjectDocumentationUpdater(ProjectGitHandler gitHandler, + String version) { + super(gitHandler); + this.version = version; + } + + @Override + String readIndexHtmlContents(File indexHtml) { + return response(); + } + + private String response() { + return "\n" + "\n" + "\n" + + "\n" + "\n" + "\n" + "\n" + + "Page Redirection\n" + "\n" + + "\n" + + "If you are not redirected automatically, follow the link to latest release\n"; + } + +} \ No newline at end of file diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java new file mode 100644 index 00000000..dcd45b7a --- /dev/null +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/buildsystem/MavenBomParserAccessor.java @@ -0,0 +1,31 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.release.internal.buildsystem; + +import java.util.Collections; + +import org.springframework.cloud.release.cloud.buildsystem.SpringCloudMavenBomParser; +import org.springframework.cloud.release.internal.ReleaserProperties; + +public class MavenBomParserAccessor { + + public static BomParser cloudMavenBomParser(ReleaserProperties properties) { + return new MavenBomParser(properties, + Collections.singletonList(new SpringCloudMavenBomParser())); + } + +} diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/docs/TestDocumentationUpdater.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/docs/TestDocumentationUpdater.java index 2062745f..42c86347 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/docs/TestDocumentationUpdater.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/docs/TestDocumentationUpdater.java @@ -18,6 +18,8 @@ package org.springframework.cloud.release.internal.docs; import java.io.File; +import edu.emory.mathcs.backport.java.util.Collections; + import org.springframework.cloud.release.internal.ReleaserProperties; import org.springframework.cloud.release.internal.git.ProjectGitHandler; import org.springframework.cloud.release.internal.project.Projects; @@ -29,9 +31,10 @@ import org.springframework.cloud.release.internal.template.TemplateGenerator; public class TestDocumentationUpdater extends DocumentationUpdater { public TestDocumentationUpdater(ReleaserProperties properties, - TestCustomProjectDocumentationUpdater updater, + CustomProjectDocumentationUpdater updater, ProjectGitHandler handler, TestReleaseContentsUpdater testRelease) { - super(properties, updater, testRelease); + super(properties, new ProjectDocumentationUpdater(properties, handler, + Collections.singletonList(updater)), testRelease); } public static class TestReleaseContentsUpdater extends ReleaseTrainContentsUpdater { @@ -48,34 +51,4 @@ public class TestDocumentationUpdater extends DocumentationUpdater { } - public static class TestCustomProjectDocumentationUpdater - extends CustomProjectDocumentationUpdater { - - private final String version; - - public TestCustomProjectDocumentationUpdater(ReleaserProperties properties, - ProjectGitHandler gitHandler, String version) { - super(properties, gitHandler); - this.version = version; - } - - @Override - String readIndexHtmlContents(File indexHtml) { - return response(); - } - - private String response() { - return "\n" + "\n" + "\n" - + "\n" + "\n" + "\n" + "\n" - + "Page Redirection\n" + "\n" - + "\n" - + "If you are not redirected automatically, follow the link to latest release\n"; - } - - } - } diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java index 7d4fbb8b..50ce27f7 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/AcceptanceTests.java @@ -45,9 +45,12 @@ import org.mockito.BDDMockito; import org.mockito.Mockito; import org.springframework.boot.test.rule.OutputCapture; +import org.springframework.cloud.release.cloud.docs.SpringCloudDocsAccessor; import org.springframework.cloud.release.internal.Releaser; import org.springframework.cloud.release.internal.ReleaserProperties; +import org.springframework.cloud.release.internal.buildsystem.BomParser; import org.springframework.cloud.release.internal.buildsystem.GradleUpdater; +import org.springframework.cloud.release.internal.buildsystem.MavenBomParserAccessor; import org.springframework.cloud.release.internal.buildsystem.ProjectPomUpdater; import org.springframework.cloud.release.internal.buildsystem.ProjectVersion; import org.springframework.cloud.release.internal.buildsystem.TestPomReader; @@ -697,7 +700,8 @@ public class AcceptanceTests { private Releaser defaultReleaser(String expectedVersion, String projectName, ReleaserProperties properties) { - ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties, bomParsers); + ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties, + bomParsers(properties)); ProjectCommandExecutor projectCommandExecutor = new ProjectCommandExecutor( properties); ProjectGitHandler gitHandler = new ProjectGitHandler(properties); @@ -710,10 +714,9 @@ public class AcceptanceTests { this.releaserProperties); DocumentationUpdater documentationUpdater = new TestDocumentationUpdater( properties, - new TestDocumentationUpdater.TestCustomProjectDocumentationUpdater( - properties, gitHandler, "Brixton.SR1"), - new TestDocumentationUpdater.TestReleaseContentsUpdater(properties, - gitHandler, templateGenerator)) { + SpringCloudDocsAccessor.testUpdater(gitHandler, "Brixton.SR1"), + gitHandler, new TestDocumentationUpdater.TestReleaseContentsUpdater( + properties, gitHandler, templateGenerator)) { @Override public File updateDocsRepo(ProjectVersion currentProject, String bomReleaseBranch) { @@ -731,7 +734,8 @@ public class AcceptanceTests { } private Releaser defaultMetaReleaser(ReleaserProperties properties) { - ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties, bomParsers); + ProjectPomUpdater pomUpdater = new ProjectPomUpdater(properties, + bomParsers(properties)); ProjectCommandExecutor projectCommandExecutor = new ProjectCommandExecutor( properties); NonAssertingTestProjectGitHubHandler handler = new NonAssertingTestProjectGitHubHandler( @@ -745,8 +749,9 @@ public class AcceptanceTests { .spy(new SaganUpdater(this.saganClient, this.releaserProperties)); DocumentationUpdater documentationUpdater = Mockito .spy(new TestDocumentationUpdater(properties, - new TestDocumentationUpdater.TestCustomProjectDocumentationUpdater( - properties, nonAssertingGitHandler, "Brixton.SR1"), + SpringCloudDocsAccessor.testUpdater(nonAssertingGitHandler, + "Brixton.SR1"), + nonAssertingGitHandler, new TestDocumentationUpdater.TestReleaseContentsUpdater( properties, nonAssertingGitHandler, templateGenerator) { @Override @@ -777,6 +782,11 @@ public class AcceptanceTests { return releaser; } + private List bomParsers(ReleaserProperties properties) { + return Collections + .singletonList(MavenBomParserAccessor.cloudMavenBomParser(properties)); + } + private ReleaserProperties releaserProperties(File project, String branch) throws URISyntaxException { ReleaserProperties releaserProperties = new ReleaserProperties(); diff --git a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/ReleaserApplicationEventTests.java b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/ReleaserApplicationEventTests.java index 9b48022e..444b9e64 100644 --- a/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/ReleaserApplicationEventTests.java +++ b/spring-cloud-release-tools-spring/src/test/java/org/springframework/cloud/release/internal/spring/ReleaserApplicationEventTests.java @@ -63,6 +63,8 @@ public class ReleaserApplicationEventTests { @Configuration @EnableAutoConfiguration @ComponentScan({ "org.springframework.cloud.release.internal.options", + "org.springframework.cloud.release.cloud", + "org.springframework.cloud.release.internal.buildsystem", "org.springframework.cloud.release.internal.sagan", "org.springframework.cloud.release.internal.spring" }) static class Config {