mirror of
https://github.com/apache/jclouds.git
synced 2025-02-07 02:29:25 +00:00
fix to check for nullable in those places where we test that nullable is supported, and to test that leaving out nullable disallows null parameters
This commit is contained in:
parent
f26887b084
commit
70d58180e0
@ -960,6 +960,21 @@ public class RestAnnotationProcessor<T> {
|
||||
}
|
||||
if (shouldBreak)
|
||||
break OUTER;
|
||||
} else {
|
||||
// either arg is null, or request.getArgs().size() < entry.getKey() + 1
|
||||
// in either case, we require that null be allowed
|
||||
// (first, however, let's make sure we have enough args on the actual method)
|
||||
if (entry.getKey() >= request.getJavaMethod().getParameterAnnotations().length) {
|
||||
// not known whether this happens
|
||||
throw new IllegalArgumentException("Argument index "+(entry.getKey()+1)+" is out of bounds for method "+request.getJavaMethod());
|
||||
}
|
||||
|
||||
Annotation[] annotations = request.getJavaMethod().getParameterAnnotations()[entry.getKey()];
|
||||
for (Annotation a: annotations) {
|
||||
if (Nullable.class.isAssignableFrom(a.annotationType()))
|
||||
continue OUTER;
|
||||
}
|
||||
Preconditions.checkNotNull(null, request.getJavaMethod().getName()+" parameter "+(entry.getKey()+1));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -609,27 +609,25 @@ public class RestAnnotationProcessorTest extends BaseRestClientTest {
|
||||
assertPayloadEquals(request, null, "application/unknown", false);
|
||||
}
|
||||
|
||||
//FIXME the following two tests fail, suggesting that the tests above aren't actually testing Nullable
|
||||
//but rather indicates that RestAnnotationProcessor.decorateRequest silently ignores nulls
|
||||
// public void testCreatePostRequestNullNotOk1() throws SecurityException, NoSuchMethodException, IOException {
|
||||
// Method method = TestPost.class.getMethod("postNonnull", String.class);
|
||||
// try {
|
||||
// HttpRequest request = factory(TestPost.class).createRequest(method);
|
||||
// Assert.fail("call should have failed with illegal null parameter, not permitted "+request+" to be created");
|
||||
// } catch (NullPointerException e) {
|
||||
//// Assert.assertTrue(e.toString().indexOf("???")>=0, "Error message should have referred to parameter 'fooble': "+e);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public void testCreatePostRequestNullNotOk2() throws SecurityException, NoSuchMethodException, IOException {
|
||||
// Method method = TestPost.class.getMethod("postNonnull", String.class);
|
||||
// try {
|
||||
// HttpRequest request = factory(TestPost.class).createRequest(method, (String)null);
|
||||
// Assert.fail("call should have failed with illegal null parameter, not permitted "+request+" to be created");
|
||||
// } catch (NullPointerException e) {
|
||||
// // Assert.assertTrue(e.toString().indexOf("???")>=0, "Error message should have referred to parameter 'fooble': "+e);
|
||||
// }
|
||||
// }
|
||||
public void testCreatePostRequestNullNotOk1() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TestPost.class.getMethod("postNonnull", String.class);
|
||||
try {
|
||||
HttpRequest request = factory(TestPost.class).createRequest(method);
|
||||
Assert.fail("call should have failed with illegal null parameter, not permitted "+request+" to be created");
|
||||
} catch (NullPointerException e) {
|
||||
Assert.assertTrue(e.toString().indexOf("postNonnull parameter 1")>=0, "Error message should have referred to 'parameter 1': "+e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testCreatePostRequestNullNotOk2() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TestPost.class.getMethod("postNonnull", String.class);
|
||||
try {
|
||||
HttpRequest request = factory(TestPost.class).createRequest(method, (String)null);
|
||||
Assert.fail("call should have failed with illegal null parameter, not permitted "+request+" to be created");
|
||||
} catch (NullPointerException e) {
|
||||
Assert.assertTrue(e.toString().indexOf("postNonnull parameter 1")>=0, "Error message should have referred to parameter 'parameter 1': "+e);
|
||||
}
|
||||
}
|
||||
|
||||
public void testCreatePostJsonRequest() throws SecurityException, NoSuchMethodException, IOException {
|
||||
Method method = TestPost.class.getMethod("postAsJson", String.class);
|
||||
|
Loading…
x
Reference in New Issue
Block a user