Skip to content

Commit 3674be2

Browse files
updated3
1 parent f2ce151 commit 3674be2

7 files changed

Lines changed: 82 additions & 53 deletions

File tree

pom.xml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0"
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5+
http://maven.apache.org/xsd/maven-4.0.0.xsd">
56
<modelVersion>4.0.0</modelVersion>
67

78
<groupId>com.example</groupId>
@@ -15,7 +16,9 @@
1516
<assertj.core.version>3.27.6</assertj.core.version>
1617
<mockito.version>5.20.0</mockito.version>
1718
<javafx.version>25</javafx.version>
19+
<jackson.version>2.19.2</jackson.version>
1820
</properties>
21+
1922
<dependencies>
2023
<dependency>
2124
<groupId>org.junit.jupiter</groupId>
@@ -35,6 +38,12 @@
3538
<version>${mockito.version}</version>
3639
<scope>test</scope>
3740
</dependency>
41+
<dependency>
42+
<groupId>org.wiremock</groupId>
43+
<artifactId>wiremock</artifactId>
44+
<version>4.0.0-beta.15</version>
45+
<scope>test</scope>
46+
</dependency>
3847
<dependency>
3948
<groupId>org.openjfx</groupId>
4049
<artifactId>javafx-controls</artifactId>
@@ -51,17 +60,22 @@
5160
<version>3.2.0</version>
5261
</dependency>
5362
<dependency>
54-
<groupId>tools.jackson.core</groupId>
55-
<artifactId>jackson-databind</artifactId>
56-
<version>3.0.1</version>
63+
<groupId>com.fasterxml.jackson.core</groupId>
64+
<artifactId>jackson-annotations</artifactId>
65+
<version>${jackson.version}</version>
5766
</dependency>
5867
<dependency>
59-
<groupId>org.wiremock</groupId>
60-
<artifactId>wiremock</artifactId>
61-
<version>4.0.0-beta.15</version>
62-
<scope>test</scope>
68+
<groupId>com.fasterxml.jackson.core</groupId>
69+
<artifactId>jackson-core</artifactId>
70+
<version>${jackson.version}</version>
71+
</dependency>
72+
<dependency>
73+
<groupId>com.fasterxml.jackson.core</groupId>
74+
<artifactId>jackson-databind</artifactId>
75+
<version>${jackson.version}</version>
6376
</dependency>
6477
</dependencies>
78+
6579
<build>
6680
<plugins>
6781
<plugin>
@@ -81,4 +95,5 @@
8195
</plugin>
8296
</plugins>
8397
</build>
84-
</project>
98+
</project>
99+

src/main/java/com/example/HelloModel.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ public void setMessageToSend(String messageToSend) {
3535
this.messageToSend = messageToSend;
3636
}
3737

38-
/**
39-
* Ny version av sendMessage() som TVÅ av dina tester anropar
40-
*/
4138
public void sendMessage() {
4239
if (messageToSend != null && !messageToSend.isBlank()) {
4340
connection.send(messageToSend);
@@ -54,9 +51,6 @@ public void sendFile(File file) {
5451
}
5552
}
5653

57-
/**
58-
* Tar emot meddelanden från backend och lägger till i ObservableList.
59-
*/
6054
public void receiveMessages() {
6155
connection.receive(m -> Platform.runLater(() -> messages.add(m)));
6256
}
@@ -65,3 +59,5 @@ public String getGreeting() {
6559
return "Hello, JavaFX!";
6660
}
6761
}
62+
63+

