/** @param request */ private ProtocolVersion getProtocolVersionForService(final Request<?> request) { try { return getProtocolVersion( AllProtocolVersions.BASELINE_PROTOCOL_VERSION, AllProtocolVersions.LATEST_PROTOCOL_VERSION, AllProtocolVersions.NEXT_PROTOCOL_VERSION, getAnnouncedVersion(_client.getMetadata(new URI(_uriPrefix + request.getServiceName()))), request.getRequestOptions().getProtocolVersionOption(), _forceUseNextVersionOverride); } catch (URISyntaxException e) { throw new RuntimeException("Failed to create a valid URI to fetch properties for!"); } }
@SuppressWarnings({"unchecked", "rawtypes"}) private <T extends Request> RestRequest clientGeneratedRequest( Class<T> requestClass, ResourceMethod method, DataMap entityBody, RestClient.ContentType contentType, List<RestClient.AcceptType> acceptTypes) throws URISyntaxException { // massive setup... Client mockClient = EasyMock.createMock(Client.class); @SuppressWarnings({"rawtypes"}) Request<?> mockRequest = EasyMock.createMock(requestClass); RecordTemplate mockRecordTemplate = EasyMock.createMock(RecordTemplate.class); @SuppressWarnings({"rawtypes"}) RestResponseDecoder mockResponseDecoder = EasyMock.createMock(RestResponseDecoder.class); setCommonExpectations(mockRequest, method, mockRecordTemplate, mockResponseDecoder); if (method == ResourceMethod.BATCH_PARTIAL_UPDATE || method == ResourceMethod.BATCH_UPDATE) { buildInputForBatchPathAndUpdate(mockRequest); } else { EasyMock.expect(mockRequest.getInputRecord()).andReturn(mockRecordTemplate).times(2); EasyMock.expect(mockRequest.getResourceSpec()).andReturn(new ResourceSpecImpl()).once(); } if (method == ResourceMethod.GET) { EasyMock.expect(((GetRequest) mockRequest).getObjectId()).andReturn(null).once(); EasyMock.expect(((GetRequest) mockRequest).getResourceSpec()) .andReturn(new ResourceSpecImpl()) .once(); EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else if (method == ResourceMethod.BATCH_GET) { EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else if (method == ResourceMethod.ACTION) { EasyMock.expect(((ActionRequest) mockRequest).getId()).andReturn(null); EasyMock.expect(mockRequest.getMethodName()).andReturn("testAction"); } else if (method == ResourceMethod.FINDER) { EasyMock.expect(((FindRequest) mockRequest).getAssocKey()).andReturn(new CompoundKey()); EasyMock.expect(mockRequest.getMethodName()).andReturn("testFinder"); } else if (method == ResourceMethod.GET_ALL) { EasyMock.expect(((GetAllRequest) mockRequest).getAssocKey()).andReturn(new CompoundKey()); EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else if (method == ResourceMethod.UPDATE) { EasyMock.expect(((UpdateRequest) mockRequest).getResourceSpec()) .andReturn(new ResourceSpecImpl()) .once(); EasyMock.expect(((UpdateRequest) mockRequest).getId()).andReturn(null); EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else if (method == ResourceMethod.PARTIAL_UPDATE) { EasyMock.expect(mockRequest.getResourceSpec()).andReturn(new ResourceSpecImpl()).times(2); EasyMock.expect(((PartialUpdateRequest) mockRequest).getId()).andReturn(null); EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else if (method == ResourceMethod.DELETE) { EasyMock.expect(((DeleteRequest) mockRequest).getResourceSpec()) .andReturn(new ResourceSpecImpl()) .once(); EasyMock.expect(((DeleteRequest) mockRequest).getId()).andReturn(null); EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } else { EasyMock.expect(mockRequest.getMethodName()).andReturn(null); } EasyMock.expect(mockRecordTemplate.data()).andReturn(entityBody).once(); Capture<RestRequest> restRequestCapture = new Capture<RestRequest>(); EasyMock.expect(mockClient.getMetadata(new URI(HOST + SERVICE_NAME))) .andReturn(Collections.<String, Object>emptyMap()) .once(); mockClient.restRequest( EasyMock.capture(restRequestCapture), (RequestContext) EasyMock.anyObject(), (Callback<RestResponse>) EasyMock.anyObject()); EasyMock.expectLastCall().once(); EasyMock.replay(mockClient, mockRequest, mockRecordTemplate); // do work! RestClient restClient; if (acceptTypes == null) { restClient = new RestClient(mockClient, HOST); } else if (contentType == null) { restClient = new RestClient(mockClient, HOST, acceptTypes); } else { restClient = new RestClient(mockClient, HOST, contentType, acceptTypes); } restClient.sendRequest(mockRequest); return restRequestCapture.getValue(); }