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>
<revision>1.0.0.0-SNAPSHOT</revision>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<fastutil.version>8.5.11</fastutil.version>
</properties>
<repositories>
<repository>
@ -193,7 +194,7 @@
<dependency>
<groupId>it.unimi.dsi</groupId>
<artifactId>fastutil</artifactId>
<version>8.5.11</version>
<version>${fastutil.version}</version>
</dependency>
<dependency>
<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.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.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.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.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 com.google.common.collect.Lists;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
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.Object2IntOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectCollection;
@ -20,7 +17,6 @@ import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import org.jetbrains.annotations.Nullable;
@ -98,7 +94,6 @@ public class DataModel {
// Build versions sequence
List<String> rawVersionsSequence = new ArrayList<>();
int versionsCount = 0;
IntList versionsSequence = IntStream.range(0, versionsCount).boxed().collect(Collectors.toCollection(IntArrayList::new));
Int2ObjectMap<String> versionToName = new Int2ObjectOpenHashMap<>();
Object2IntMap<String> nameToVersion = new Object2IntOpenHashMap<>();
{
@ -149,12 +144,6 @@ public class DataModel {
Int2ObjectMap<ParsedVersion> versions = new Int2ObjectOpenHashMap<>();
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<>();
for (int versionIndex = 0; versionIndex < versionsCount; versionIndex++) {
if (versionIndex == 0) {
@ -246,7 +235,7 @@ public class DataModel {
}
}
default -> throw new IllegalArgumentException("Unknown transform name: "+ transformName);
};
}
}
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;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
import java.util.HashMap;
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.IOException;
import java.nio.file.Path;
import org.apache.commons.io.FileUtils;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
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;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
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.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.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.Map;
import java.util.Objects;
public class ParsedVersion {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
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 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.*;
@ -16,6 +16,10 @@ import com.squareup.javapoet.TypeSpec.Builder;
import com.squareup.javapoet.TypeVariableName;
import com.squareup.javapoet.WildcardTypeName;
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.Int52Serializer;
import it.cavallium.data.generator.nativedata.StringSerializer;
@ -41,7 +45,6 @@ import java.lang.reflect.Array;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@ -56,7 +59,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
import java.util.stream.Collectors;
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.Objects;

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
import java.io.IOException;
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 {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
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.Map;
import java.util.Objects;
import java.util.Set;
public class VersionConfiguration {

View File

@ -1,4 +1,4 @@
package it.cavallium.data.generator;
package it.cavallium.data.generator.plugin;
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;
import it.cavallium.data.generator.plugin.SourcesGenerator;
import java.io.IOException;
import java.nio.file.Files;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Test;
public class TestGenerator {