Modularize plugin
This commit is contained in:
parent
6e08ed39ed
commit
38092271a3
|
@ -16,6 +16,7 @@
|
||||||
<properties>
|
<properties>
|
||||||
<revision>1.0.0.0-SNAPSHOT</revision>
|
<revision>1.0.0.0-SNAPSHOT</revision>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<fastutil.version>8.5.11</fastutil.version>
|
||||||
</properties>
|
</properties>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
|
@ -193,7 +194,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.unimi.dsi</groupId>
|
<groupId>it.unimi.dsi</groupId>
|
||||||
<artifactId>fastutil</artifactId>
|
<artifactId>fastutil</artifactId>
|
||||||
<version>8.5.11</version>
|
<version>${fastutil.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.maven</groupId>
|
<groupId>org.apache.maven</groupId>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import com.squareup.javapoet.ClassName;
|
import com.squareup.javapoet.ClassName;
|
||||||
import com.squareup.javapoet.ParameterizedTypeName;
|
import com.squareup.javapoet.ParameterizedTypeName;
|
|
@ -1,12 +1,9 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import static java.util.Objects.requireNonNull;
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.ints.IntArrayList;
|
|
||||||
import it.unimi.dsi.fastutil.ints.IntList;
|
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectCollection;
|
import it.unimi.dsi.fastutil.objects.ObjectCollection;
|
||||||
|
@ -20,7 +17,6 @@ import java.util.Set;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collector;
|
import java.util.stream.Collector;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
@ -98,7 +94,6 @@ public class DataModel {
|
||||||
// Build versions sequence
|
// Build versions sequence
|
||||||
List<String> rawVersionsSequence = new ArrayList<>();
|
List<String> rawVersionsSequence = new ArrayList<>();
|
||||||
int versionsCount = 0;
|
int versionsCount = 0;
|
||||||
IntList versionsSequence = IntStream.range(0, versionsCount).boxed().collect(Collectors.toCollection(IntArrayList::new));
|
|
||||||
Int2ObjectMap<String> versionToName = new Int2ObjectOpenHashMap<>();
|
Int2ObjectMap<String> versionToName = new Int2ObjectOpenHashMap<>();
|
||||||
Object2IntMap<String> nameToVersion = new Object2IntOpenHashMap<>();
|
Object2IntMap<String> nameToVersion = new Object2IntOpenHashMap<>();
|
||||||
{
|
{
|
||||||
|
@ -149,12 +144,6 @@ public class DataModel {
|
||||||
Int2ObjectMap<ParsedVersion> versions = new Int2ObjectOpenHashMap<>();
|
Int2ObjectMap<ParsedVersion> versions = new Int2ObjectOpenHashMap<>();
|
||||||
rawVersions.forEach((k, v) -> versions.put(nameToVersion.getInt(k), new ParsedVersion(v)));
|
rawVersions.forEach((k, v) -> versions.put(nameToVersion.getInt(k), new ParsedVersion(v)));
|
||||||
|
|
||||||
// Compute the cartesian product of version * base type
|
|
||||||
record VersionAndType(int version, String type) {}
|
|
||||||
List<VersionAndType> versionAndBaseType = Lists.<Object>cartesianProduct(versionsSequence, baseTypes).stream()
|
|
||||||
.map(tuple -> new VersionAndType((Integer) tuple.get(0), (String) tuple.get(1)))
|
|
||||||
.toList();
|
|
||||||
|
|
||||||
Int2ObjectMap<Map<String, ParsedClass>> computedClassConfig = new Int2ObjectOpenHashMap<>();
|
Int2ObjectMap<Map<String, ParsedClass>> computedClassConfig = new Int2ObjectOpenHashMap<>();
|
||||||
for (int versionIndex = 0; versionIndex < versionsCount; versionIndex++) {
|
for (int versionIndex = 0; versionIndex < versionsCount; versionIndex++) {
|
||||||
if (versionIndex == 0) {
|
if (versionIndex == 0) {
|
||||||
|
@ -246,7 +235,7 @@ public class DataModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default -> throw new IllegalArgumentException("Unknown transform name: "+ transformName);
|
default -> throw new IllegalArgumentException("Unknown transform name: "+ transformName);
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
computedClassConfig.put(versionIndex, newVersionConfiguration);
|
computedClassConfig.put(versionIndex, newVersionConfiguration);
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
|
@ -1,9 +1,8 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.maven.plugin.AbstractMojo;
|
import org.apache.maven.plugin.AbstractMojo;
|
||||||
import org.apache.maven.plugin.MojoExecutionException;
|
import org.apache.maven.plugin.MojoExecutionException;
|
||||||
import org.apache.maven.plugin.MojoFailureException;
|
import org.apache.maven.plugin.MojoFailureException;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import static it.cavallium.data.generator.DataModel.fixType;
|
import static it.cavallium.data.generator.plugin.DataModel.fixType;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
|
@ -1,6 +1,6 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import static it.cavallium.data.generator.DataModel.fixType;
|
import static it.cavallium.data.generator.plugin.DataModel.fixType;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
|
@ -1,8 +1,6 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class ParsedVersion {
|
public class ParsedVersion {
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import com.squareup.javapoet.CodeBlock;
|
import com.squareup.javapoet.CodeBlock;
|
||||||
import java.util.List;
|
import java.util.List;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import static java.nio.file.StandardOpenOption.*;
|
import static java.nio.file.StandardOpenOption.*;
|
||||||
|
|
||||||
|
@ -16,6 +16,10 @@ import com.squareup.javapoet.TypeSpec.Builder;
|
||||||
import com.squareup.javapoet.TypeVariableName;
|
import com.squareup.javapoet.TypeVariableName;
|
||||||
import com.squareup.javapoet.WildcardTypeName;
|
import com.squareup.javapoet.WildcardTypeName;
|
||||||
import io.soabase.recordbuilder.core.RecordBuilder;
|
import io.soabase.recordbuilder.core.RecordBuilder;
|
||||||
|
import it.cavallium.data.generator.CommonField;
|
||||||
|
import it.cavallium.data.generator.DataInitializer;
|
||||||
|
import it.cavallium.data.generator.DataSerializer;
|
||||||
|
import it.cavallium.data.generator.DataUpgrader;
|
||||||
import it.cavallium.data.generator.nativedata.IGenericNullable;
|
import it.cavallium.data.generator.nativedata.IGenericNullable;
|
||||||
import it.cavallium.data.generator.nativedata.Int52Serializer;
|
import it.cavallium.data.generator.nativedata.Int52Serializer;
|
||||||
import it.cavallium.data.generator.nativedata.StringSerializer;
|
import it.cavallium.data.generator.nativedata.StringSerializer;
|
||||||
|
@ -41,7 +45,6 @@ import java.lang.reflect.Array;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
@ -56,7 +59,6 @@ import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
public interface TransformationConfiguration {
|
public interface TransformationConfiguration {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class VersionConfiguration {
|
public class VersionConfiguration {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator.plugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
14
data-generator-plugin/src/main/java/module-info.java
Normal file
14
data-generator-plugin/src/main/java/module-info.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
module data.generator.plugin {
|
||||||
|
requires com.squareup.javapoet;
|
||||||
|
requires org.jetbrains.annotations;
|
||||||
|
requires maven.plugin.annotations;
|
||||||
|
requires maven.plugin.api;
|
||||||
|
requires maven.core;
|
||||||
|
requires io.soabase.recordbuilder.core;
|
||||||
|
requires data.generator.runtime;
|
||||||
|
requires java.compiler;
|
||||||
|
requires org.slf4j;
|
||||||
|
requires org.yaml.snakeyaml;
|
||||||
|
requires it.unimi.dsi.fastutil.core;
|
||||||
|
exports it.cavallium.data.generator.plugin;
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator;
|
||||||
|
|
||||||
|
import it.cavallium.data.generator.plugin.SourcesGenerator;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
public class TestGenerator {
|
public class TestGenerator {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user