diff --git a/.gitignore b/.gitignore index d1ec16416c57863322f23b09a43ff35d00e7518f..254162c9da1598d8f80da4878d6b9695fd0b9941 100644 --- a/.gitignore +++ b/.gitignore @@ -102,5 +102,6 @@ jams-server/src/main/resources/webapp/ # VScode *.factorypath +.vscode/settings.json jams-server/doc/ diff --git a/README.md b/README.md index cff8054004769e43be1f34a869b809dda554842b..eb826e624926ac9f282055e1288eef676941febb 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,16 @@ docker build -f Dockerfile -t jams:latest --target prod . \ && java -jar jams-launcher.jar ``` +## Visualize the derby database +The IntelliJ Ultimate Edition Database view can help visualize the database schema. +Don't forget to launch jams locally at least once before proceeding. +1. Open this project in IntelliJ +2. View -> Tool Windows -> Database +3. Plus icon -> Data Source from Path +4. Select the jami-jams/jams/jams folder +5. Select the Apache Derby (Embedded) driver +6. Select No auth, click Ok, refresh the database window and the tables should appear! + ## About jams-server/src/main/java/net/jami/jams/server/filters The files in the `filters` folder are prefixed "A", "B", "C" and "D" so that the order of execution of the filters are right (jakarta registers filters in diff --git a/jams-server/pom.xml b/jams-server/pom.xml index 1d07adf2cbc73ca809ff81b062c1bcdbd59f9aab..3df97619e6f98e636c394d9c808c4e5252edf2ba 100644 --- a/jams-server/pom.xml +++ b/jams-server/pom.xml @@ -82,17 +82,17 @@ <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> - <version>4.5.10</version> + <version>4.5.14</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> - <version>20190722</version> + <version>20230618</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> - <version>2.8.6</version> + <version>2.10.1</version> </dependency> </dependencies> diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java index 79d903b97dc87a88e78f53068eab490ed1732cb5..f812e639344b3f0d05f2bf686384fd4510328c12 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/device/DeviceServlet.java @@ -112,11 +112,11 @@ public class DeviceServlet extends HttpServlet { * @apiError (500) {null} null Device could not be enrolled * @apiSuccessExample {json} Success-Response: * { - * "certificateChain":"pem_encoded_certificate_chain" - * "displayName":"John Doe" - * "nameServer":"https://mydomain.com" - * "deviceReceipt": "device_receipt_object" - * "receiptSignature":"receipt_signature_object" + * "certificateChain":"pem_encoded_certificate_chain", + * "displayName":"John Doe", + * "nameServer":"https://mydomain.com", + * "deviceReceipt": "device_receipt_object", + * "receiptSignature":"receipt_signature_object", * "userPhoto":"base64_encoded_photo" * } */ diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java index 414efe02d377ea123fc6d1debd8aad89b3b2edc6..365723c062ed6fa8bdc987150fb7ecb0e6320650 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/DirectoryEntryServlet.java @@ -32,7 +32,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - +import lombok.extern.slf4j.Slf4j; import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.authmodule.AuthModuleKey; import net.jami.jams.common.dao.StatementElement; @@ -47,6 +47,7 @@ import java.util.Optional; // This is an endpoint to manipulate directory entry-data, this make sense only for local setups. +@Slf4j @WebServlet("/api/auth/directory/entry") public class DirectoryEntryServlet extends HttpServlet { @@ -199,10 +200,12 @@ public class DirectoryEntryServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - if (req.getParameter("jamiId") != null) { + + String jamiId = req.getParameter("jamiId"); + if (jamiId != null) { StatementList statementList = new StatementList(); StatementElement statementElement = - new StatementElement("jamiId", "=", req.getParameter("jamiId"), null); + new StatementElement("jamiId", "=", jamiId, null); statementList.addStatement(statementElement); User user = dataStore.getUserDao().getObjects(statementList).get(0); List<UserProfile> userProfiles = new ArrayList<>(); diff --git a/pom.xml b/pom.xml index 01c9893609d9377f3f336c45c2ce342e7036163a..f1d899b03cee7bef2a103717c6a2f1b53d6b4797 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ <maven.compiler.version>3.8.1</maven.compiler.version> <java.version>11</java.version> <bouncy.castle.version>1.65</bouncy.castle.version> - <lombok.version>1.18.12</lombok.version> + <lombok.version>1.18.28</lombok.version> <log4j.version>1.7.30</log4j.version> <jupiter.api.version>5.7.0-M1</jupiter.api.version> <tomcat.version>10.0.0-M5</tomcat.version> @@ -58,7 +58,7 @@ <embedded.ldap.unit>0.8.1</embedded.ldap.unit> <maven.exec.version>1.1.1</maven.exec.version> <zmq.version>0.5.2</zmq.version> - <flyway.version>6.5.1</flyway.version> + <flyway.version>9.21.1</flyway.version> </properties> <dependencies> @@ -152,6 +152,47 @@ </filesets> </configuration> </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>0.8.10</version> + <executions> + <execution> + <id>jacoco-initialize</id> + <goals> + <goal>prepare-agent</goal> + </goals> + </execution> + <execution> + <id>jacoco-report</id> + <phase>test</phase> + <goals> + <goal>report</goal> + </goals> + </execution> + <execution> + <id>jacoco-check</id> + <goals> + <goal>check</goal> + </goals> + <configuration> + <rules> + <rule> + <element>PACKAGE</element> + <limits> + <limit> + <counter>LINE</counter> + <value>COVEREDRATIO</value> + <minimum>0.80</minimum> + </limit> + </limits> + </rule> + </rules> + </configuration> + </execution> + </executions> + </plugin> + </plugins> </build>