Skip to content

Commit cb7a6ce

Browse files
Fix additional modules not applied on ModifyableConfigurations and parent modules ignored
1 parent 8ebe8fa commit cb7a6ce

9 files changed

Lines changed: 56 additions & 11 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212

1313
publishData {
1414
useEldoNexusRepos(false)
15-
publishingVersion = "1.0.0"
15+
publishingVersion = "1.0.1"
1616
}
1717

1818
group = "dev.chojo"

docs/index.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,26 @@
33
Ocular is a library that allows managing multiple configuration files. It uses jackson to interact with different dataformats.
44
Everything is customizable, but reasonable defaults are given to start right away.
55

6+
Latest version:
7+
![Maven Central Version](https://img.shields.io/maven-central/v/dev.chojo/ocular?style=for-the-badge)
8+
9+
10+
=== "gradle.build.kts"
11+
12+
```java
13+
implementation("dev.chojo", "ocular", "version")
14+
```
15+
16+
=== "pom.xml"
17+
18+
```xml
19+
<dependency>
20+
<groupId>dev.chojo</groupId>
21+
<artifactId>ocular</artifactId>
22+
<version>version</version>
23+
</dependency>
24+
```
25+
26+
!!! warning
27+
28+
You will need to import your desired data format for jackson additionally.

src/main/java/dev/chojo/ocular/Configurations.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
import com.fasterxml.jackson.databind.SerializationFeature;
1515
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
1616
import com.fasterxml.jackson.databind.type.TypeFactory;
17+
import dev.chojo.ocular.components.FileWrapper;
18+
import dev.chojo.ocular.components.Format;
19+
import dev.chojo.ocular.components.Wrapper;
1720
import dev.chojo.ocular.dataformats.Configurator;
1821
import dev.chojo.ocular.dataformats.DataFormat;
1922
import dev.chojo.ocular.exceptions.ConfigurationException;
@@ -30,6 +33,7 @@
3033
import java.nio.file.Path;
3134
import java.time.LocalDateTime;
3235
import java.time.format.DateTimeFormatter;
36+
import java.util.ArrayList;
3337
import java.util.Collections;
3438
import java.util.HashMap;
3539
import java.util.HashSet;
@@ -53,7 +57,7 @@ public class Configurations<T> implements Configurator<ObjectMapper, MapperBuild
5357
private static final Logger log = getLogger(Configurations.class);
5458
private final Path base;
5559
private final Key<T> main;
56-
private final Configurations<?> parent;
60+
protected final Configurations<?> parent;
5761
private final List<Format<?, ?>> formats = new LinkedList<>();
5862
private final ClassLoader classLoader;
5963
private final Map<Key<?>, FileWrapper<?>> files = new HashMap<>();
@@ -313,7 +317,10 @@ public Path base() {
313317
*
314318
* @return list of modules.
315319
*/
316-
protected List<Module> additionalModules() {
320+
public List<Module> additionalModules() {
321+
if(parent != null) {
322+
return parent.additionalModules();
323+
}
317324
return Collections.emptyList();
318325
}
319326

@@ -360,7 +367,7 @@ private Path resolvePath(Key<?> key) {
360367
return key.path().isAbsolute() ? key.path() : base.resolve(key.path());
361368
}
362369

363-
protected Format<?, ?> determineFormat(Key<?> key) {
370+
private Format<?, ?> determineFormat(Key<?> key) {
364371
for (var format : formats) {
365372
if (format.format().matches(key)) {
366373
return format;

src/main/java/dev/chojo/ocular/ConfigurationsBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.databind.ObjectMapper;
1010
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
1111
import dev.chojo.ocular.dataformats.DataFormat;
12+
import dev.chojo.ocular.impl.ModifyableConfigurations;
1213
import dev.chojo.ocular.key.Key;
1314
import dev.chojo.ocular.util.Consumers;
1415
import org.jetbrains.annotations.NotNull;

src/main/java/dev/chojo/ocular/FileWrapper.java renamed to src/main/java/dev/chojo/ocular/components/FileWrapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* Copyright (C) RainbowDashLabs and Contributor
55
*/
6-
package dev.chojo.ocular;
6+
package dev.chojo.ocular.components;
77

88
import com.fasterxml.jackson.core.JsonProcessingException;
99

@@ -15,15 +15,15 @@
1515
*
1616
* @param <T> the type of the file object being wrapped
1717
*/
18-
record FileWrapper<T>(Format<?, ?> format, T file) {
18+
public record FileWrapper<T>(Format<?, ?> format, T file) {
1919
/**
2020
* Serializes the encapsulated file object into its JSON string representation
2121
* using the configured writer of the associated format.
2222
*
2323
* @return the JSON string representation of the file object
2424
* @throws JsonProcessingException if an error occurs during serialization
2525
*/
26-
String asString() throws JsonProcessingException {
26+
public String asString() throws JsonProcessingException {
2727
return format.writer().writeValueAsString(file);
2828
}
2929
}

src/main/java/dev/chojo/ocular/Format.java renamed to src/main/java/dev/chojo/ocular/components/Format.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
*
44
* Copyright (C) RainbowDashLabs and Contributor
55
*/
6-
package dev.chojo.ocular;
6+
package dev.chojo.ocular.components;
77

88
import com.fasterxml.jackson.databind.ObjectMapper;
99
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
10+
import dev.chojo.ocular.Configurations;
1011
import dev.chojo.ocular.dataformats.DataFormat;
1112

1213
/**

src/main/java/dev/chojo/ocular/Wrapper.java renamed to src/main/java/dev/chojo/ocular/components/Wrapper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
*
44
* Copyright (C) RainbowDashLabs and Contributor
55
*/
6-
package dev.chojo.ocular;
6+
package dev.chojo.ocular.components;
77

8+
import dev.chojo.ocular.Configurations;
89
import dev.chojo.ocular.key.Key;
910

1011
import java.io.Closeable;

src/main/java/dev/chojo/ocular/exceptions/UnknownFormatException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
package dev.chojo.ocular.exceptions;
77

8-
import dev.chojo.ocular.Format;
8+
import dev.chojo.ocular.components.Format;
99
import dev.chojo.ocular.key.Key;
1010

1111
import java.util.Collection;

src/main/java/dev/chojo/ocular/ModifyableConfigurations.java renamed to src/main/java/dev/chojo/ocular/impl/ModifyableConfigurations.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@
33
*
44
* Copyright (C) RainbowDashLabs and Contributor
55
*/
6-
package dev.chojo.ocular;
6+
package dev.chojo.ocular.impl;
77

88
import com.fasterxml.jackson.databind.Module;
99
import com.fasterxml.jackson.databind.ObjectMapper;
1010
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
11+
import dev.chojo.ocular.Configurations;
1112
import dev.chojo.ocular.dataformats.DataFormat;
1213
import dev.chojo.ocular.key.Key;
1314
import org.jetbrains.annotations.NotNull;
1415

1516
import java.nio.file.Path;
17+
import java.util.LinkedList;
1618
import java.util.List;
1719
import java.util.function.Consumer;
1820

@@ -44,6 +46,16 @@ public ModifyableConfigurations(Path base, @NotNull Key<T> main, List<DataFormat
4446
this.modules = modules;
4547
}
4648

49+
@Override
50+
public List<Module> additionalModules() {
51+
if (parent != null) {
52+
LinkedList<Module> combinedModules = new LinkedList<>(parent.additionalModules());
53+
combinedModules.addAll(modules);
54+
return combinedModules;
55+
}
56+
return modules;
57+
}
58+
4759
@Override
4860
public void configureReader(ObjectMapper mapper) {
4961
configureReaderMapper.accept(mapper);

0 commit comments

Comments
 (0)