diff --git a/build.gradle b/build.gradle
index deb8000c..4e39e948 100644
--- a/build.gradle
+++ b/build.gradle
@@ -20,7 +20,6 @@ editorconfig {
check.dependsOn(editorconfigCheck)
subprojects {
-
ext {
versions = [
'ace': '1.3.3',
@@ -48,6 +47,8 @@ subprojects {
apply from: "${rootDir}/gradle/source-layout.gradle"
+ check.dependsOn(javadoc)
+
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
@@ -76,6 +77,17 @@ subprojects {
options.compilerArgs << '-Werror'
}
+ javadoc {
+ // Can't exclude generated files based on source path
+ // (cf. https://stackoverflow.com/a/47711311).
+ //exclude '**/xtext-gen'
+ source = source.filter(f -> !f.getPath().contains('xtext-gen'))
+
+ options {
+ addBooleanOption 'Xwerror', true
+ }
+ }
+
publishing {
publications {
mavenArtifacts(MavenPublication) {
diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml
index 7d7b827f..d2677cc1 100644
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -69,6 +69,7 @@
+
@@ -92,14 +93,15 @@
-
+
+
@@ -151,8 +153,8 @@
-
+
diff --git a/gradle/source-layout.gradle b/gradle/source-layout.gradle
index 2103fff4..a5d55599 100644
--- a/gradle/source-layout.gradle
+++ b/gradle/source-layout.gradle
@@ -1,11 +1,11 @@
sourceSets {
main {
- java.srcDirs = ['src/main/java', 'src/main/xtext-gen']
- resources.srcDirs = ['src/main/resources', 'src/main/xtext-gen']
+ java.srcDir 'src/main/xtext-gen'
+ resources.srcDir 'src/main/xtext-gen'
}
test {
- java.srcDirs = ['src/test/java', 'src/test/xtext-gen']
- resources.srcDirs = ['src/test/resources', 'src/test/xtext-gen']
+ java.srcDir 'src/test/xtext-gen'
+ resources.srcDir 'src/test/xtext-gen'
}
}
diff --git a/metafix/build.gradle b/metafix/build.gradle
index 8fd11152..db7e9788 100644
--- a/metafix/build.gradle
+++ b/metafix/build.gradle
@@ -43,6 +43,10 @@ dependencies {
test {
useJUnitPlatform()
+
+ testlogger {
+ showFullStackTraces true
+ }
}
task install(dependsOn: publishToMavenLocal,
diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java
index 6b8f1ff4..c4415c6b 100644
--- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java
+++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java
@@ -18,14 +18,9 @@
import org.metafacture.metamorph.maps.FileMap;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -35,110 +30,107 @@ enum FixMethod {
// RECORD-LEVEL METHODS:
set_field {
- public void apply(final Map record, final List params,
- final Map options) {
- record.remove(params.get(0));
- insert(InsertMode.REPLACE, record, split(params.get(0)), params.get(1));
+ public void apply(final Record record, final List params, final Map options) {
+ final String field = params.get(0);
+
+ record.remove(field);
+ record.replace(field, params.get(1));
}
},
set_array {
- public void apply(final Map record, final List params,
- final Map options) {
- final String key = params.get(0);
+ public void apply(final Record record, final List params, final Map options) {
+ final String field = params.get(0);
final List toAdd = params.subList(1, params.size());
- if (key.endsWith(DOT_APPEND)) {
- Metafix.addAll(record, key.replace(DOT_APPEND, EMPTY), toAdd);
+ if (field.endsWith(DOT_APPEND)) {
+ record.addAll(field.replace(DOT_APPEND, EMPTY), toAdd);
}
else {
- record.put(key, toAdd);
+ record.put(field, Value.newArray(a -> toAdd.forEach(s -> a.add(new Value(s)))));
}
}
},
set_hash {
- @SuppressWarnings("unchecked")
- public void apply(final Map record, final List params,
- final Map options) {
- final String key = params.get(0);
- final Object val = record.get(key.replace(DOT_APPEND, EMPTY));
- if (key.endsWith(DOT_APPEND) && val instanceof List) {
- ((List