Juan Hernandez has uploaded a new change for review.
Change subject: restapi: Don't use inner classes in LinkBuilder
......................................................................
restapi: Don't use inner classes in LinkBuilder
We use anonymous classes in a rather unusual way in the LinkBuilder, we
do the follwing:
whatever.setBody(new Body(){{setType(type);}});
Instead of this:
Body body = new Body();
body.setType(type);
whatever.setBody(body);
The former is probably nicer syntax, but it has the side effect of
introducing a synthetic field in the subclass of Body that the compiler
generates automatically. This synthetic field is a reference to the
outer LinkHelper class. When Jackson tries to convert this object to
JSON it finds the synthetic field, and tries to serialize it as well.
This fails because the LinkHelper class doesn't have a suitable
constructor.
The net effect is an error when the server tries to return an error
message to the user.
The solution is to avoid completely the anonymous classes, and thus the
synthetic fields.
Change-Id: I10e0ecb68b3e0d412de486c3a38dbefa3c4dd9d2
Bug-Url: https://bugzilla.redhat.com/1093755
Signed-off-by: Juan Hernandez <[email protected]>
(cherry picked from commit 3e2af7c52118061c058aacf4abfb52162a8a282c)
---
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/LinkBuilder.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
2 files changed, 16 insertions(+), 6 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/27420/1
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/LinkBuilder.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/LinkBuilder.java
index adba25d..2d011dd 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/LinkBuilder.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/LinkBuilder.java
@@ -18,12 +18,17 @@
return this;
}
public LinkBuilder requestParameter(final String requestParameter) {
- detailedLink.setRequest(new Request());
- detailedLink.getRequest().setBody(new
Body(){{setType(requestParameter);}});
+ Body body = new Body();
+ body.setType(requestParameter);
+ Request request = new Request();
+ request.setBody(body);
+ detailedLink.setRequest(request);
return this;
}
public LinkBuilder responseType(final String responseType) {
- detailedLink.setResponse(new Response(){{setType(responseType);}});
+ Response response = new Response();
+ response.setType(responseType);
+ detailedLink.setResponse(response);
return this;
}
public LinkBuilder httpMethod(HttpMethod httpMethod) {
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
index 3eb63d7..0fa9e28 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/rsdl/RsdlBuilder.java
@@ -227,12 +227,17 @@
return this;
}
public LinkBuilder requestParameter(final String requestParameter) {
- link.setRequest(new Request());
- link.getRequest().setBody(new
Body(){{setType(requestParameter);}});
+ Body body = new Body();
+ body.setType(requestParameter);
+ Request request = new Request();
+ request.setBody(body);
+ link.setRequest(request);
return this;
}
public LinkBuilder responseType(final String responseType) {
- link.setResponse(new Response(){{setType(responseType);}});
+ Response response = new Response();
+ response.setType(responseType);
+ link.setResponse(response);
return this;
}
public LinkBuilder httpMethod(HttpMethod httpMethod) {
--
To view, visit http://gerrit.ovirt.org/27420
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I10e0ecb68b3e0d412de486c3a38dbefa3c4dd9d2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Juan Hernandez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches