@@ -25,13 +25,18 @@ public class ApiCoverageStateIndex implements VersionStateIndex {
25
25
26
26
private static final String RESOURCE_DIR = "api" ;
27
27
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 ;
30
31
private String projectBasePath ;
31
- private String version ;//NOPMD
32
32
33
+ /**
34
+ * Api coverage state index constructor.
35
+ */
33
36
public ApiCoverageStateIndex () {
34
- data = new LinkedHashMap <>();
37
+ versioningData = new LinkedHashMap <>();
38
+ targetVersionData = new HashMap <>();
39
+ changelog = new HashMap <>();
35
40
}
36
41
37
42
/**
@@ -43,13 +48,31 @@ public void setProjectBasePath(final @NotNull String projectBasePath) {
43
48
this .projectBasePath = projectBasePath ;
44
49
}
45
50
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
+
46
65
/**
47
66
* Get version state after lookup.
48
67
*
68
+ * @param fqn String
69
+ *
49
70
* @return String
50
71
*/
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 ;
53
76
}
54
77
55
78
/**
@@ -58,16 +81,9 @@ public String getVersion() {
58
81
* @return Map[String, Boolean]
59
82
*/
60
83
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 ();
69
85
70
- return gatheredData . getFirst () ;
86
+ return targetVersionData ;
71
87
}
72
88
73
89
@ Override
@@ -139,7 +155,25 @@ private void putIndexData(
139
155
final Map <String , Boolean > indexData
140
156
) {
141
157
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 ());
143
177
}
144
178
}
145
179
}
0 commit comments