Skip to content

Commit 0cdf24e

Browse files
committed
There are lots of internal chanes to Filelizer.
1 parent 3147ba8 commit 0cdf24e

File tree

4 files changed

+43
-54
lines changed

4 files changed

+43
-54
lines changed

src/main/java/io/github/filelize/Filelizer.java

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class Filelizer implements IFilelizer {
2323

2424
public Filelizer(String basePath) {
2525
var objectMapper = new ObjectMapper();
26-
objectMapper.registerModule(new JavaTimeModule());
26+
objectMapper.findAndRegisterModules();
2727
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
2828
this.filelizerObject = new FilelizerObject(basePath, objectMapper);
2929
this.filelizerSingle = new FilelizerSingle(basePath, objectMapper);
@@ -32,78 +32,63 @@ public Filelizer(String basePath) {
3232
}
3333

3434
public Filelizer(String basePath, ObjectMapper objectMapper, FilelizeType defaultFilelizeType) {
35-
objectMapper.registerModule(new JavaTimeModule());
35+
objectMapper.findAndRegisterModules();
3636
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
3737
this.filelizerObject = new FilelizerObject(basePath, objectMapper);
3838
this.filelizerSingle = new FilelizerSingle(basePath, objectMapper);
3939
this.filelizerMultiple = new FilelizerMultiple(basePath, objectMapper);
4040
this.defaultFilelizeType = defaultFilelizeType;
4141
}
4242

43+
private IFilelizer resolveFilelizerType(Object valueType) {
44+
return resolveFilelizerType(getFilelizeType(valueType, defaultFilelizeType));
45+
}
46+
47+
private IFilelizer resolveFilelizerType(FilelizeType filelizeType) {
48+
// I do not like this implementation. It's mandated because of object graph structure and Java 11.
49+
// With Java 17 or later, this becomes a switch expression and is much nicer.
50+
IFilelizer filelizer = null;
51+
switch (filelizeType) {
52+
case MULTIPLE_FILES:
53+
filelizer = filelizerMultiple;
54+
break;
55+
case SINGLE_FILE:
56+
filelizer = filelizerSingle;
57+
break;
58+
case OBJECT_FILE:
59+
filelizer = filelizerObject;
60+
break;
61+
}
62+
return filelizer;
63+
}
64+
4365
@Override
4466
public <T> T find(String id, Class<T> valueType) {
45-
var filelizeType = getFilelizeType(valueType, defaultFilelizeType);
46-
if(filelizeType == FilelizeType.SINGLE_FILE) {
47-
return filelizerSingle.find(id, valueType);
48-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
49-
return filelizerMultiple.find(id, valueType);
50-
}
51-
return filelizerObject.find(id, valueType);
67+
return resolveFilelizerType(valueType).find(id, valueType);
5268
}
5369

5470
@Override
5571
public <T> Map<String, T> findAll(Class<T> valueType) {
56-
var filelizeType = getFilelizeType(valueType, defaultFilelizeType);
57-
if(filelizeType == FilelizeType.SINGLE_FILE) {
58-
return filelizerSingle.findAll(valueType);
59-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
60-
return filelizerMultiple.findAll(valueType);
61-
}
62-
return filelizerObject.findAll(valueType);
72+
return resolveFilelizerType(valueType).findAll(valueType);
6373
}
6474

6575
@Override
6676
public <T> String save(T object) {
67-
var filelizeType = getFilelizeType(object, defaultFilelizeType);
68-
if(filelizeType == FilelizeType.SINGLE_FILE) {
69-
return filelizerSingle.save(object);
70-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
71-
return filelizerMultiple.save(object);
72-
}
73-
return filelizerObject.save(object);
77+
return resolveFilelizerType(object).save(object);
7478
}
7579

7680
@Override
7781
public <T> String save(String id, T object) {
78-
var filelizeType = getFilelizeType(object, defaultFilelizeType);
79-
if(filelizeType == FilelizeType.SINGLE_FILE) {
80-
return filelizerSingle.save(id, object);
81-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
82-
return filelizerMultiple.save(id, object);
83-
}
84-
return filelizerObject.save(id, object);
82+
return resolveFilelizerType(object).save(id, object);
8583
}
8684

8785
@Override
8886
public <T> List<String> saveAll(List<T> objects) {
89-
var filelizeType = getFilelizeTypeOfList(objects, defaultFilelizeType);
90-
if(filelizeType == FilelizeType.SINGLE_FILE) {
91-
return filelizerSingle.saveAll(objects);
92-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
93-
return filelizerMultiple.saveAll(objects);
94-
}
95-
return filelizerObject.saveAll(objects);
87+
return resolveFilelizerType(getFilelizeTypeOfList(objects, defaultFilelizeType)).saveAll(objects);
9688
}
9789

9890
@Override
9991
public <T> void delete(String id, Class<T> valueType) {
100-
var filelizeType = getFilelizeType(valueType, defaultFilelizeType);
101-
if(filelizeType == FilelizeType.SINGLE_FILE) {
102-
filelizerSingle.delete(id, valueType);
103-
} else if(filelizeType == FilelizeType.MULTIPLE_FILES) {
104-
filelizerMultiple.delete(id, valueType);
105-
} else {
106-
filelizerObject.delete(id, valueType);
107-
}
92+
resolveFilelizerType(valueType).delete(id, valueType);
10893
}
10994
}

src/main/java/io/github/filelize/FilelizerObject.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public <T> T find(String id, Class<T> valueType) {
2929
try {
3030
return fileHandler.readFile(fullPath, valueType);
3131
} catch (IOException e) {
32-
log.error("Error occurred when trying to get " + fullPath, e);
32+
log.error(String.format("Error occurred when trying to get %s", fullPath), e);
3333
return null;
3434
}
3535
}
@@ -71,7 +71,7 @@ public <T> void delete(String id, Class<T> valueType) {
7171
try {
7272
fileHandler.delete(fullPath);
7373
} catch (IOException e) {
74-
log.error("Error occurred when trying to delete " + fullPath, e);
74+
log.error(String.format("Error occurred when trying to delete %s", fullPath), e);
7575
}
7676
}
7777
}

