]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jsonpath] Upgrade dependencies and some cleanup (#16365)
authorWouter Born <github@maindrain.net>
Sun, 4 Feb 2024 13:55:01 +0000 (14:55 +0100)
committerGitHub <noreply@github.com>
Sun, 4 Feb 2024 13:55:01 +0000 (14:55 +0100)
* Upgrade json-path from 2.5.0 to 2.9.0
* Cleanup code
* Fix all SAT findings

Fixes CVE-2023-1370 and CVE-2023-51074

For json-path release notes, see:

https://github.com/json-path/JsonPath/releases

Signed-off-by: Wouter Born <github@maindrain.net>
bundles/org.openhab.transform.jsonpath/pom.xml
bundles/org.openhab.transform.jsonpath/src/main/java/org/openhab/transform/jsonpath/internal/JSonPathTransformationService.java
bundles/org.openhab.transform.jsonpath/src/main/java/org/openhab/transform/jsonpath/internal/profiles/JSonPathTransformationProfile.java
bundles/org.openhab.transform.jsonpath/src/main/java/org/openhab/transform/jsonpath/internal/profiles/JSonPathTransformationProfileFactory.java
bundles/org.openhab.transform.jsonpath/src/main/resources/readme.txt [deleted file]
bundles/org.openhab.transform.jsonpath/src/test/java/org/openhab/transform/jsonpath/internal/JSonPathTransformationServiceTest.java

index 830be5ba6594c779128ebd1fdf0457d53dbe0cb2..2f38e46b85f72a5f216fb7c61764862e9862ec55 100644 (file)
   <name>openHAB Add-ons :: Bundles :: Transformation Service :: JSonPath</name>
 
   <properties>
-    <bnd.importpackage>!org.apache.tapestry5.json.*,!org.codehaus.jettison.json.*,!org.json.*,!com.fasterxml.jackson.*</bnd.importpackage>
+    <bnd.importpackage>!org.apache.tapestry5.json.*,!org.codehaus.jettison.json.*,!org.json.*,!com.fasterxml.jackson.*,!jakarta.json.*</bnd.importpackage>
   </properties>
 
   <dependencies>
     <dependency>
       <groupId>com.jayway.jsonpath</groupId>
       <artifactId>json-path</artifactId>
-      <version>2.5.0</version>
+      <version>2.9.0</version>
       <scope>compile</scope>
+      <exclusions>
+        <exclusion>
+          <!-- Exclude slf4j-api to prevent its scope being changed from 'provided' to 'runtime' -->
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-api</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.ow2.asm</groupId>
       <artifactId>asm</artifactId>
-      <version>5.0.4</version>
+      <version>9.3</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>net.minidev</groupId>
       <artifactId>accessors-smart</artifactId>
-      <version>1.2</version>
+      <version>2.5.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>net.minidev</groupId>
       <artifactId>json-smart</artifactId>
-      <version>2.3</version>
+      <version>2.5.0</version>
       <scope>compile</scope>
     </dependency>
   </dependencies>
index 016ce7b9d04f68257c423505b2520a4dc1c43f94..f6923c53a461e3dce0a098f2ef0dbe2a2851446b 100644 (file)
@@ -30,12 +30,10 @@ import com.jayway.jsonpath.JsonPath;
 import com.jayway.jsonpath.PathNotFoundException;
 
 /**
- * <p>
- * The implementation of {@link TransformationService} which transforms the input by JSonPath Expressions.
- *
- * @author Gaël L'hopital
- * @author Sebastian Janzen
+ * The implementation of a {@link TransformationService} which transforms the input by JSonPath Expressions.
  *
+ * @author Gaël L'hopital - Initial contribution
+ * @author Sebastian Janzen - Initial contribution
  */
 @NonNullByDefault
 @Component(property = { "openhab.transform=JSONPATH" })
@@ -68,7 +66,7 @@ public class JSonPathTransformationService implements TransformationService {
             logger.debug("transformation resulted in '{}'", transformationResult);
             if (transformationResult == null) {
                 return null;
-            } else if (transformationResult instanceof List list) {
+            } else if (transformationResult instanceof List<?> list) {
                 return flattenList(list);
             } else {
                 return transformationResult.toString();
@@ -98,10 +96,10 @@ public class JSonPathTransformationService implements TransformationService {
     }
 
     private String createNumberList(List<?> list) {
-        return list.stream().map(n -> String.valueOf(n)).collect(Collectors.joining(", ", "[", "]"));
+        return list.stream().map(String::valueOf).collect(Collectors.joining(", ", "[", "]"));
     }
 
     private String createStringList(List<?> list) {
-        return list.stream().map(n -> "\"" + String.valueOf(n) + "\"").collect(Collectors.joining(", ", "[", "]"));
+        return list.stream().map(n -> "\"" + n + "\"").collect(Collectors.joining(", ", "[", "]"));
     }
 }
index e23a13a07fe040eaddc3e31f03a455221c08a1e5..796a9e626fd5024e1cddda1e31e51f2fbd1b0755 100644 (file)
@@ -30,8 +30,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Profile to offer the JSonPathTransformationservice on an ItemChannelLink
  *
- * @author Stefan Triller - initial contribution
- *
+ * @author Stefan Triller - Initial contribution
  */
 @NonNullByDefault
 public class JSonPathTransformationProfile implements StateProfile {
@@ -47,10 +46,8 @@ public class JSonPathTransformationProfile implements StateProfile {
     private static final String FUNCTION_PARAM = "function";
     private static final String SOURCE_FORMAT_PARAM = "sourceFormat";
 
-    @NonNullByDefault({})
-    private final String function;
-    @NonNullByDefault({})
-    private final String sourceFormat;
+    private final @NonNullByDefault({}) String function;
+    private final @NonNullByDefault({}) String sourceFormat;
 
     public JSonPathTransformationProfile(ProfileCallback callback, ProfileContext context,
             TransformationService service) {
index 1df59cdfa5a5c8741723040715ce081cb5769ac6..1c2f44bfa694fbaa2b4beb0e41c5e00f901046b8 100644 (file)
@@ -12,8 +12,8 @@
  */
 package org.openhab.transform.jsonpath.internal.profiles;
 
-import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 import java.util.Locale;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
@@ -31,21 +31,19 @@ import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 
 /**
- * Profilefactory that creates the transformation profile for the jsonpath transformation service
- *
- * @author Stefan Triller - initial contribution
+ * {@link ProfileFactory} that creates the transformation profile for the jsonpath transformation service
  *
+ * @author Stefan Triller - Initial contribution
  */
 @NonNullByDefault
 @Component(service = { ProfileFactory.class, ProfileTypeProvider.class })
 public class JSonPathTransformationProfileFactory implements ProfileFactory, ProfileTypeProvider {
 
-    @NonNullByDefault({})
-    private TransformationService service;
+    private @NonNullByDefault({}) TransformationService service;
 
     @Override
     public Collection<ProfileType> getProfileTypes(@Nullable Locale locale) {
-        return Arrays.asList(ProfileTypeBuilder.newState(JSonPathTransformationProfile.PROFILE_TYPE_UID,
+        return List.of(ProfileTypeBuilder.newState(JSonPathTransformationProfile.PROFILE_TYPE_UID,
                 JSonPathTransformationProfile.PROFILE_TYPE_UID.getId()).build());
     }
 
@@ -57,7 +55,7 @@ public class JSonPathTransformationProfileFactory implements ProfileFactory, Pro
 
     @Override
     public Collection<ProfileTypeUID> getSupportedProfileTypeUIDs() {
-        return Arrays.asList(JSonPathTransformationProfile.PROFILE_TYPE_UID);
+        return List.of(JSonPathTransformationProfile.PROFILE_TYPE_UID);
     }
 
     @Reference(target = "(openhab.transform=JSONPATH)")
diff --git a/bundles/org.openhab.transform.jsonpath/src/main/resources/readme.txt b/bundles/org.openhab.transform.jsonpath/src/main/resources/readme.txt
deleted file mode 100644 (file)
index a2ee892..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Bundle resources go in here!
index c864bec469fc788c791bac584d07600ccf7b1aa9..188f5138cb3c3e4e3eccb6c49abfa181d9e471cf 100644 (file)
@@ -14,6 +14,7 @@ package org.openhab.transform.jsonpath.internal;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.openhab.core.transform.TransformationException;
@@ -21,9 +22,10 @@ import org.openhab.core.transform.TransformationException;
 /**
  * @author Gaël L'hopital - Initial contribution
  */
+@NonNullByDefault
 public class JSonPathTransformationServiceTest {
 
-    private JSonPathTransformationService processor;
+    private @NonNullByDefault({}) JSonPathTransformationService processor;
 
     @BeforeEach
     public void init() {
@@ -40,59 +42,59 @@ public class JSonPathTransformationServiceTest {
         assertEquals("Nigel Rees", transformedResponse);
     }
 
-    private static final String jsonArray = "[" + //
+    private static final String JSON_ARRAY = "[" + //
             "{ \"id\":1, \"name\":\"bob\", \"empty\":null }," + //
             "{ \"id\":2, \"name\":\"alice\" }" + //
             "]";
 
     @Test
     public void testValidPath1() throws TransformationException {
-        String transformedResponse = processor.transform("$[0].name", jsonArray);
+        String transformedResponse = processor.transform("$[0].name", JSON_ARRAY);
         assertEquals("bob", transformedResponse);
     }
 
     @Test
     public void testValidPath2() throws TransformationException {
-        String transformedResponse = processor.transform("$[1].id", jsonArray);
+        String transformedResponse = processor.transform("$[1].id", JSON_ARRAY);
         assertEquals("2", transformedResponse);
     }
 
     @Test
     public void testInvalidPathThrowsException() {
-        assertThrows(TransformationException.class, () -> processor.transform("$$", jsonArray));
+        assertThrows(TransformationException.class, () -> processor.transform("$$", JSON_ARRAY));
     }
 
     @Test
     public void testPathMismatchReturnNull() {
-        assertThrows(TransformationException.class, () -> processor.transform("$[5].id", jsonArray));
+        assertThrows(TransformationException.class, () -> processor.transform("$[5].id", JSON_ARRAY));
     }
 
     @Test
-    public void testInvalidJsonReturnNull() throws TransformationException {
+    public void testInvalidJsonReturnNull() {
         assertThrows(TransformationException.class, () -> processor.transform("$", "{id:"));
     }
 
     @Test
     public void testNullValue() throws TransformationException {
-        String transformedResponse = processor.transform("$[0].empty", jsonArray);
-        assertEquals(null, transformedResponse);
+        String transformedResponse = processor.transform("$[0].empty", JSON_ARRAY);
+        assertNull(transformedResponse);
     }
 
     @Test
-    public void testIndefinite_filteredToSingle() throws TransformationException {
-        String transformedResponse = processor.transform("$.*[?(@.name=='bob')].id", jsonArray);
+    public void testIndefiniteFilteredToSingle() throws TransformationException {
+        String transformedResponse = processor.transform("$.*[?(@.name=='bob')].id", JSON_ARRAY);
         assertEquals("1", transformedResponse);
     }
 
     @Test
-    public void testIndefinite_notFiltered() throws TransformationException {
-        String transformedResponse = processor.transform("$.*.id", jsonArray);
+    public void testIndefiniteNotFiltered() throws TransformationException {
+        String transformedResponse = processor.transform("$.*.id", JSON_ARRAY);
         assertEquals("[1, 2]", transformedResponse);
     }
 
     @Test
-    public void testIndefinite_noMatch() throws TransformationException {
-        String transformedResponse = processor.transform("$.*[?(@.name=='unknown')].id", jsonArray);
+    public void testIndefiniteNoMatch() throws TransformationException {
+        String transformedResponse = processor.transform("$.*[?(@.name=='unknown')].id", JSON_ARRAY);
         assertEquals("NULL", transformedResponse);
     }