Skip to content

Commit 6415885

Browse files
committed
Update valuables library. Use standard adapters where applicable.
Fix migrations not copying values (remove destination existence check).
1 parent 43a60dc commit 6415885

5 files changed

Lines changed: 93 additions & 77 deletions

File tree

config-values-bukkit/src/main/java/community/leaf/configvalues/bukkit/YamlAccessors.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
*/
88
package community.leaf.configvalues.bukkit;
99

10+
import com.rezzedup.util.valuables.Adapts;
11+
import org.bukkit.Material;
12+
import org.bukkit.Sound;
13+
14+
import java.time.Instant;
1015
import java.util.List;
1116
import java.util.Map;
1217
import java.util.UUID;
@@ -15,21 +20,27 @@ final class YamlAccessors
1520
{
1621
private YamlAccessors() {}
1722

18-
static final YamlAccessor<String> STRING = YamlAccessor.of(YamlAdapters.STRING);
23+
static final YamlAccessor<String> STRING = YamlAccessor.of(Adapts.object().intoString());
1924

20-
static final YamlAccessor<Boolean> BOOLEAN = YamlAccessor.of(YamlAdapters.BOOLEAN);
25+
static final YamlAccessor<Boolean> BOOLEAN = YamlAccessor.of(Adapts.object().intoBoolean());
2126

22-
static final YamlAccessor<Integer> INTEGER = YamlAccessor.of(YamlAdapters.INTEGER);
27+
static final YamlAccessor<Integer> INTEGER = YamlAccessor.of(Adapts.object().intoInteger());
2328

24-
static final YamlAccessor<Long> LONG = YamlAccessor.of(YamlAdapters.LONG);
29+
static final YamlAccessor<Long> LONG = YamlAccessor.of(Adapts.object().intoLong());
2530

26-
static final YamlAccessor<Float> FLOAT = YamlAccessor.of(YamlAdapters.FLOAT);
31+
static final YamlAccessor<Float> FLOAT = YamlAccessor.of(Adapts.object().intoFloat());
2732

28-
static final YamlAccessor<Double> DOUBLE = YamlAccessor.of(YamlAdapters.DOUBLE);
33+
static final YamlAccessor<Double> DOUBLE = YamlAccessor.of(Adapts.object().intoDouble());
2934

3035
static final YamlAccessor<List<String>> STRING_LIST = YamlAccessor.of(YamlAdapters.STRING_LIST);
3136

3237
static final YamlAccessor<List<Map<?, ?>>> MAP_LIST = YamlAccessor.of(YamlAdapters.MAP_LIST);
3338

34-
static final YamlAccessor<UUID> U_UID = YamlAccessor.of(YamlAdapters.U_UID);
39+
static final YamlAccessor<UUID> U_UID = YamlAccessor.of(Adapts.object().intoUuid());
40+
41+
static final YamlAccessor<Sound> SOUND = YamlAccessor.of(YamlAdapters.SOUND);
42+
43+
static final YamlAccessor<Material> MATERIAL = YamlAccessor.of(YamlAdapters.MATERIAL);
44+
45+
static final YamlAccessor<Instant> INSTANT = YamlAccessor.of(YamlAdapters.INSTANT);
3546
}

config-values-bukkit/src/main/java/community/leaf/configvalues/bukkit/YamlAdapters.java

Lines changed: 47 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -9,97 +9,76 @@
99

1010
import com.rezzedup.util.constants.types.Primitives;
1111
import com.rezzedup.util.valuables.Adapter;
12-
import com.rezzedup.util.valuables.Deserializer;
13-
import com.rezzedup.util.valuables.Serializer;
12+
import com.rezzedup.util.valuables.Adapts;
13+
import org.bukkit.Material;
14+
import org.bukkit.Sound;
1415
import pl.tlinkowski.annotation.basic.NullOr;
1516

17+
import java.time.Instant;
1618
import java.util.ArrayList;
1719
import java.util.List;
1820
import java.util.Map;
1921
import java.util.Optional;
20-
import java.util.UUID;
2122
import java.util.function.Function;
2223

