From ab64b6824512bf8781bcf7b427acda6944bef58a Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 26 Jul 2017 07:58:15 +0200 Subject: [PATCH] #61 - Re-added spring-cql as additional artifact for the Cassandra module. API polishing in Project and ArtifactCoordinates. --- .../release/model/ArtifactCoordinates.java | 12 ++-- .../data/release/model/Project.java | 28 ++++----- .../data/release/model/Projects.java | 63 +++++++++++-------- .../data/release/model/ProjectUnitTests.java | 2 - 4 files changed, 56 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/springframework/data/release/model/ArtifactCoordinates.java b/src/main/java/org/springframework/data/release/model/ArtifactCoordinates.java index b46f9d8..c41ec51 100644 --- a/src/main/java/org/springframework/data/release/model/ArtifactCoordinates.java +++ b/src/main/java/org/springframework/data/release/model/ArtifactCoordinates.java @@ -30,7 +30,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class ArtifactCoordinates { - public static ArtifactCoordinates NONE = forGroupId("org.springframework.data"); + public static ArtifactCoordinates SPRING_DATA = forGroupId("org.springframework.data"); private final String groupId; private final @Getter(AccessLevel.PACKAGE) List coordinates; @@ -41,18 +41,16 @@ public class ArtifactCoordinates { public ArtifactCoordinates artifacts(String... artifactIds) { - return new ArtifactCoordinates(groupId, - Arrays.stream(artifactIds)// - .map(artifactId -> ArtifactCoordinate.of(groupId, artifactId))// - .collect(Collectors.toList())); + return new ArtifactCoordinates(groupId, Arrays.stream(artifactIds)// + .map(artifactId -> ArtifactCoordinate.of(groupId, artifactId))// + .collect(Collectors.toList())); } - public ArtifactCoordinates artifact(ArtifactCoordinate coordinate) { + public ArtifactCoordinates and(ArtifactCoordinate coordinate) { List artifacts = new ArrayList<>(coordinates); artifacts.add(coordinate); return new ArtifactCoordinates(groupId, artifacts); } - } 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 e3880b3..f10b711 100644 --- a/src/main/java/org/springframework/data/release/model/Project.java +++ b/src/main/java/org/springframework/data/release/model/Project.java @@ -22,6 +22,8 @@ import lombok.RequiredArgsConstructor; import lombok.ToString; import lombok.experimental.Wither; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -40,31 +42,25 @@ public class Project implements Comparable { private final @Wither String fullName; private final @Getter List dependencies; private final @Getter Tracker tracker; - private final @Getter ArtifactCoordinates additionalArtifacts; + private final @Wither @Getter ArtifactCoordinates additionalArtifacts; private final @Wither boolean skipTests; - Project(String key, String name, List dependencies) { - this(key, name, null, Tracker.JIRA, dependencies, ArtifactCoordinates.NONE); + Project(String key, String name) { + this(key, name, null, Tracker.JIRA); } - Project(String key, String name, List dependencies, ArtifactCoordinates additionalArtifacts) { - this(key, name, null, Tracker.JIRA, dependencies, additionalArtifacts); + Project(String key, String name, Tracker tracker) { + this(key, name, null, tracker); } - Project(String key, String name, Tracker tracker, List dependencies, - ArtifactCoordinates additionalArtifacts) { - this(key, name, null, tracker, dependencies, additionalArtifacts); - } - - private Project(String key, String name, String fullName, Tracker tracker, List dependencies, - ArtifactCoordinates additionalArtifacts) { + private Project(String key, String name, String fullName, Tracker tracker) { this.key = new ProjectKey(key); this.name = name; this.fullName = fullName; - this.dependencies = dependencies; + this.dependencies = Collections.emptyList(); this.tracker = tracker; - this.additionalArtifacts = additionalArtifacts; + this.additionalArtifacts = ArtifactCoordinates.SPRING_DATA; this.skipTests = false; } @@ -105,6 +101,10 @@ public class Project implements Comparable { return this.skipTests; } + public Project withDependencies(Project... project) { + return new Project(key, name, fullName, Arrays.asList(project), tracker, additionalArtifacts, skipTests); + } + /* * (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) diff --git a/src/main/java/org/springframework/data/release/model/Projects.java b/src/main/java/org/springframework/data/release/model/Projects.java index d6a16c8..9540e0c 100644 --- a/src/main/java/org/springframework/data/release/model/Projects.java +++ b/src/main/java/org/springframework/data/release/model/Projects.java @@ -18,7 +18,6 @@ package org.springframework.data.release.model; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -37,39 +36,55 @@ public class Projects { static { - BUILD = new Project("DATABUILD", "Build", Tracker.GITHUB, Collections.emptyList(), - ArtifactCoordinates.forGroupId("org.springframework.data.build") + BUILD = new Project("DATABUILD", "Build", Tracker.GITHUB) // + .withAdditionalArtifacts(ArtifactCoordinates.forGroupId("org.springframework.data.build") .artifacts("spring-data-build-parent", "spring-data-build-resources") - .artifact(ArtifactCoordinate.of("org.springframework.data", "spring-data-releasetrain"))); - COMMONS = new Project("DATACMNS", "Commons", Arrays.asList(BUILD)); - JPA = new Project("DATAJPA", "JPA", Arrays.asList(COMMONS)); - MONGO_DB = new Project("DATAMONGO", "MongoDB", Arrays.asList(COMMONS), - ArtifactCoordinates.NONE.artifacts("spring-data-mongodb-cross-store")); - NEO4J = new Project("DATAGRAPH", "Neo4j", Arrays.asList(COMMONS)); + .and(ArtifactCoordinate.of("org.springframework.data", "spring-data-releasetrain"))); - SOLR = new Project("DATASOLR", "Solr", Arrays.asList(COMMONS))// + COMMONS = new Project("DATACMNS", "Commons").withDependencies(BUILD); + + JPA = new Project("DATAJPA", "JPA").withDependencies(COMMONS); + + MONGO_DB = new Project("DATAMONGO", "MongoDB")// + .withDependencies(COMMONS) // + .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-data-mongodb-cross-store")); + + NEO4J = new Project("DATAGRAPH", "Neo4j").withDependencies(COMMONS); + + SOLR = new Project("DATASOLR", "Solr") // + .withDependencies(COMMONS) // .withFullName("Spring Data for Apache Solr"); - COUCHBASE = new Project("DATACOUCH", "Couchbase", Arrays.asList(COMMONS)); + COUCHBASE = new Project("DATACOUCH", "Couchbase").withDependencies(COMMONS); - CASSANDRA = new Project("DATACASS", "Cassandra", Arrays.asList(COMMONS)) // + CASSANDRA = new Project("DATACASS", "Cassandra")// + .withDependencies(COMMONS) // + .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA.artifacts("spring-cql")) .withFullName("Spring Data for Apache Cassandra"); - ELASTICSEARCH = new Project("DATAES", "Elasticsearch", Arrays.asList(COMMONS)); - KEY_VALUE = new Project("DATAKV", "KeyValue", Arrays.asList(COMMONS)); - REDIS = new Project("DATAREDIS", "Redis", Arrays.asList(COMMONS, KEY_VALUE)); - GEMFIRE = new Project("SGF", "Gemfire", Arrays.asList(COMMONS)).withSkipTests(true); + ELASTICSEARCH = new Project("DATAES", "Elasticsearch").withDependencies(COMMONS); - GEODE = new Project("DATAGEODE", "Geode", Arrays.asList(COMMONS)) // + KEY_VALUE = new Project("DATAKV", "KeyValue").withDependencies(COMMONS); + + REDIS = new Project("DATAREDIS", "Redis").withDependencies(KEY_VALUE); + + GEMFIRE = new Project("SGF", "Gemfire")// + .withDependencies(COMMONS)// + .withSkipTests(true); + + GEODE = new Project("DATAGEODE", "Geode")// + .withDependencies(COMMONS) // .withFullName("Spring Data for Apache Geode") // .withSkipTests(true); - REST = new Project("DATAREST", "REST", - Arrays.asList(COMMONS, JPA, MONGO_DB, NEO4J, GEMFIRE, SOLR, CASSANDRA, KEY_VALUE), ArtifactCoordinates.NONE + REST = new Project("DATAREST", "REST")// + .withDependencies(JPA, MONGO_DB, NEO4J, GEMFIRE, SOLR, CASSANDRA, KEY_VALUE) // + .withAdditionalArtifacts(ArtifactCoordinates.SPRING_DATA // .artifacts("spring-data-rest-core", "spring-data-rest-core", "spring-data-rest-hal-browser")); - ENVERS = new Project("DATAENV", "Envers", Tracker.GITHUB, Arrays.asList(JPA, COMMONS), ArtifactCoordinates.NONE); - LDAP = new Project("DATALDAP", "LDAP", Arrays.asList(COMMONS)); + ENVERS = new Project("DATAENV", "Envers", Tracker.GITHUB).withDependencies(JPA); + + LDAP = new Project("DATALDAP", "LDAP").withDependencies(COMMONS); List projects = Arrays.asList(BUILD, COMMONS, JPA, MONGO_DB, NEO4J, SOLR, COUCHBASE, CASSANDRA, ELASTICSEARCH, REDIS, GEMFIRE, REST, KEY_VALUE, ENVERS, LDAP, GEODE); @@ -86,12 +101,8 @@ public class Projects { }); }); - Iterator iterator = new TopologicalOrderIterator<>(graph); List intermediate = new ArrayList<>(projects.size()); - - while (iterator.hasNext()) { - intermediate.add(iterator.next()); - } + new TopologicalOrderIterator<>(graph).forEachRemaining(it -> intermediate.add(it)); Collections.reverse(intermediate); diff --git a/src/test/java/org/springframework/data/release/model/ProjectUnitTests.java b/src/test/java/org/springframework/data/release/model/ProjectUnitTests.java index 1ede0d1..6e3725c 100644 --- a/src/test/java/org/springframework/data/release/model/ProjectUnitTests.java +++ b/src/test/java/org/springframework/data/release/model/ProjectUnitTests.java @@ -37,8 +37,6 @@ public class ProjectUnitTests { projects.stream().map(Project::getName).forEach(System.out::println); - System.out.println(); - assertThat(projects.get(0), is(Projects.BUILD)); assertThat(projects.get(1), is(Projects.COMMONS)); }