src/main/java/io/github/filelize/path/PathHandler.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import java.util.HashMap;
99
import java.util.Map;
10+
import java.util.Objects;
1011

1112
import static io.github.filelize.FilelizeUtil.*;
1213

@@ -75,10 +76,8 @@ private String getFilename(String id, String name) {
7576
return name + "_" + id + ".json";
7677
}
7778
private String getDirectoryPath(Object object){
78-
if(object != null) {
79-
return basePath + "/" + getFilelizeDirectory(object);
80-
}
81-
return basePath;
79+
Objects.requireNonNull(object);
80+
return basePath + "/" + getFilelizeDirectory(object);
8281
}
8382

8483
}

src/test/java/io/github/filelize/file/FileHandlerTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.io.IOException;
88

99
import static org.junit.jupiter.api.Assertions.assertNull;
10+
import static org.junit.jupiter.api.Assertions.fail;
1011

1112
public class FileHandlerTest {
1213

@@ -17,9 +18,13 @@ public FileHandlerTest() {
1718
}
1819

1920
@Test
20-
public void testReadFile_ShouldHandleNoSuchFileException() throws IOException {
21-
var something = fileHandler.readFile("tmp/not_existing_folder.json", SomethingElse.class);
22-
assertNull(something);
21+
public void testReadFile_ShouldHandleNoSuchFileException() {
22+
try {
23+
var something = fileHandler.readFile("tmp/not_existing_folder.json", SomethingElse.class);
24+
assertNull(something);
25+
} catch(IOException e) {
26+
fail(e);
27+
}
2328
}
2429

2530
}

0 commit comments

Comments
 (0)