Piotr Kliczewski has posted comments on this change.
Change subject: engine: Draft - Json-rpc integration
......................................................................
Patch Set 7:
(15 comments)
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/JsonRpcClient.java
Line 39: private final ConcurrentMap<JsonNode, JsonRpcCall> runningCalls;
Line 40: private RetryPolicy policy = new DefaultClientRetryPolicy();
Line 41: private ConcurrentMap<JsonNode, ResponseTracking> map = new
ConcurrentHashMap<>();
Line 42: private Queue<JsonNode> queue = new ConcurrentLinkedQueue<>();
Line 43: private boolean isTracking = true;
Done
Line 44:
Line 45: /**
Line 46: * Wraps {@link ReactorClient} to hide response update details.
Line 47: *
Line 163: removeRequestFromTracking(id);
Line 164: continue;
Line 165: }
Line 166: ResponseTracking tracking = map.get(id);
Line 167: if (new Date().getTime() >=
tracking.getTimeout()) {
Good point.
Line 168: RetryContext context =
tracking.getContext();
Line 169: context.decreaseAttempts();
Line 170: if (context.getNumberOfAttempts() <= 0) {
Line 171: runningCalls.remove(id);
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/JsonRpcRequest.java
Line 8: * Java bean representation of the request.
Line 9: *
Line 10: */
Line 11: public class JsonRpcRequest {
Line 12: private static ObjectMapper mapper = new ObjectMapper();
Will add but it is not required here. Static is enough.
Line 13: private String method;
Line 14: private JsonNode params;
Line 15: private JsonNode id;
Line 16:
Line 66: "'jsonrpc' field missing in node");
Line 67: }
Line 68:
Line 69: String version = tmp.asText();
Line 70: if ((version == null) || (!version.equals("2.0"))) {
Done
Line 71: throw new IllegalArgumentException("Only jsonrpc 2.0 is
supported");
Line 72: }
Line 73:
Line 74: tmp = node.get("method");
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/JsonRpcResponse.java
Line 60: "'jsonrpc' field missing in node");
Line 61: }
Line 62:
Line 63: String version = jsonrpcNode.asText();
Line 64: if ((version == null) || (!version.equals("2.0"))) {
Done
Line 65: throw new IllegalArgumentException("Only jsonrpc 2.0 is
supported");
Line 66: }
Line 67:
Line 68: final JsonNode id = node.get("id");
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/RequestBuilder.java
Line 32: * @param name - Name of the parameter.
Line 33: * @param value - Value of the parameter.
Line 34: * @return {@link RequestBuilder} to let add more parameters.
Line 35: */
Line 36: public RequestBuilder withParameter(String name, String value) {
withParameter seems to be more descriptive.
Line 37: this.parameters.put(name, value);
Line 38: return this;
Line 39: }
Line 40:
Line 44: * @param name - Name of the parameter.
Line 45: * @param value - Value of the parameter or <code>null</code>.
Line 46: * @return {@link RequestBuilder} to let add more parameters.
Line 47: */
Line 48: public RequestBuilder withOptionalParameter(String name, String
value) {
withOptionalParametere seems to be more descriptive
Line 49: if (value != null && !"".equals(value.trim())) {
Line 50: return withParameter(name, value);
Line 51: }
Line 52: return this;
Line 45: * @param value - Value of the parameter or <code>null</code>.
Line 46: * @return {@link RequestBuilder} to let add more parameters.
Line 47: */
Line 48: public RequestBuilder withOptionalParameter(String name, String
value) {
Line 49: if (value != null && !"".equals(value.trim())) {
Done
Line 50: return withParameter(name, value);
Line 51: }
Line 52: return this;
Line 53: }
Line 61: * or empty <code>List</code>.
Line 62: * @return {@link RequestBuilder} to let add more parameters.
Line 63: */
Line 64: @SuppressWarnings("rawtypes")
Line 65: public RequestBuilder withOptionalParameterAsList(String name,
List value) {
As above
Line 66: if (value != null && value.size() > 0) {
Line 67: return withParameter(name, value);
Line 68: }
Line 69: return this;
Line 62: * @return {@link RequestBuilder} to let add more parameters.
Line 63: */
Line 64: @SuppressWarnings("rawtypes")
Line 65: public RequestBuilder withOptionalParameterAsList(String name,
List value) {
Line 66: if (value != null && value.size() > 0) {
Done
Line 67: return withParameter(name, value);
Line 68: }
Line 69: return this;
Line 70: }
Line 78: * or empty <code>Map</code>.
Line 79: * @return {@link RequestBuilder} to let add more parameters.
Line 80: */
Line 81: @SuppressWarnings("rawtypes")
Line 82: public RequestBuilder withOptionalParameterAsMap(String name, Map
value) {
As above
Line 83: if (value != null && value.keySet().size() > 0) {
Line 84: return withParameter(name, value);
Line 85: }
Line 86: return this;
Line 79: * @return {@link RequestBuilder} to let add more parameters.
Line 80: */
Line 81: @SuppressWarnings("rawtypes")
Line 82: public RequestBuilder withOptionalParameterAsMap(String name, Map
value) {
Line 83: if (value != null && value.keySet().size() > 0) {
Done
Line 84: return withParameter(name, value);
Line 85: }
Line 86: return this;
Line 87: }
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/reactors/Reactor.java
Line 27: private static Log log = LogFactory.getLog(Reactor.class);
Line 28: private static final int TIMEOUT = 1000;
Line 29: private final AbstractSelector selector;
Line 30: private final ReactorScheduler scheduler;
Line 31: private boolean isRunning = false;
Done
Line 32:
Line 33: public Reactor() throws IOException {
Line 34: this.selector = SelectorProvider.provider().openSelector();
Line 35: this.scheduler = new ReactorScheduler();
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/utils/JsonUtils.java
Line 49: return os.toByteArray();
Line 50: }
Line 51:
Line 52: public static JsonRpcResponse
buildFailedResponse(JsonRpcRequest request) {
Line 53: String jsonMessge =
Will provide more descriptive name.
Line 54: "{\"jsonrpc\": \"2.0\", \"id\": \"" +
request.getPlainId() + "\", \"error\": {\"message\":"
Line 55: + " \"Message timeout which can be caused
by communication issues'\", \"code\": 5022}}";
Line 56: JsonRpcResponse response = null;
Line 57: try {
....................................................
File
backend/manager/modules/jsonrpc/src/main/java/org/ovirt/engine/jsonrpc/client/utils/ReactorScheduler.java
Line 21: }
Line 22:
Line 23: public void performPendingOperations() {
Line 24: boolean remove = false;
Line 25: for (int i = 0; i < +pendingOperations.size(); i++) {
Will rework this loop.
Line 26: Future<?> task = pendingOperations.peek();
Line 27: if (task instanceof FutureTask) {
Line 28: ((FutureTask<?>) task).run();
Line 29: remove = true;
--
To view, visit http://gerrit.ovirt.org/20926
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I66ef0c98f07de6c447a5fffc42c9dbc94580df46
Gerrit-PatchSet: 7
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Piotr Kliczewski <[email protected]>
Gerrit-Reviewer: Alon Bar-Lev <[email protected]>
Gerrit-Reviewer: Barak Azulay <[email protected]>
Gerrit-Reviewer: Eli Mesika <[email protected]>
Gerrit-Reviewer: Martin Peřina <[email protected]>
Gerrit-Reviewer: Piotr Kliczewski <[email protected]>
Gerrit-Reviewer: Saggi Mizrahi <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
Gerrit-Reviewer: mooli tayer <[email protected]>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches