Skip to content

Commit b6ea331

Browse files
authored
Merge pull request #9 from m7rlin/master
Fix removing cache; Add annotation ConfigOptional on custom DTO classes
2 parents e8f204d + 8d7d891 commit b6ea331

File tree

5 files changed

+24
-5
lines changed

5 files changed

+24
-5
lines changed

README.MD

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ maven {
2121
url = 'https://repo.mikigal.pl/releases'
2222
}
2323
24-
compile group: 'pl.mikigal', name: 'ConfigAPI', version: '1.2.3'
24+
compile group: 'pl.mikigal', name: 'ConfigAPI', version: '1.2.4'
2525
```
2626

2727
#### Maven
@@ -34,7 +34,7 @@ compile group: 'pl.mikigal', name: 'ConfigAPI', version: '1.2.3'
3434
<dependency>
3535
<groupId>pl.mikigal</groupId>
3636
<artifactId>ConfigAPI</artifactId>
37-
<version>1.2.3</version>
37+
<version>1.2.4</version>
3838
<scope>compile</scope>
3939
</dependency>
4040
```

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group 'pl.mikigal'
7-
version '1.2.3'
7+
version '1.2.4'
88

99
publishing {
1010
repositories {

src/main/java/pl/mikigal/config/annotation/ConfigOptional.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* @since 1.0
1212
* @author Mikołaj Gałązka
1313
*/
14-
@Target({ElementType.METHOD})
14+
@Target({ElementType.FIELD, ElementType.METHOD})
1515
@Retention(value = RetentionPolicy.RUNTIME)
1616
public @interface ConfigOptional {
1717
}

src/main/java/pl/mikigal/config/serializer/Serializer.java

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public final void serialize(String path, Object object, BukkitConfiguration conf
4444
}
4545

4646
this.saveObject(path, (T) object, configuration);
47+
configuration.addToCache(path, object);
4748
}
4849

4950
/**

src/main/java/pl/mikigal/config/serializer/universal/UniversalObjectSerializer.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package pl.mikigal.config.serializer.universal;
22

33
import pl.mikigal.config.BukkitConfiguration;
4+
import pl.mikigal.config.annotation.ConfigOptional;
45
import pl.mikigal.config.exception.InvalidConfigException;
56
import pl.mikigal.config.exception.MissingSerializerException;
67
import pl.mikigal.config.serializer.Serializer;
@@ -17,7 +18,7 @@
1718
* Class must have default constructor (no-args).
1819
* @see Serializer
1920
* @see Serializable
20-
* @since 1.1.7
21+
* @since 1.1.8
2122
* @author Mikołaj Gałązka
2223
*/
2324
public class UniversalObjectSerializer extends Serializer<Serializable> {
@@ -34,6 +35,14 @@ protected void saveObject(String path, Serializable object, BukkitConfiguration
3435

3536
field.setAccessible(true);
3637
Object value = field.get(object);
38+
39+
// Check if field is optional
40+
if (field.isAnnotationPresent(ConfigOptional.class)) {
41+
field.setAccessible(false);
42+
if (value == null) {
43+
continue;
44+
}
45+
}
3746

3847
try {
3948
if (TypeUtils.isSimpleType(field.getType())) {
@@ -88,6 +97,15 @@ public Serializable deserialize(String path, BukkitConfiguration configuration)
8897
}
8998

9099
field.setAccessible(true);
100+
101+
String fullpath = path + "." + configuration.getNameStyle().format(field.getName());
102+
103+
// Check if field is optional
104+
if (field.isAnnotationPresent(ConfigOptional.class)) {
105+
if (configuration.get(fullpath) == null){
106+
continue;
107+
}
108+
}
91109

92110
Class<?> type = field.getType();
93111
if (TypeUtils.isSimpleType(type)) {

0 commit comments

Comments
 (0)