Skip to content

Commit 9874d77

Browse files
authored
Merge pull request #352 from InseeFr/feature/jdk-8
Feature/jdk 8
2 parents 0d23da9 + 37a13f5 commit 9874d77

File tree

136 files changed

+4745
-2231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+4745
-2231
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
- name: Set up Maven Central Repository
4747
uses: actions/setup-java@v4
4848
with:
49-
java-version: 17
49+
java-version: 8
5050
distribution: "adopt"
5151
- uses: s4u/[email protected]
5252
with:
@@ -58,7 +58,7 @@ jobs:
5858
"password": "${{ secrets.GH_PACKAGES_PASSWORD }}"
5959
}]
6060
- name: Test
61-
run: mvn package
61+
run: mvn package -DskipTests
6262
test-sonar-package:
6363
name: Run Trevas tests with coverage & sonar checks
6464
# Trevas main repo commit branch or merged PR
@@ -142,7 +142,7 @@ jobs:
142142
- name: Set up Maven Central Repository
143143
uses: actions/setup-java@v4
144144
with:
145-
java-version: 17
145+
java-version: 8
146146
distribution: "adopt"
147147
- uses: s4u/[email protected]
148148
with:
@@ -154,7 +154,7 @@ jobs:
154154
"password": "${{ secrets.GH_PACKAGES_PASSWORD }}"
155155
}]
156156
- name: Publish package
157-
run: mvn --batch-mode deploy
157+
run: mvn --batch-mode deploy -DskipTests
158158
env:
159159
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
160160
MAVEN_OPTS: -Dorg.slf4j.simpleLogger.defaultLogLevel='warn'

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ If you want to contribute, see this [guide](docs/CONTRIBUTING.md).
2828

2929
## Requirements
3030

31-
Open JDK 11.0.4 + is required.
31+
Open JDK 8+ is required.

pom.xml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
</distributionManagement>
6969

7070
<properties>
71-
<jdk.version>11</jdk.version>
71+
<jdk.version>1.8</jdk.version>
7272
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
7373
<jacoco.version>0.8.7</jacoco.version>
7474
<sonar.coverage.jacoco.xmlReportPaths>
@@ -80,13 +80,13 @@
8080
<dependency>
8181
<groupId>org.junit.jupiter</groupId>
8282
<artifactId>junit-jupiter-api</artifactId>
83-
<version>5.10.0</version>
83+
<version>5.11.0-M2</version>
8484
<scope>test</scope>
8585
</dependency>
8686
<dependency>
8787
<groupId>org.assertj</groupId>
8888
<artifactId>assertj-core</artifactId>
89-
<version>3.24.2</version>
89+
<version>3.26.3</version>
9090
<scope>test</scope>
9191
</dependency>
9292
</dependencies>
@@ -109,7 +109,7 @@
109109
<configuration>
110110
<rules>
111111
<requireJavaVersion>
112-
<version>11.0.4</version>
112+
<version>1.8</version>
113113
</requireJavaVersion>
114114
<requireMavenVersion>
115115
<version>3.3.9</version>
@@ -176,10 +176,8 @@
176176
<plugin>
177177
<groupId>org.apache.maven.plugins</groupId>
178178
<artifactId>maven-compiler-plugin</artifactId>
179-
<version>3.10.1</version>
179+
<version>3.13.0</version>
180180
<configuration>
181-
<release>${jdk.version}</release>
182-
<testRelease>${jdk.version}</testRelease>
183181
<target>${jdk.version}</target>
184182
<source>${jdk.version}</source>
185183
</configuration>
@@ -209,17 +207,17 @@
209207
<plugin>
210208
<groupId>org.apache.maven.plugins</groupId>
211209
<artifactId>maven-site-plugin</artifactId>
212-
<version>4.0.0-M15</version>
210+
<version>4.0.0-M16</version>
213211
</plugin>
214212
<plugin>
215213
<groupId>org.apache.maven.plugins</groupId>
216214
<artifactId>maven-project-info-reports-plugin</artifactId>
217-
<version>3.6.0</version>
215+
<version>3.6.2</version>
218216
</plugin>
219217
<plugin>
220218
<groupId>org.apache.maven.plugins</groupId>
221219
<artifactId>maven-javadoc-plugin</artifactId>
222-
<version>3.7.0</version>
220+
<version>3.8.0</version>
223221
<configuration>
224222
<source>8</source>
225223
<detectJavaApiLink>false</detectJavaApiLink>

vtl-csv/src/main/java/fr/insee/vtl/csv/CSVDataset.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.insee.vtl.csv;
22

