Skip to content

Commit 82fc0cb

Browse files
authored
Merge pull request #7 from jottinger/main
There are lots of internal changes to Filelizer.
2 parents 2a0c1bb + bdba9ea commit 82fc0cb

File tree

5 files changed

+43
-55
lines changed

5 files changed

+43
-55
lines changed

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

Lines changed: 20 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,53 @@ 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+
return switch(filelizeType) {
49+
case MULTIPLE_FILES -> filelizerMultiple;
50+
case SINGLE_FILE -> filelizerSingle;
51+
case OBJECT_FILE -> filelizerObject;
52+
};
53+
}
54+
4355
@Override
4456
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);
57+
return resolveFilelizerType(valueType).find(id, valueType);
5258
}
5359

5460
@Override
5561
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);
62+
return resolveFilelizerType(valueType).findAll(valueType);
6363
}
6464

6565
@Override
6666
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);
67+
return resolveFilelizerType(object).save(object);
7468
}
7569

7670
@Override
7771
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);
72+
return resolveFilelizerType(object).save(id, object);
8573
}
8674

8775
@Override
8876
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);
77+
return resolveFilelizerType(getFilelizeTypeOfList(objects, defaultFilelizeType)).saveAll(objects);
9678
}
9779

9880
@Override
9981
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-
}
82+
resolveFilelizerType(valueType).delete(id, valueType);
10883
}
10984
}

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: 4 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

@@ -31,6 +32,7 @@ public String getFullPath2(String id, Object object) {
3132
return getDirectoryPath(object) + "/" + id + ".json";
3233
}
3334

35+
// TODO should use the abstraction from Filelizer to dispatch: object graph issue
3436
public <T> String getFullPath(String id, Class<T> valueType) {
3537
if(filelizeType == FilelizeType.MULTIPLE_FILES) {
3638
var name = getFilelizeName(valueType);
@@ -75,10 +77,8 @@ private String getFilename(String id, String name) {
7577
return name + "_" + id + ".json";
7678
}
7779
private String getDirectoryPath(Object object){
78-
if(object != null) {
79-
return basePath + "/" + getFilelizeDirectory(object);
80-
}
81-
return basePath;
80+
Objects.requireNonNull(object);
81+
return basePath + "/" + getFilelizeDirectory(object);
8282
}
8383

8484
}

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
}

src/test/java/io/github/filelize/path/PathHandlerSingleTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.Map;
1010

1111
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
import static org.junit.jupiter.api.Assertions.assertThrows;
1213

1314
public class PathHandlerSingleTest {
1415

@@ -17,7 +18,14 @@ public class PathHandlerSingleTest {
1718
public PathHandlerSingleTest() {
1819
this.pathHandler = new PathHandler("src/test/resources", FilelizeType.SINGLE_FILE, new ObjectMapper());
1920
}
20-
21+
@Test
22+
public void testPathHandlerReturnsEmptyBaseForNull() {
23+
// TODO clarify API visibility
24+
assertThrows(NullPointerException.class, () -> {
25+
var path = pathHandler.getFullPath2("foo", null);
26+
assertEquals("src/test/resources/foo.json", path);
27+
});
28+
}
2129
@Test
2230
public void testGetFullPath() {
2331
var fullPath = pathHandler.getFullPath(new SomethingSingle());

0 commit comments

Comments
 (0)