Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Ole Hermann Bakka
todo-list-example
Commits
f69caf79
Commit
f69caf79
authored
Oct 01, 2021
by
George Adrian Stoica
Browse files
Merge branch 'master' into 24-refactoring-of-waitfornode
parents
c6c46465
1def2e00
Changes
33
Hide whitespace changes
Inline
Side-by-side
todolist/config/spotbugs/exclude.xml
0 → 100644
View file @
f69caf79
<FindBugsFilter>
<Match>
<Bug
pattern=
"SA_LOCAL_SELF_COMPARISON"
/>
</Match>
<Match>
<Bug
pattern=
"EI_EXPOSE_REP"
/>
</Match>
<Match>
<Bug
pattern=
"EI_EXPOSE_REP2"
/>
</Match>
</FindBugsFilter>
todolist/core/src/main/java/module-info.java
0 → 100644
View file @
f69caf79
module
todolist
.
core
{
requires
transitive
com
.
fasterxml
.
jackson
.
databind
;
exports
todolist
.
core
;
exports
todolist
.
json
;
}
todolist/core/src/main/java/todolist/json/TodoPersistence.java
View file @
f69caf79
package
todolist.json
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.module.SimpleModule
;
import
java.io.FileReader
;
import
java.io.FileWriter
;
import
java.io.IOException
;
...
...
@@ -10,6 +11,7 @@ import java.nio.charset.StandardCharsets;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
todolist.core.TodoModel
;
import
todolist.json.internal.TodoModule
;
/**
* Wrapper class for JSON serialization,
...
...
@@ -20,8 +22,16 @@ public class TodoPersistence {
private
ObjectMapper
mapper
;
public
TodoPersistence
()
{
mapper
=
new
ObjectMapper
();
mapper
.
registerModule
(
new
TodoModule
());
mapper
=
createObjectMapper
();
}
public
static
SimpleModule
createJacksonModule
(
boolean
deep
)
{
return
new
TodoModule
(
deep
);
}
public
static
ObjectMapper
createObjectMapper
()
{
return
new
ObjectMapper
()
.
registerModule
(
createJacksonModule
(
true
));
}
public
TodoModel
readTodoModel
(
Reader
reader
)
throws
IOException
{
...
...
todolist/core/src/main/java/todolist/json/TodoItemDeserializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoItemDeserializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
...
...
todolist/core/src/main/java/todolist/json/TodoItemSerializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoItemSerializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.databind.JsonSerializer
;
...
...
todolist/core/src/main/java/todolist/json/TodoListDeserializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoListDeserializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
...
...
todolist/core/src/main/java/todolist/json/TodoListSerializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoListSerializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.databind.JsonSerializer
;
...
...
todolist/core/src/main/java/todolist/json/TodoModelDeserializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoModelDeserializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
...
...
todolist/core/src/main/java/todolist/json/TodoModelSerializer.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoModelSerializer.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.JsonGenerator
;
import
com.fasterxml.jackson.databind.JsonSerializer
;
...
...
todolist/core/src/main/java/todolist/json/TodoModule.java
→
todolist/core/src/main/java/todolist/json/
internal/
TodoModule.java
View file @
f69caf79
package
todolist.json
;
package
todolist.json
.internal
;
import
com.fasterxml.jackson.core.Version
;
import
com.fasterxml.jackson.databind.module.SimpleModule
;
...
...
todolist/core/src/test/java/todolist/json/TodoModuleTest.java
View file @
f69caf79
...
...
@@ -14,6 +14,7 @@ import todolist.core.AbstractTodoList;
import
todolist.core.TodoItem
;
import
todolist.core.TodoList
;
import
todolist.core.TodoModel
;
import
todolist.json.internal.TodoModule
;
public
class
TodoModuleTest
{
...
...
todolist/fxui/pom.xml
View file @
f69caf79
...
...
@@ -11,6 +11,10 @@
<artifactId>
fxui
</artifactId>
<properties>
<skipUiTests>
false
</skipUiTests>
</properties>
<dependencies>
<dependency>
<groupId>
it1901.todolist
</groupId>
...
...
@@ -173,6 +177,12 @@
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<configuration>
<skipTests>
${skipUiTests}
</skipTests>
<argLine>
--add-opens todolist.ui/todolist.ui=ALL-UNNAMED --add-exports javafx.graphics/com.sun.javafx.application=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
<plugin>
<groupId>
org.openjfx
</groupId>
...
...
todolist/fxui/src/main/java/module-info.java
0 → 100644
View file @
f69caf79
module
todolist
.
ui
{
requires
com
.
fasterxml
.
jackson
.
databind
;
requires
java
.
net
.
http
;
requires
javafx
.
base
;
requires
javafx
.
controls
;
requires
javafx
.
fxml
;
requires
todolist
.
core
;
requires
fxutil
;
opens
todolist
.
ui
to
javafx
.
graphics
,
javafx
.
fxml
;
}
todolist/fxui/src/main/java/todolist/ui/RemoteTodoModelAccess.java
View file @
f69caf79
...
...
@@ -14,7 +14,7 @@ import java.util.Collection;
import
todolist.core.AbstractTodoList
;
import
todolist.core.TodoList
;
import
todolist.core.TodoModel
;
import
todolist.json.Todo
Modul
e
;
import
todolist.json.Todo
Persistenc
e
;
/**
* Class that centralizes access to a TodoModel. Makes it easier to support transparent use of a
...
...
@@ -30,7 +30,7 @@ public class RemoteTodoModelAccess implements TodoModelAccess {
public
RemoteTodoModelAccess
(
URI
endpointBaseUri
)
{
this
.
endpointBaseUri
=
endpointBaseUri
;
objectMapper
=
new
ObjectMapper
().
registerModule
(
new
TodoModule
()
);
objectMapper
=
TodoPersistence
.
createObjectMapper
(
);
}
private
TodoModel
getTodoModel
()
{
...
...
@@ -44,7 +44,6 @@ public class RemoteTodoModelAccess implements TodoModelAccess {
HttpClient
.
newBuilder
().
build
().
send
(
request
,
HttpResponse
.
BodyHandlers
.
ofString
());
final
String
responseString
=
response
.
body
();
this
.
todoModel
=
objectMapper
.
readValue
(
responseString
,
TodoModel
.
class
);
System
.
out
.
println
(
"TodoModel: "
+
this
.
todoModel
);
}
catch
(
IOException
|
InterruptedException
e
)
{
throw
new
RuntimeException
(
e
);
}
...
...
todolist/fxui/src/main/java/todolist/ui/TodoApp.java
View file @
f69caf79
...
...
@@ -6,6 +6,9 @@ import javafx.scene.Parent;
import
javafx.scene.Scene
;
import
javafx.stage.Stage
;
/**
* Standalone version of the app.
*/
public
class
TodoApp
extends
Application
{
@Override
...
...
todolist/fxui/src/main/java/todolist/ui/TodoAppController.java
View file @
f69caf79
...
...
@@ -14,11 +14,31 @@ import todolist.core.TodoList;
import
todolist.core.TodoModel
;
import
todolist.json.TodoPersistence
;
/**
* Top-level controller.
*/
public
class
TodoAppController
{
private
static
final
String
todoListWithTwoItems
=
"{\"lists\":["
+
"{\"name\":\"todo\",\"items\":[{\"text\":\"item1\",\"checked\":false},"
+
"{\"text\":\"item2\",\"checked\":true,\"deadline\":\"2020-10-01T14:53:11\"}]}"
+
"]}"
;
private
static
final
String
todoListWithTwoItems
=
"""
{
"
lists
" : [
{
"
name
": "
todo
",
"
items
": [
{
"
text
": "
item1
",
"
checked
":false
},
{
"
text
": "
item2
",
"
checked
": true,
"
deadline
": "
2020
-
10
-
01
T14:
53
:
11
"
}
]
}
]
}
"""
;
@FXML
String
userTodoModelPath
;
...
...
todolist/fxui/src/main/java/todolist/ui/TodoDocumentApp.java
View file @
f69caf79
...
...
@@ -6,6 +6,9 @@ import javafx.scene.Parent;
import
javafx.scene.Scene
;
import
javafx.stage.Stage
;
/**
* Variant of the app with document metaphor and File menu.
*/
public
class
TodoDocumentApp
extends
Application
{
private
TodoDocumentAppController
controller
;
...
...
todolist/fxui/src/main/java/todolist/ui/TodoDocumentAppController.java
View file @
f69caf79
...
...
@@ -18,6 +18,9 @@ import java.util.List;
import
javafx.fxml.FXML
;
import
todolist.core.TodoModel
;
/**
* Controller for the document metaphor variant of the app.
*/
public
class
TodoDocumentAppController
implements
DocumentListener
<
TodoModel
,
File
>
{
private
final
TodoModelStorage
todoModelStorage
;
...
...
todolist/fxui/src/main/java/todolist/ui/TodoItemListCell.java
View file @
f69caf79
...
...
@@ -10,6 +10,10 @@ import javafx.scene.control.TextField;
import
javafx.scene.layout.HBox
;
import
todolist.core.TodoItem
;
/**
* ListCell for TodoItems.
* Supports editing the text and checking the item.
*/
public
class
TodoItemListCell
extends
ListCell
<
TodoItem
>
{
// for whole row
...
...
todolist/fxui/src/main/java/todolist/ui/TodoListController.java
View file @
f69caf79
...
...
@@ -15,6 +15,10 @@ import todolist.core.TodoItem;
import
todolist.core.TodoList
;
import
todolist.core.TodoListListener
;
/**
* Controller for a TodoList.
* Supports adding, editing and removing elements.
*/
public
class
TodoListController
{
@FXML
...
...
@@ -33,7 +37,7 @@ public class TodoListController {
private
TodoList
todoList
=
null
;
public
TodoList
getTodoList
()
{
TodoList
getTodoList
()
{
return
todoList
;
}
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment