Skip to content

Commit 7a0bc93

Browse files
authored
Merge pull request #102 from ProgrammeVitam/bugs_15547
bugs #15547 fix(configuration): support old seda version format
2 parents 79ea701 + 1e8e12f commit 7a0bc93

File tree

3 files changed

+75
-8
lines changed

3 files changed

+75
-8
lines changed

resip/src/main/java/fr/gouv/vitam/tools/resip/parameters/TreatmentParameters.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,12 @@ public TreatmentParameters(Preferences preferences) {
102102
dupMax = 1000;
103103
}
104104

105-
final String sedaVersion = preferences
105+
final String defaultConfiguredSedaVersion = SedaVersion.V2_1.toString();
106+
final String configuredSedaVersion = preferences
106107
.getPrefProperties()
107-
.getProperty("treatmentParameters.seda2Version", SedaVersion.V2_1.toString());
108+
.getProperty("treatmentParameters.seda2Version", defaultConfiguredSedaVersion);
108109

109-
EventBus.publish(new SedaVersionChangedEvent(SedaVersion.from(sedaVersion)));
110+
EventBus.publish(new SedaVersionChangedEvent(parseSedaVersion(configuredSedaVersion)));
110111
}
111112

112113
/**
@@ -228,4 +229,15 @@ public SedaVersion getSedaVersion() {
228229
public void setSedaVersion(SedaVersion version) {
229230
this.sedaVersion = version;
230231
}
232+
233+
private SedaVersion parseSedaVersion(String version) {
234+
final List<String> allowedVersions = List.of("1", "2", "3", "2.1", "2.2", "2.3");
235+
final String defaultVersion = allowedVersions.get(0);
236+
final String finalVersion = allowedVersions.stream()
237+
.filter(allowedVersion -> allowedVersion.equals(version))
238+
.findFirst()
239+
.orElse(defaultVersion);
240+
241+
return SedaVersion.from(finalVersion);
242+
}
231243
}

sedalib/src/main/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersion.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,22 @@ public static SedaVersion from(int major, int minor) {
4242

4343
public static SedaVersion from(String version) {
4444
String[] fragments = version.split("[.]");
45+
int major = 2;
46+
int minor;
4547

46-
if (fragments.length != 2) {
47-
throw new IllegalArgumentException("Unsupported SEDA version: " + version);
48+
if (fragments.length == 1) {
49+
minor = Integer.parseInt(fragments[0]);
50+
51+
return from(major, minor);
4852
}
4953

50-
int major = Integer.parseInt(fragments[0]);
51-
int minor = Integer.parseInt(fragments[1]);
54+
if (fragments.length == 2) {
55+
major = Integer.parseInt(fragments[0]);
56+
minor = Integer.parseInt(fragments[1]);
57+
58+
return from(major, minor);
59+
}
5260

53-
return from(major, minor);
61+
throw new IllegalArgumentException("Unsupported SEDA version: " + version);
5462
}
5563
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package fr.gouv.vitam.tools.sedalib.core.seda;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class SedaVersionTest {
8+
9+
@Test
10+
void shouldParseMinorOnlyVersions() {
11+
assertEquals(SedaVersion.V2_0, SedaVersion.from("0"));
12+
assertEquals(SedaVersion.V2_1, SedaVersion.from("1"));
13+
assertEquals(SedaVersion.V2_2, SedaVersion.from("2"));
14+
assertEquals(SedaVersion.V2_3, SedaVersion.from("3"));
15+
}
16+
17+
@Test
18+
void shouldParseMajorMinorVersions() {
19+
assertEquals(SedaVersion.V2_0, SedaVersion.from("2.0"));
20+
assertEquals(SedaVersion.V2_1, SedaVersion.from("2.1"));
21+
assertEquals(SedaVersion.V2_2, SedaVersion.from("2.2"));
22+
assertEquals(SedaVersion.V2_3, SedaVersion.from("2.3"));
23+
}
24+
25+
@Test
26+
void shouldThrowExceptionForUnsupportedMinorOnlyVersion() {
27+
IllegalArgumentException exception =
28+
assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("4"));
29+
30+
assertEquals("Unsupported SEDA version: 2.4", exception.getMessage());
31+
}
32+
33+
@Test
34+
void shouldThrowExceptionForUnsupportedMajorMinorVersion() {
35+
IllegalArgumentException exception =
36+
assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("3.0"));
37+
38+
assertEquals("Unsupported SEDA version: 3.0", exception.getMessage());
39+
}
40+
41+
@Test
42+
void shouldThrowExceptionForInvalidFormat() {
43+
assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("2.1.0"));
44+
assertThrows(NumberFormatException.class, () -> SedaVersion.from("a"));
45+
assertThrows(NumberFormatException.class, () -> SedaVersion.from("2.a"));
46+
}
47+
}

0 commit comments

Comments
 (0)