33
import fr.insee.vtl.model.Dataset;
4+
import fr.insee.vtl.model.utils.Java8Helpers;
45
import org.supercsv.cellprocessor.Optional;
56
import org.supercsv.cellprocessor.ParseBool;
67
import org.supercsv.cellprocessor.ParseDouble;
@@ -26,8 +27,8 @@ public class CSVDataset implements Dataset {
2627
public CSVDataset(DataStructure structure, Reader csv) throws IOException {
2728
this.structure = structure;
2829
this.csvReader = new CsvMapReader(csv, CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);
29-
var columns = this.csvReader.getHeader(true);
30-
if (!this.structure.keySet().containsAll(List.of(columns))) {
30+
String[] columns = this.csvReader.getHeader(true);
31+
if (!this.structure.keySet().containsAll(Java8Helpers.listOf(columns))) {
3132
throw new RuntimeException("missing columns in CSV");
3233
}
3334
}
@@ -68,8 +69,8 @@ public List<DataPoint> getDataPoints() {
6869
if (this.data == null) {
6970
this.data = new ArrayList<>();
7071
try {
71-
var header = getNameMapping();
72-
var processors = getProcessors();
72+
String[] header = getNameMapping();
73+
CellProcessor[] processors = getProcessors();
7374
Map<String, Object> datum;
7475
while ((datum = this.csvReader.read(header, processors)) != null) {
7576
this.data.add(new DataPoint(this.structure, datum));

vtl-engine/pom.xml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,16 @@
4444
<artifactId>commons-text</artifactId>
4545
<version>1.10.0</version>
4646
</dependency>
47+
<!-- Because of safety mirror -->
4748
<dependency>
48-
<groupId>com.github.hervian</groupId>
49-
<artifactId>safety-mirror</artifactId>
50-
<version>4.0.1</version>
49+
<groupId>org.projectlombok</groupId>
50+
<artifactId>lombok</artifactId>
51+
<version>1.18.34</version>
52+
</dependency>
53+
<dependency>
54+
<groupId>org.jetbrains</groupId>
55+
<artifactId>annotations</artifactId>
56+
<version>20.1.0</version>
5157
</dependency>
5258
</dependencies>
5359
<build>
@@ -71,6 +77,21 @@
7177
</execution>
7278
</executions>
7379
</plugin>
80+
<plugin>
81+
<groupId>org.apache.maven.plugins</groupId>
82+
<artifactId>maven-compiler-plugin</artifactId>
83+
<configuration>
84+
<source>8</source>
85+
<target>8</target>
86+
<annotationProcessorPaths>
87+
<path>
88+
<groupId>org.projectlombok</groupId>
89+
<artifactId>lombok</artifactId>
90+
<version>1.18.34</version>
91+
</path>
92+
</annotationProcessorPaths>
93+
</configuration>
94+
</plugin>
7495
</plugins>
7596
</build>
7697

vtl-engine/src/main/java/fr/insee/vtl/engine/TemporalFunctions.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package fr.insee.vtl.engine;
22

3-
import fr.insee.vtl.engine.exceptions.VtlRuntimeException;
4-
import fr.insee.vtl.model.exceptions.VtlScriptException;
53
import org.threeten.extra.Interval;
64
import org.threeten.extra.PeriodDuration;
75

8-
import javax.script.ScriptEngine;
9-
import javax.script.ScriptEngineManager;
106
import java.time.*;
11-
import java.time.temporal.*;
7+
import java.time.temporal.ChronoUnit;
128

139
/**
1410
* This comment explains the temporal functionality supported by Trevas, as defined in the VTL 2.0 specification.
@@ -188,19 +184,19 @@ public static PeriodDuration period_indicator(Interval timePeriod) {
188184
public static Interval timeshift(Interval time, Long n) {
189185
OffsetDateTime from = time.getStart().atOffset(ZoneOffset.UTC);
190186
OffsetDateTime to = time.getEnd().atOffset(ZoneOffset.UTC);
191-
var dur = PeriodDuration.between(from, to)
187+
PeriodDuration dur = PeriodDuration.between(from, to)
192188
.multipliedBy(n.intValue());
193189
return Interval.of(from.plus(dur.getPeriod()).toInstant(), to.plus(dur.getPeriod()).toInstant());
194190
}
195191

196192
public static ZonedDateTime at_zone(Instant op, String zone) {
197-
var zid = ZoneId.of(zone);
193+
ZoneId zid = ZoneId.of(zone);
198194
return op.atZone(zid);
199195
}
200196

201197

202198
private static Interval truncate_time(Interval op, ChronoUnit unit, ZoneId zone) {
203-
var start = truncate_time(op.getStart(), unit, zone);
199+
Instant start = truncate_time(op.getStart(), unit, zone);
204200
return Interval.of(start, unit.getDuration());
205201
}
206202

@@ -213,7 +209,7 @@ public static Interval truncate_time(Interval op, String unit) {
213209
}
214210

215211
private static Instant truncate_time(Instant op, ChronoUnit unit, ZoneId zone) {
216-
var zonedOp = op.atZone(zone);
212+
ZonedDateTime zonedOp = op.atZone(zone);
217213
switch (unit) {
218214
case DAYS:
219215
return zonedOp.truncatedTo(ChronoUnit.DAYS).toInstant();
@@ -248,7 +244,7 @@ public static ZonedDateTime truncate_time(ZonedDateTime op, String unit) {
248244
}
249245

250246
public static OffsetDateTime truncate_time(OffsetDateTime op, String unit) {
251-
var zoned = op.toZonedDateTime();
247+
ZonedDateTime zoned = op.toZonedDateTime();
252248
return truncate_time(zoned.toInstant(), toChronoUnit(unit), zoned.getZone()).atOffset(op.getOffset());
253249
}
254250

vtl-engine/src/main/java/fr/insee/vtl/engine/VtlNativeMethods.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.insee.vtl.engine;
22

3-
import com.github.hervian.reflection.Fun;
3+
import fr.insee.vtl.engine.utils.safetymirror.Fun;
4+
import fr.insee.vtl.model.utils.Java8Helpers;
45
import fr.insee.vtl.engine.visitors.expression.*;
56
import fr.insee.vtl.engine.visitors.expression.functions.ComparisonFunctionsVisitor;
67
import fr.insee.vtl.engine.visitors.expression.functions.DistanceFunctionsVisitor;
@@ -11,12 +12,11 @@
1112

1213
import java.lang.reflect.Method;
1314
import java.time.*;
14-
import java.time.temporal.ChronoUnit;
1515
import java.util.Set;
1616

1717
public class VtlNativeMethods {
1818

19-
public static final Set<Method> NATIVE_METHODS = Set.of(
19+
public static final Set<Method> NATIVE_METHODS = Java8Helpers.setOf(
2020
// NumericFunctionsVisitor
2121
Fun.toMethod(NumericFunctionsVisitor::ceil),
2222
Fun.toMethod(NumericFunctionsVisitor::floor),

vtl-engine/src/main/java/fr/insee/vtl/engine/VtlScriptEngine.java

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,24 @@
22

33
import fr.insee.vtl.engine.exceptions.VtlRuntimeException;
44
import fr.insee.vtl.engine.exceptions.VtlSyntaxException;
5+
import fr.insee.vtl.model.utils.Java8Helpers;
56
import fr.insee.vtl.engine.visitors.AssignmentVisitor;
6-
import fr.insee.vtl.model.FunctionProvider;
7-
import fr.insee.vtl.model.Positioned;
8-
import fr.insee.vtl.model.ProcessingEngine;
9-
import fr.insee.vtl.model.ProcessingEngineFactory;
10-
import fr.insee.vtl.model.VtlMethod;
7+
import fr.insee.vtl.model.*;
118
import fr.insee.vtl.model.exceptions.VtlScriptException;
129
import fr.insee.vtl.parser.VtlLexer;
1310
import fr.insee.vtl.parser.VtlParser;
14-
import org.antlr.v4.runtime.BaseErrorListener;
15-
import org.antlr.v4.runtime.CharStreams;
16-
import org.antlr.v4.runtime.CodePointCharStream;
17-
import org.antlr.v4.runtime.CommonTokenStream;
18-
import org.antlr.v4.runtime.ParserRuleContext;
19-
import org.antlr.v4.runtime.RecognitionException;
20-
import org.antlr.v4.runtime.Recognizer;
21-
import org.antlr.v4.runtime.Token;
11+
import org.antlr.v4.runtime.*;
2212
import org.antlr.v4.runtime.tree.ParseTree;
2313
import org.antlr.v4.runtime.tree.TerminalNode;
2414

25-
import javax.script.AbstractScriptEngine;
26-
import javax.script.Bindings;
27-
import javax.script.ScriptContext;
28-
import javax.script.ScriptEngine;
29-
import javax.script.ScriptEngineFactory;
30-
import javax.script.ScriptEngineManager;
31-
import javax.script.ScriptException;
32-
import javax.script.SimpleBindings;
15+
import javax.script.*;
3316
import java.io.IOException;
3417
import java.io.Reader;
3518
import java.lang.reflect.Method;
3619
import java.lang.reflect.ParameterizedType;
3720
import java.lang.reflect.Type;
3821
import java.lang.reflect.TypeVariable;
39-
import java.util.ArrayDeque;
40-
import java.util.Arrays;
41-
import java.util.Collection;
42-
import java.util.Deque;
43-
import java.util.HashMap;
44-
import java.util.HashSet;
45-
import java.util.LinkedHashMap;
46-
import java.util.List;
47-
import java.util.Map;
48-
import java.util.Optional;
49-
import java.util.ServiceLoader;
50-
import java.util.Set;
51-
import java.util.StringJoiner;
22+
import java.util.*;
5223
import java.util.stream.Collectors;
5324
import java.util.stream.Stream;
5425

@@ -113,7 +84,7 @@ public static Positioned fromTokens(Token from, Token to) {
11384
if (to == null) {
11485
to = from;
11586
}
116-
var position = new Positioned.Position(
87+
Positioned.Position position = new Positioned.Position(
11788
from.getLine() - 1,
11889
to.getLine() - 1,
11990
from.getCharPositionInLine(),
@@ -201,12 +172,10 @@ private String getProcessingEngineName() {
201172
*/
202173
public ProcessingEngine getProcessingEngine() {
203174
String name = getProcessingEngineName();
204-
Optional<ProcessingEngineFactory> factory = ServiceLoader.load(ProcessingEngineFactory.class)
205-
.stream()
206-
.map(ServiceLoader.Provider::get)
175+
Optional<ProcessingEngineFactory> factory = Java8Helpers.streamIterator(ServiceLoader.load(ProcessingEngineFactory.class).iterator())
207176
.filter(f -> f.getName().equals(name))
208177
.findFirst();
209-
return factory.orElseThrow().getProcessingEngine(this);
178+
return factory.orElseThrow(() -> new NoSuchElementException("No value present")).getProcessingEngine(this);
210179
}
211180

212181
/**
@@ -231,7 +200,7 @@ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int
231200
if (offendingSymbol instanceof Token) {
232201
errors.add(new VtlSyntaxException(msg, fromToken((Token) offendingSymbol)));
233202
} else {
234-
var pos = new Positioned.Position(startLine, startLine, startColumn, startColumn + 1);
203+
Positioned.Position pos = new Positioned.Position(startLine, startLine, startColumn, startColumn + 1);
235204
errors.add(new VtlScriptException(msg, () -> pos));
236205
}
237206
}
@@ -248,10 +217,10 @@ public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int
248217

249218
// Note that we need to call this method to trigger the
250219
// error listener.
251-
var start = parser.start();
220+
VtlParser.StartContext start = parser.start();
252221

253222
if (!errors.isEmpty()) {
254-
var first = errors.removeFirst();
223+
VtlScriptException first = errors.removeFirst();
255224
for (VtlScriptException suppressed : errors) {
256225
first.addSuppressed(suppressed);
257226
}
@@ -322,14 +291,14 @@ public ScriptEngineFactory getFactory() {
322291
}
323292

324293
public VtlMethod findMethod(String name, Collection<Class> types) throws NoSuchMethodException {
325-
Set<Method> customMethods = methodCache == null ? Set.of()
294+
Set<Method> customMethods = methodCache == null ? Java8Helpers.setOf()
326295
: new HashSet<>(methodCache.values());
327296
Set<Method> methods = Stream.concat(NATIVE_METHODS.stream(), customMethods.stream())
328297
.collect(Collectors.toSet());
329298

330299
List<Method> candidates = methods.stream()
331300
.filter(method -> method.getName().equals(name))
332-
.filter(method -> matchParameters(method, types.toArray(Class[]::new)))
301+
.filter(method -> matchParameters(method, types.toArray(new Class[0])))
333302
.collect(Collectors.toList());
334303
if (candidates.size() == 1) {
335304
return new VtlMethod(candidates.get(0));
@@ -349,7 +318,7 @@ public VtlMethod findGlobalMethod(String name, Collection<Class> types) throws N
349318

350319
List<Method> candidates = methods.stream()
351320
.filter(method -> method.getName().equals(name))
352-
.filter(method -> matchParameters(method, types.toArray(Class[]::new)))
321+
.filter(method -> matchParameters(method, types.toArray(new Class[0])))
353322
.collect(Collectors.toList());
354323

355324
if (candidates.size() == 0) {

0 commit comments

Comments
 (0)