src/main/java/com/example/ManyParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public ManyParameters(String computerName, int timeout,
1111
static void main() {
1212
ManyParametersBuilder builder = new ManyParametersBuilder();
1313
builder
14-
.setComputerName("localhost") //Fluent API
14+
.setComputerName("localhost")
1515
.setTimeout(10)
1616
.setSize(0)
1717
.createManyParameters();
Lines changed: 49 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.example;
22

33
import io.github.cdimascio.dotenv.Dotenv;
4-
import tools.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
55

66
import java.io.IOException;
77
import java.net.URI;
@@ -33,18 +33,14 @@ public boolean send(String message) {
3333
.header("Cache", "no")
3434
.uri(URI.create(hostName + "/mytopic"))
3535
.build();
36+
3637
try {
37-
//Todo: handle long blocking send requests to not freeze the JavaFX thread
38-
//1. Use thread send message?
39-
//2. Use async?
40-
var reponse = http.send(httpRequest, HttpResponse.BodyHandlers.discarding());
38+
http.send(httpRequest, HttpResponse.BodyHandlers.discarding());
4139
return true;
42-
} catch (IOException e) {
43-
System.out.println("Error sending message");
44-
} catch (InterruptedException e) {
45-
System.out.println("Interruped sending message");
40+
} catch (IOException | InterruptedException e) {
41+
e.printStackTrace();
42+
return false;
4643
}
47-
return false;
4844
}
4945

5046
@Override
@@ -54,29 +50,52 @@ public void receive(Consumer<NtfyMessageDto> messageHandler) {
5450
.uri(URI.create(hostName + "/mytopic/json"))
5551
.build();
5652

57-
http.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofLines())
58-
.thenAccept(response -> response.body()
59-
.map(s ->
60-
mapper.readValue(s, NtfyMessageDto.class))
61-
.filter(message -> message.event().equals("message"))
62-
.peek(System.out::println)
63-
.forEach(messageHandler));
53+
try {
54+
http.send(httpRequest, HttpResponse.BodyHandlers.ofLines())
55+
.body()
56+
.map(s -> {
57+
try {
58+
return mapper.readValue(s, NtfyMessageDto.class);
59+
} catch (IOException e) {
60+
return null;
61+
}
62+
})
63+
.filter(Objects::nonNull)
64+
.filter(message -> "message".equals(message.event()))
65+
.forEach(messageHandler);
66+
67+
} catch (IOException | InterruptedException e) {
68+
e.printStackTrace();
69+
}
6470
}
6571

66-
@Override
67-
public void sendFile(String filename, byte[] data) {
68-
HttpRequest request = HttpRequest.newBuilder()
69-
.POST(HttpRequest.BodyPublishers.ofByteArray(data))
70-
.header("Content-Type", "application/octet-stream")
71-
.header("Title", filename) // ntfy stöder Title-header
72-
.uri(URI.create(hostName + "/mytopic"))
73-
.build();
74-
try {
75-
http.send(request, HttpResponse.BodyHandlers.discarding());
76-
} catch (IOException | InterruptedException e) {
77-
e.printStackTrace();
72+
@Override
73+
public void sendFile(String filename, byte[] data) {
74+
HttpRequest request = HttpRequest.newBuilder()
75+
.POST(HttpRequest.BodyPublishers.ofByteArray(data))
76+
.header("Content-Type", "application/octet-stream")
77+
.header("Title", filename)
78+
.uri(URI.create(hostName + "/mytopic"))
79+
.build();
7880

81+
try {
82+
http.send(request, HttpResponse.BodyHandlers.discarding());
83+
} catch (IOException | InterruptedException e) {
84+
e.printStackTrace();
7985
}
86+
}
8087

88+
public void sendAsync(String message) {
89+
HttpRequest httpRequest = HttpRequest.newBuilder()
90+
.POST(HttpRequest.BodyPublishers.ofString(message))
91+
.header("Cache", "no")
92+
.uri(URI.create(hostName + "/mytopic"))
93+
.build();
94+
95+
http.sendAsync(httpRequest, HttpResponse.BodyHandlers.discarding())
96+
.thenAccept(response -> System.out.println("Message sent async"))
97+
.exceptionally(e -> { e.printStackTrace(); return null; });
8198
}
82-
}
99+
}
100+
101+

src/main/java/module-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
requires javafx.fxml;
44
requires io.github.cdimascio.dotenv.java;
55
requires java.net.http;
6-
requires tools.jackson.databind;
76
requires javafx.graphics;
7+
requires com.fasterxml.jackson.databind;
88

99
opens com.example to javafx.fxml;
1010
exports com.example;

src/test/java/com/example/HelloModelTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ void emptyMessageShouldNotBeSent() {
7373
var spy = new NtfyConnectionSpy();
7474
var model = new HelloModel(spy);
7575

76-
model.setMessageToSend(" "); // blank message
76+
model.setMessageToSend(" ");
7777
model.sendMessage();
7878

7979
assertThat(spy.message)

src/test/java/com/example/NtfyConnectionSpy.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
public class NtfyConnectionSpy implements NtfyConnection {
88

99

10-
public String message; // senaste textmeddelandet
11-
public String fileName; // senaste filnamnet
12-
public byte[] fileData; // senaste fildatat
10+
public String message;
11+
public String fileName;
12+
public byte[] fileData;
13+
1314

14-
// För att kunna simulera "receive"
1515
private final List<Consumer<NtfyMessageDto>> receivers = new ArrayList<>();
1616

1717
@Override
@@ -28,7 +28,6 @@ public void sendFile(String fileName, byte[] data) {
2828

2929
@Override
3030
public void receive(Consumer<NtfyMessageDto> handler) {
31-
// Spara callback för senare användning
3231
receivers.add(handler);
3332
}
3433

0 commit comments

Comments
 (0)