diff --git a/cli/pom.xml b/cli/pom.xml
index 1c0714f..80ebdd7 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -25,8 +25,8 @@
- io.avaje
- avaje-jsonb
+ com.fasterxml.jackson.core
+ jackson-databind
diff --git a/cli/src/main/java/com/pwinckles/cassette/cli/Main.java b/cli/src/main/java/com/pwinckles/cassette/cli/Main.java
index 84f1be7..b5ac003 100644
--- a/cli/src/main/java/com/pwinckles/cassette/cli/Main.java
+++ b/cli/src/main/java/com/pwinckles/cassette/cli/Main.java
@@ -1,5 +1,6 @@
package com.pwinckles.cassette.cli;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.pwinckles.cassette.common.model.Data;
import com.pwinckles.cassette.common.model.Move;
import com.pwinckles.cassette.common.model.MoveAccuracy;
@@ -8,7 +9,6 @@
import com.pwinckles.cassette.common.model.Species;
import com.pwinckles.cassette.index.Index;
import com.pwinckles.cassette.index.SearchResult;
-import io.avaje.jsonb.Jsonb;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Map;
@@ -187,10 +187,9 @@ private static void print(Move move) {
}
private static Data readData() throws IOException {
- var jsonb = Jsonb.builder().build();
- var dataJsonType = jsonb.type(Data.class);
+ var objectMapper = new ObjectMapper();
try (var is = new BufferedInputStream(Main.class.getResourceAsStream("/data.json"))) {
- return dataJsonType.fromJson(is);
+ return objectMapper.readValue(is, Data.class);
}
}
diff --git a/common/pom.xml b/common/pom.xml
index f88dbc3..4aee7ac 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -19,13 +19,8 @@
- io.avaje
- avaje-jsonb
-
-
- io.avaje
- avaje-jsonb-generator
- provided
+ com.fasterxml.jackson.core
+ jackson-annotations
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/BootlegMoves.java b/common/src/main/java/com/pwinckles/cassette/common/model/BootlegMoves.java
index 5c30f8d..d68ff31 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/BootlegMoves.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/BootlegMoves.java
@@ -1,10 +1,15 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
-@Json
@RecordBuilderFull
-public record BootlegMoves(List common, Map> typeSpecific) {}
+public record BootlegMoves(List common, Map> typeSpecific) {
+
+ public BootlegMoves(List common, Map> typeSpecific) {
+ this.common = Objects.requireNonNull(common);
+ this.typeSpecific = Objects.requireNonNull(typeSpecific);
+ }
+}
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/CompatibleSpecies.java b/common/src/main/java/com/pwinckles/cassette/common/model/CompatibleSpecies.java
index 58669bd..3b28ea1 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/CompatibleSpecies.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/CompatibleSpecies.java
@@ -1,10 +1,8 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.Objects;
-@Json
@RecordBuilderFull
public record CompatibleSpecies(String name, MoveSource source) {
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/Data.java b/common/src/main/java/com/pwinckles/cassette/common/model/Data.java
index 6cdb27b..297f16a 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/Data.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/Data.java
@@ -1,11 +1,9 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.List;
import java.util.Objects;
-@Json
@RecordBuilderFull
public record Data(List species, List moves) {
public Data(List species, List moves) {
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/Move.java b/common/src/main/java/com/pwinckles/cassette/common/model/Move.java
index 83ff14b..c83a592 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/Move.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/Move.java
@@ -1,12 +1,10 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-@Json
@RecordBuilderFull
public record Move(
String name,
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/MoveAccuracy.java b/common/src/main/java/com/pwinckles/cassette/common/model/MoveAccuracy.java
index a8bd3eb..3c01ec9 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/MoveAccuracy.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/MoveAccuracy.java
@@ -1,10 +1,13 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
-@Json
-@Json.SubType(type = MoveAccuracy.Unavoidable.class, name = "UNAVOIDABLE")
-@Json.SubType(type = MoveAccuracy.Avoidable.class, name = "AVOIDABLE")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = MoveAccuracy.Unavoidable.class, name = "UNAVOIDABLE"),
+ @JsonSubTypes.Type(value = MoveAccuracy.Avoidable.class, name = "AVOIDABLE")
+})
public interface MoveAccuracy {
record Unavoidable() implements MoveAccuracy {}
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/MoveHits.java b/common/src/main/java/com/pwinckles/cassette/common/model/MoveHits.java
index 635ebff..429c3b8 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/MoveHits.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/MoveHits.java
@@ -1,9 +1,7 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
-@Json
@RecordBuilderFull
public record MoveHits(int min, int max) {
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/Species.java b/common/src/main/java/com/pwinckles/cassette/common/model/Species.java
index 9c4094a..314163d 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/Species.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/Species.java
@@ -1,11 +1,9 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.List;
import java.util.Objects;
-@Json
@RecordBuilderFull
public record Species(
String name,
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesMoves.java b/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesMoves.java
index eb2d94d..f97d5a4 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesMoves.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesMoves.java
@@ -1,9 +1,7 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.List;
-@Json
@RecordBuilderFull
public record SpeciesMoves(List initial, List learned, List compatible, BootlegMoves bootleg) {}
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesStats.java b/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesStats.java
index 5f2afe8..983d9c1 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesStats.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/SpeciesStats.java
@@ -1,9 +1,7 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
-@Json
@RecordBuilderFull
public record SpeciesStats(
int hp,
diff --git a/common/src/main/java/com/pwinckles/cassette/common/model/StatusEffect.java b/common/src/main/java/com/pwinckles/cassette/common/model/StatusEffect.java
index 4202ec1..2479222 100644
--- a/common/src/main/java/com/pwinckles/cassette/common/model/StatusEffect.java
+++ b/common/src/main/java/com/pwinckles/cassette/common/model/StatusEffect.java
@@ -1,10 +1,8 @@
package com.pwinckles.cassette.common.model;
-import io.avaje.jsonb.Json;
import io.soabase.recordbuilder.core.RecordBuilderFull;
import java.util.Objects;
-@Json
@RecordBuilderFull
public record StatusEffect(String name, Kind kind) {
diff --git a/pom.xml b/pom.xml
index 57f4ed6..80bd8e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,7 @@
2.0.7
36
9.7.0
- 1.6-RC5
+ 2.15.2
@@ -71,15 +71,14 @@
- io.avaje
- avaje-jsonb
- ${avaje.jsonb.version}
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson.version}
- io.avaje
- avaje-jsonb-generator
- ${avaje.jsonb.version}
- provided
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
diff --git a/scraper/pom.xml b/scraper/pom.xml
index 8ec559d..0bdabf8 100644
--- a/scraper/pom.xml
+++ b/scraper/pom.xml
@@ -31,13 +31,8 @@
- io.avaje
- avaje-jsonb
-
-
- io.avaje
- avaje-jsonb-generator
- provided
+ com.fasterxml.jackson.core
+ jackson-databind
diff --git a/scraper/src/main/java/com/pwinckles/cassette/scraper/Assembler.java b/scraper/src/main/java/com/pwinckles/cassette/scraper/Assembler.java
index 0f61b7e..7ada8ec 100644
--- a/scraper/src/main/java/com/pwinckles/cassette/scraper/Assembler.java
+++ b/scraper/src/main/java/com/pwinckles/cassette/scraper/Assembler.java
@@ -1,11 +1,9 @@
package com.pwinckles.cassette.scraper;
-import com.pwinckles.cassette.common.model.Data;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.pwinckles.cassette.common.model.DataBuilder;
import com.pwinckles.cassette.common.model.Move;
import com.pwinckles.cassette.common.model.Species;
-import io.avaje.jsonb.JsonType;
-import io.avaje.jsonb.Jsonb;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
@@ -17,15 +15,10 @@ public class Assembler {
private static final Logger log = LoggerFactory.getLogger(Assembler.class);
- private JsonType dataJsonType;
- private final JsonType speciesJsonType;
- private final JsonType moveJsonType;
+ private final ObjectMapper objectMapper;
public Assembler() {
- var jsonb = Jsonb.builder().build();
- this.dataJsonType = jsonb.type(Data.class);
- this.speciesJsonType = jsonb.type(Species.class);
- this.moveJsonType = jsonb.type(Move.class);
+ this.objectMapper = new ObjectMapper();
}
public void assemble(Path dir) throws IOException {
@@ -35,21 +28,19 @@ public void assemble(Path dir) throws IOException {
var data = DataBuilder.builder();
try (var files = Files.list(dir.resolve(Constants.SPECIES_DIR))) {
- files.map(file -> readJson(file, speciesJsonType)).forEach(data::addSpecies);
+ files.map(file -> readJson(file, Species.class)).forEach(data::addSpecies);
}
try (var files = Files.list(dir.resolve(Constants.MOVES_DIR))) {
- files.map(file -> readJson(file, moveJsonType)).forEach(data::addMoves);
+ files.map(file -> readJson(file, Move.class)).forEach(data::addMoves);
}
- try (var writer = Files.newBufferedWriter(outputFile)) {
- dataJsonType.toJson(data.build(), writer);
- }
+ objectMapper.writeValue(outputFile.toFile(), data.build());
}
- private T readJson(Path file, JsonType jsonType) {
- try (var reader = Files.newBufferedReader(file)) {
- return jsonType.fromJson(reader);
+ private T readJson(Path file, Class clazz) {
+ try {
+ return objectMapper.readValue(file.toFile(), clazz);
} catch (IOException e) {
throw new UncheckedIOException(e.getMessage(), e);
}
diff --git a/scraper/src/main/java/com/pwinckles/cassette/scraper/WikiScraper.java b/scraper/src/main/java/com/pwinckles/cassette/scraper/WikiScraper.java
index 7a72f6d..32268b8 100644
--- a/scraper/src/main/java/com/pwinckles/cassette/scraper/WikiScraper.java
+++ b/scraper/src/main/java/com/pwinckles/cassette/scraper/WikiScraper.java
@@ -1,11 +1,9 @@
package com.pwinckles.cassette.scraper;
-import com.pwinckles.cassette.common.model.Move;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
import com.pwinckles.cassette.common.model.MoveBuilder;
-import com.pwinckles.cassette.common.model.Species;
import com.pwinckles.cassette.common.model.SpeciesBuilder;
-import io.avaje.jsonb.JsonType;
-import io.avaje.jsonb.Jsonb;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -27,17 +25,14 @@ public class WikiScraper {
private final SpeciesScraper speciesScraper;
private final MoveScraper moveScraper;
- private final JsonType speciesJsonType;
- private final JsonType moveJsonType;
+ private final ObjectMapper objectMapper;
private final Duration wait;
public WikiScraper() {
this.speciesScraper = new SpeciesScraper();
this.moveScraper = new MoveScraper();
- var jsonb = Jsonb.builder().build();
- this.speciesJsonType = jsonb.type(Species.class);
- this.moveJsonType = jsonb.type(Move.class);
+ this.objectMapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
this.wait = Duration.ofSeconds(1);
}
@@ -62,8 +57,7 @@ private void scrapeSpecies(Path speciesDir) throws IOException, InterruptedExcep
} else {
var url = BASE_URL + s.ref;
var scraped = SpeciesBuilder.from(speciesScraper.scrape(url)).withUrl(url);
- var json = speciesJsonType.toJsonPretty(scraped);
- Files.writeString(output, json);
+ objectMapper.writeValue(output.toFile(), scraped);
if (it.hasNext()) {
Thread.sleep(wait.toMillis());
@@ -88,8 +82,7 @@ private void scrapeMoves(Path movesDir) throws IOException, InterruptedException
} else {
var url = BASE_URL + move.ref;
var scraped = MoveBuilder.from(moveScraper.scrape(url)).withUrl(url);
- var json = moveJsonType.toJsonPretty(scraped);
- Files.writeString(output, json);
+ objectMapper.writeValue(output.toFile(), scraped);
if (it.hasNext()) {
Thread.sleep(wait.toMillis());