From fecaec92bff03ceeaaeba8e3457534ae38da1151 Mon Sep 17 00:00:00 2001
From: Lucy Ciara Herud-Thomassen <86323303+LucyCiara@users.noreply.github.com>
Date: Tue, 3 Mar 2026 17:32:55 +0100
Subject: [PATCH] test[OrgAPIWrapper]: add tests for OrgAPIWrapper
---
pom.xml | 1 -
src/main/java/edu/group5/app/App.java | 11 ++++-
.../edu/group5/app/control/OrgAPIWrapper.java | 40 ++++++++++++-------
.../java/edu/group5/app/control/Wrapper.java | 2 +-
4 files changed, 37 insertions(+), 17 deletions(-)
diff --git a/pom.xml b/pom.xml
index d78f0c3..3941344 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,6 @@
compile
-
diff --git a/src/main/java/edu/group5/app/App.java b/src/main/java/edu/group5/app/App.java
index 4f4364f..5886cd4 100644
--- a/src/main/java/edu/group5/app/App.java
+++ b/src/main/java/edu/group5/app/App.java
@@ -1,15 +1,24 @@
package edu.group5.app;
+import java.util.HashMap;
+
import edu.group5.app.control.OrgAPIWrapper;
+import tools.jackson.core.type.TypeReference;
+import tools.jackson.databind.ObjectMapper;
/**
* Hello world!
*/
public class App {
- public static void main(String[] args) {
+ public static void main(String[] args) throws InterruptedException {
OrgAPIWrapper orgWrap = new OrgAPIWrapper("https://app.innsamlingskontrollen.no/api/public/v1/all");
System.out.println();
System.out.println();
orgWrap.importData();
+ Object[] imports = orgWrap.getData();
+ ObjectMapper objectMapper = new ObjectMapper();
+ HashMap map = objectMapper.convertValue(imports[0], new TypeReference>() {
+ });
+ System.out.println(map.get("org_number"));
}
}
diff --git a/src/main/java/edu/group5/app/control/OrgAPIWrapper.java b/src/main/java/edu/group5/app/control/OrgAPIWrapper.java
index 9123c69..f8bc7ab 100644
--- a/src/main/java/edu/group5/app/control/OrgAPIWrapper.java
+++ b/src/main/java/edu/group5/app/control/OrgAPIWrapper.java
@@ -1,37 +1,49 @@
package edu.group5.app.control;
+import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
+import tools.jackson.core.exc.StreamReadException;
import tools.jackson.databind.ObjectMapper;
public class OrgAPIWrapper extends Wrapper {
- private String urlString;
private Object[] data;
+ private HttpClient client;
+ private HttpRequest request;
public OrgAPIWrapper(String urlString) {
- this.urlString = urlString;
+ if (urlString == null) {
+ throw new IllegalArgumentException("url can't be null");
+ } else if (urlString.isBlank()) {
+ throw new IllegalArgumentException("url can't be blank");
+ }
+ try {
+ URI uri = URI.create(urlString);
+ this.client = HttpClient.newHttpClient();
+ this.request = HttpRequest.newBuilder()
+ .uri(uri)
+ .GET()
+ .build();
+ } catch (IllegalArgumentException IAe) {
+ throw new IllegalArgumentException("url has to be valid");
+ }
+
}
@Override
- public boolean importData() {
- URI uri = URI.create(this.urlString);
- HttpClient client = HttpClient.newHttpClient();
- HttpRequest request = HttpRequest.newBuilder()
- .uri(uri)
- .GET()
- .build();
-
+ public boolean importData() throws InterruptedException {
try {
- HttpResponse response = client.send(
- request, HttpResponse.BodyHandlers.ofString());
+ HttpResponse response = this.client.send(
+ this.request, HttpResponse.BodyHandlers.ofString());
this.data = new ObjectMapper().readValue(response.body(), Object[].class);
return true;
- } catch (Exception e) {
- e.printStackTrace();
+ } catch (IOException IOe) {
return false;
+ } catch (StreamReadException e) {
+ throw new StreamReadException("The URL leads to a website that can't be parsed");
}
}
diff --git a/src/main/java/edu/group5/app/control/Wrapper.java b/src/main/java/edu/group5/app/control/Wrapper.java
index e8a8365..012ea2c 100644
--- a/src/main/java/edu/group5/app/control/Wrapper.java
+++ b/src/main/java/edu/group5/app/control/Wrapper.java
@@ -5,7 +5,7 @@ abstract class Wrapper {
protected Wrapper() {
}
- public abstract boolean importData();
+ public abstract boolean importData() throws InterruptedException;
public abstract Object getData();
}