From e0a39f001221bbd861c7ea0425d1cdb00d814084 Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 3 Apr 2025 18:33:53 -0700 Subject: [PATCH 1/4] Parse prefixed Capability values --- .../com/github/dockerjava/api/model/Capability.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java index fe71864c0..dc7000c08 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java @@ -1,5 +1,7 @@ package com.github.dockerjava.api.model; +import com.fasterxml.jackson.annotation.JsonCreator; + /** * The Linux capabilities supported by Docker. The list of capabilities is defined in Docker's types.go, {@link #ALL} was added manually. * @@ -299,5 +301,11 @@ public enum Capability { /** * Trigger something that will wake up the system (set CLOCK_REALTIME_ALARM and CLOCK_BOOTTIME_ALARM timers). */ - WAKE_ALARM + WAKE_ALARM; + + @JsonCreator() + public static Capability fromValue(String cap) { + String result = !cap.startsWith("CAP_") ? cap : cap.substring(4); + return Capability.valueOf(result); + } } From ce2cdaf3be4bcad52785725f0813c6824ff7813e Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 14 Apr 2025 14:33:12 -0700 Subject: [PATCH 2/4] Add a regression test --- .../com/github/dockerjava/api/model/CapabilityTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java index aa6167b8c..43377c269 100644 --- a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java +++ b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java @@ -20,6 +20,12 @@ public void deserializeCapability() throws Exception { assertEquals(Capability.ALL, capability); } + @Test + public void parseCapPrefix() throws Exception { + Capability capability = JSONTestHelper.getMapper().readValue("\"CAP_ALL\"", Capability.class); + assertEquals(Capability.ALL, capability); + } + @Test(expected = JsonMappingException.class) public void deserializeInvalidCapability() throws Exception { JSONTestHelper.getMapper().readValue("\"nonsense\"", Capability.class); From b0e6f8f25312d046fc892936c341b273ce2c0eea Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 14 Apr 2025 14:37:33 -0700 Subject: [PATCH 3/4] Move test case --- .../com/github/dockerjava/api/model/CapabilityTest.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java index 43377c269..b0652d945 100644 --- a/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java +++ b/docker-java/src/test/java/com/github/dockerjava/api/model/CapabilityTest.java @@ -18,12 +18,9 @@ public void serializeCapability() throws Exception { public void deserializeCapability() throws Exception { Capability capability = JSONTestHelper.getMapper().readValue("\"ALL\"", Capability.class); assertEquals(Capability.ALL, capability); - } - @Test - public void parseCapPrefix() throws Exception { - Capability capability = JSONTestHelper.getMapper().readValue("\"CAP_ALL\"", Capability.class); - assertEquals(Capability.ALL, capability); + Capability compatibleCapability = JSONTestHelper.getMapper().readValue("\"CAP_ALL\"", Capability.class); + assertEquals(Capability.ALL, compatibleCapability); } @Test(expected = JsonMappingException.class) From a4068dbd3ae06fb8b9464d58f27afde426874c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Mon, 12 May 2025 19:15:47 -0500 Subject: [PATCH 4/4] Apply suggestions from code review --- .../main/java/com/github/dockerjava/api/model/Capability.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java index dc7000c08..57fb97c7b 100644 --- a/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java +++ b/docker-java-api/src/main/java/com/github/dockerjava/api/model/Capability.java @@ -303,9 +303,9 @@ public enum Capability { */ WAKE_ALARM; - @JsonCreator() + @JsonCreator public static Capability fromValue(String cap) { - String result = !cap.startsWith("CAP_") ? cap : cap.substring(4); + String result = !cap.startsWith("CAP_") ? cap : cap.split("_", 2)[1]; return Capability.valueOf(result); } }