@@ -25,13 +25,18 @@ public class ApiCoverageStateIndex implements VersionStateIndex {
2525
2626 private static final String RESOURCE_DIR = "api" ;
2727
28- private final Map <String , Map <String , Boolean >> data ;
29- private final Map <String , String > changelog = new HashMap <>();//NOPMD
28+ private final Map <String , Map <String , Boolean >> versioningData ;
29+ private final Map <String , Boolean > targetVersionData ;
30+ private final Map <String , String > changelog ;
3031 private String projectBasePath ;
31- private String version ;//NOPMD
3232
33+ /**
34+ * Api coverage state index constructor.
35+ */
3336 public ApiCoverageStateIndex () {
34- data = new LinkedHashMap <>();
37+ versioningData = new LinkedHashMap <>();
38+ targetVersionData = new HashMap <>();
39+ changelog = new HashMap <>();
3540 }
3641
3742 /**
@@ -43,13 +48,31 @@ public void setProjectBasePath(final @NotNull String projectBasePath) {
4348 this .projectBasePath = projectBasePath ;
4449 }
4550
51+ /**
52+ * Check if the specified FQN exists in the existence index.
53+ *
54+ * @param fqn String
55+ *
56+ * @return boolean
57+ */
58+ @ SuppressWarnings ("PMD.AvoidSynchronizedAtMethodLevel" )
59+ public synchronized boolean has (final @ NotNull String fqn ) {
60+ groupLoadedData ();
61+
62+ return targetVersionData .containsKey (fqn );
63+ }
64+
4665 /**
4766 * Get version state after lookup.
4867 *
68+ * @param fqn String
69+ *
4970 * @return String
5071 */
51- public String getVersion () {
52- return version ;
72+ public String getVersion (final @ NotNull String fqn ) {
73+ final String version = changelog .get (fqn );
74+
75+ return version == null ? "some" : version ;
5376 }
5477
5578 /**
@@ -58,16 +81,9 @@ public String getVersion() {
5881 * @return Map[String, Boolean]
5982 */
6083 public Map <String , Boolean > getIndexData () {
61- final Pair <Map <String , Boolean >, Map <String , String >> gatheredData =
62- VersioningDataOperationsUtil .unionVersionDataWithChangelog (
63- data ,
64- new ArrayList <>(Collections .singletonList (
65- SupportedVersion .V230 .getVersion ()
66- )),
67- true
68- );
84+ groupLoadedData ();
6985
70- return gatheredData . getFirst () ;
86+ return targetVersionData ;
7187 }
7288
7389 @ Override
@@ -139,7 +155,25 @@ private void putIndexData(
139155 final Map <String , Boolean > indexData
140156 ) {
141157 if (indexData != null ) {
142- data .put (version , indexData );
158+ versioningData .put (version , indexData );
159+ }
160+ }
161+
162+ /**
163+ * Group data according to purpose.
164+ */
165+ private void groupLoadedData () {
166+ if (targetVersionData .isEmpty () && !versioningData .isEmpty ()) {
167+ final Pair <Map <String , Boolean >, Map <String , String >> gatheredData =
168+ VersioningDataOperationsUtil .unionVersionDataWithChangelog (
169+ versioningData ,
170+ new ArrayList <>(Collections .singletonList (
171+ SupportedVersion .V230 .getVersion ()
172+ )),
173+ true
174+ );
175+ targetVersionData .putAll (gatheredData .getFirst ());
176+ changelog .putAll (gatheredData .getSecond ());
143177 }
144178 }
145179}
0 commit comments