Modularize plugin

This commit is contained in:
Andrea Cavalli 2023-01-18 02:00:02 +01:00
parent 6e08ed39ed
commit 38092271a3
25 changed files with 46 additions and 45 deletions

View File

@ -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>

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View File

@ -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;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
public interface TransformationConfiguration { public interface TransformationConfiguration {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator; package it.cavallium.data.generator.plugin;
import java.util.Objects; import java.util.Objects;

View 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;
}

View File

@ -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 {