23-
final class YamlAdapters
24+
public class YamlAdapters
2425
{
2526
private YamlAdapters() { throw new UnsupportedOperationException(); }
2627

27-
static final Adapter<Object, String> STRING =
28-
simple(serialized -> Optional.of(String.valueOf(serialized)));
29-
30-
static final Adapter<Object, Boolean> BOOLEAN =
31-
simple(serialized ->
32-
(serialized instanceof Boolean)
33-
? Optional.of((Boolean) serialized)
34-
: Optional.empty()
28+
private static <V> Adapter<Object, List<V>> list(Function<Object, @NullOr V> conversion)
29+
{
30+
return Adapter.of(
31+
serialized ->
32+
{
33+
if (!(serialized instanceof List)) { return Optional.empty(); }
34+
35+
List<?> existing = (List<?>) serialized;
36+
List<V> values = new ArrayList<>();
37+
38+
for (Object obj : existing)
39+
{
40+
@NullOr V converted = conversion.apply(obj);
41+
if (converted != null) { values.add(converted); }
42+
}
43+
44+
return Optional.of(values);
45+
},
46+
Optional::of
3547
);
48+
}
3649

37-
static final Adapter<Object, Integer> INTEGER = number(Number::intValue);
38-
39-
static final Adapter<Object, Long> LONG = number(Number::longValue);
40-
41-
static final Adapter<Object, Float> FLOAT = number(Number::floatValue);
50+
public static <E extends Enum<E>> Adapter<Object, E> ofEnum(Class<E> type)
51+
{
52+
return Adapter.of(
53+
serialized -> Adapts.string().intoEnum(type).deserialize(String.valueOf(serialized)),
54+
deserialized -> Optional.of(String.valueOf(deserialized))
55+
);
56+
}
4257

43-
static final Adapter<Object, Double> DOUBLE = number(Number::doubleValue);
58+
public static <V> Adapter<Object, V> ofParsed(Function<String, V> parser)
59+
{
60+
return Adapter.of(
61+
serialized -> {
62+
try { return Optional.of(parser.apply(String.valueOf(serialized))); }
63+
catch (RuntimeException ignored) { return Optional.empty(); }
64+
},
65+
deserialized -> Optional.of(String.valueOf(deserialized))
66+
);
67+
}
4468

45-
static final Adapter<Object, List<String>> STRING_LIST =
69+
public static final Adapter<Object, List<String>> STRING_LIST =
4670
list(serialized ->
4771
(serialized instanceof String || Primitives.isBoxed(serialized))
4872
? String.valueOf(serialized)
4973
: null
5074
);
5175

52-
static final Adapter<Object, List<Map<?, ?>>> MAP_LIST =
76+
public static final Adapter<Object, List<Map<?, ?>>> MAP_LIST =
5377
list(serialized -> (serialized instanceof Map<?, ?>) ? (Map<?, ?>) serialized : null);
5478

55-
static final Adapter<Object, UUID> U_UID =
56-
convert(
57-
serialized -> {
58-
try { return Optional.of(UUID.fromString(String.valueOf(serialized))); }
59-
catch (IllegalArgumentException ignored) { return Optional.empty(); }
60-
},
61-
deserialized -> Optional.of(deserialized.toString())
62-
);
63-
64-
//
65-
// Factories
66-
//
67-
68-
static <V> Adapter<Object, V> convert(Deserializer<Object, V> deserializer, Serializer<V, Object> serializer)
69-
{
70-
return Adapter.of(deserializer, serializer);
71-
}
79+
public static final Adapter<Object, Sound> SOUND = ofEnum(Sound.class);
7280

73-
static <V> Adapter<Object, V> simple(Deserializer<Object, V> deserializer)
74-
{
75-
return convert(deserializer, Optional::of);
76-
}
81+
public static final Adapter<Object, Material> MATERIAL = ofEnum(Material.class);
7782

78-
static <V extends Number> Adapter<Object, V> number(Function<Number, V> conversion)
79-
{
80-
return simple(val ->
81-
(val instanceof Number)
82-
? Optional.of(conversion.apply((Number) val))
83-
: Optional.empty()
84-
);
85-
}
86-
87-
static <V> Adapter<Object, List<V>> list(Function<Object, @NullOr V> conversion)
88-
{
89-
return simple(serialized ->
90-
{
91-
if (!(serialized instanceof List)) { return Optional.empty(); }
92-
93-
List<?> existing = (List<?>) serialized;
94-
List<V> values = new ArrayList<>();
95-
96-
for (Object obj : existing)
97-
{
98-
@NullOr V converted = conversion.apply(obj);
99-
if (converted != null) { values.add(converted); }
100-
}
101-
102-
return Optional.of(values);
103-
});
104-
}
83+
public static final Adapter<Object, Instant> INSTANT = ofParsed(Instant::parse);
10584
}

config-values-bukkit/src/main/java/community/leaf/configvalues/bukkit/YamlValue.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010
import com.rezzedup.util.constants.types.TypeCapture;
1111
import com.rezzedup.util.valuables.KeyValue;
1212
import community.leaf.configvalues.bukkit.migrations.Migration;
13+
import org.bukkit.Material;
14+
import org.bukkit.Sound;
1315
import org.bukkit.configuration.ConfigurationSection;
1416

17+
import java.time.Instant;
1518
import java.util.List;
1619
import java.util.Map;
1720
import java.util.UUID;
@@ -73,6 +76,21 @@ static Builder<UUID> ofUuid(String key)
7376
return of(key, YamlAccessors.U_UID);
7477
}
7578

79+
static Builder<Sound> ofSound(String key)
80+
{
81+
return of(key, YamlAccessors.SOUND);
82+
}
83+
84+
static Builder<Material> ofMaterial(String key)
85+
{
86+
return of(key, YamlAccessors.MATERIAL);
87+
}
88+
89+
static Builder<Instant> ofInstant(String key)
90+
{
91+
return of(key, YamlAccessors.INSTANT);
92+
}
93+
7694
List<Migration> migrations();
7795

7896
interface Builder<V>

config-values-bukkit/src/main/java/community/leaf/configvalues/bukkit/migrations/Migrations.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ final class Migrations
1919

2020
static void copy(ConfigurationSection existing, String existingKey, YamlDataSource destination, String destinationKey)
2121
{
22-
if (destination.data().isSet(destinationKey)) { return; }
2322
@NullOr Object maybe = existing.get(existingKey);
2423
if (maybe != null) { destination.set(destinationKey, maybe); }
2524
}

pom.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@
5656
<versions.minecraft.spigot>1.17.1-R0.1-SNAPSHOT</versions.minecraft.spigot>
5757
</properties>
5858

59+
<!--
60+
<repositories>
61+
<repository>
62+
<id>ossrh-snapshots</id>
63+
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
64+
</repository>
65+
</repositories>
66+
-->
67+
5968
<dependencies>
6069
<!-- Nullness Annotations: @NullOr (via maven-central) -->
6170
<dependency>
@@ -74,7 +83,7 @@
7483
<dependency>
7584
<groupId>com.rezzedup.util</groupId>
7685
<artifactId>valuables</artifactId>
77-
<version>0.1.0</version>
86+
<version>0.2.0</version>
7887
</dependency>
7988
</dependencies>
8089

0 commit comments

Comments
 (0)