From 1dab059861ae51b523df04c00909945bc6a4afbd Mon Sep 17 00:00:00 2001 From: Chad Retz Date: Mon, 23 Feb 2015 15:07:02 -0600 Subject: [PATCH] Support mask removal --- src/main/java/com/softlayer/api/Maskable.java | 3 +++ .../java/com/softlayer/api/RestApiClient.java | 7 +++++++ .../com/softlayer/api/RestApiClientTest.java | 17 +++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/src/main/java/com/softlayer/api/Maskable.java b/src/main/java/com/softlayer/api/Maskable.java index 9edaf2e..81c1c7a 100644 --- a/src/main/java/com/softlayer/api/Maskable.java +++ b/src/main/java/com/softlayer/api/Maskable.java @@ -14,4 +14,7 @@ public interface Maskable { /** Set the mask to a string, formatted according to http://sldn.softlayer.com/article/Object-Masks */ public void setMask(String mask); + + /** Removes the mask from the service */ + public void clearMask(); } diff --git a/src/main/java/com/softlayer/api/RestApiClient.java b/src/main/java/com/softlayer/api/RestApiClient.java index bc491e4..c6750ae 100644 --- a/src/main/java/com/softlayer/api/RestApiClient.java +++ b/src/main/java/com/softlayer/api/RestApiClient.java @@ -445,6 +445,13 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl mask = (Mask) args[0]; maskString = null; return null; + } else if ("setMask".equals(method.getName()) && args != null + && args.length == 1 && args[0] == null) { + throw new IllegalArgumentException("Cannot set null mask. Use clearMask to clear"); + } else if ("clearMask".equals(method.getName())) { + mask = null; + maskString = null; + return null; } else if ("setResultLimit".equals(method.getName()) && method.getDeclaringClass() == ResultLimitable.class) { resultLimit = (ResultLimit) args[0]; diff --git a/src/test/java/com/softlayer/api/RestApiClientTest.java b/src/test/java/com/softlayer/api/RestApiClientTest.java index 0439c1b..19d1b71 100644 --- a/src/test/java/com/softlayer/api/RestApiClientTest.java +++ b/src/test/java/com/softlayer/api/RestApiClientTest.java @@ -428,4 +428,21 @@ public void onSuccess(String value) { assertTrue(http.invokeAsyncCallbackCalled); assertTrue(successCalled.get()); } + + @Test(expected = IllegalArgumentException.class) + public void testMaskMustNotBeNull() { + RestApiClient client = new RestApiClient("http://example.com/"); + TestEntity.Service service = TestEntity.service(client); + service.setMask((Mask) null); + } + + @Test + public void testMaskRemoval() { + RestApiClient client = new RestApiClient("http://example.com/"); + TestEntity.Service service = TestEntity.service(client); + service.withMask().baz(); + assertEquals("baz", service.withMask().toString()); + service.clearMask(); + assertEquals("", service.withMask().toString()); + } }