diff --git a/.azure-pipelines/generate-v1.0-models.yml b/.azure-pipelines/generate-v1.0-models.yml index 6df0e17299c..a2090430b4e 100644 --- a/.azure-pipelines/generate-v1.0-models.yml +++ b/.azure-pipelines/generate-v1.0-models.yml @@ -87,11 +87,9 @@ steps: $mainDir = Join-Path $env:repoDir "\src\main\" $extensionsAndGeneratedDirectories = Get-ChildItem $mainDir -Include extensions,generated -Recurse -Directory - # this list should be updated if a new hand-crafted extension is added to one of the extensions/ directories - $filesThatShouldNotBeDeleted = "UploadSession.java","DateOnly.java","TimeOfDay.java","Multipart.java","ChunkedUploadRequest.java","ChunkedUploadResult.java","CustomRequestBuilder.java" foreach ($directory in $extensionsAndGeneratedDirectories) { - Remove-Item $directory.FullName -Recurse -Force -Exclude $filesThatShouldNotBeDeleted + Remove-Item $directory.FullName -Recurse -Force } Write-Host "Removed the existing generated files in the repo's main directory: $mainDir" -ForegroundColor Green enabled: true # The old GUI pipeline wasn't doing this. I recall that there was a reason diff --git a/build.gradle b/build.gradle index c41fb307f08..5544724fa6a 100644 --- a/build.gradle +++ b/build.gradle @@ -42,6 +42,7 @@ dependencies { // Use JUnit test framework testImplementation 'junit:junit:4.13' + testImplementation 'org.mockito:mockito-inline:+' api 'com.google.code.gson:gson:2.8.6' diff --git a/src/main/java/com/microsoft/graph/authentication/IAuthenticationProvider.java b/src/main/java/com/microsoft/graph/authentication/IAuthenticationProvider.java deleted file mode 100644 index 91255c63351..00000000000 --- a/src/main/java/com/microsoft/graph/authentication/IAuthenticationProvider.java +++ /dev/null @@ -1,40 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.authentication; - -import com.microsoft.graph.http.IHttpRequest; - -/** - * Provides authentication for a requests before it is sent by an HTTP provider - * @deprecated use ICoreAuthenticationProvider instead - */ -@Deprecated -public interface IAuthenticationProvider { - - /** - * Authenticates the request - * - * @param request the request to authenticate - */ - void authenticateRequest(final IHttpRequest request); -} diff --git a/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadProvider.java b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadProvider.java index c75f494aee6..1c49cb681ff 100644 --- a/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadProvider.java +++ b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadProvider.java @@ -25,9 +25,9 @@ import com.microsoft.graph.concurrency.ChunkedUploadResponseHandler; import com.microsoft.graph.concurrency.IProgressCallback; -import com.microsoft.graph.requests.extensions.ChunkedUploadRequest; -import com.microsoft.graph.requests.extensions.ChunkedUploadResult; -import com.microsoft.graph.models.extensions.IGraphServiceClient; +import com.microsoft.graph.concurrency.ChunkedUploadRequest; +import com.microsoft.graph.concurrency.ChunkedUploadResult; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.models.extensions.UploadSession; import com.microsoft.graph.options.Option; diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadRequest.java b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadRequest.java similarity index 97% rename from src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadRequest.java rename to src/main/java/com/microsoft/graph/concurrency/ChunkedUploadRequest.java index 0cbd33e7fc0..95b1d61d138 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadRequest.java +++ b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadRequest.java @@ -2,7 +2,7 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. // ------------------------------------------------------------------------------ -package com.microsoft.graph.requests.extensions; +package com.microsoft.graph.concurrency; import java.util.List; @@ -10,7 +10,7 @@ import com.microsoft.graph.core.ClientException; import com.microsoft.graph.http.BaseRequest; import com.microsoft.graph.http.HttpMethod; -import com.microsoft.graph.models.extensions.IGraphServiceClient; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.options.Option; /** diff --git a/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResponseHandler.java b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResponseHandler.java index 3f4a210634b..fd46f04b2a7 100644 --- a/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResponseHandler.java +++ b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResponseHandler.java @@ -27,18 +27,17 @@ import java.io.InputStream; import java.util.Map; +import com.microsoft.graph.http.CoreHttpProvider; import com.microsoft.graph.core.Constants; -import com.microsoft.graph.http.DefaultHttpProvider; import com.microsoft.graph.http.GraphServiceException; import com.microsoft.graph.core.ClientException; import com.microsoft.graph.http.HttpResponseCode; import com.microsoft.graph.http.HttpResponseHeadersHelper; -import com.microsoft.graph.http.IConnection; import com.microsoft.graph.http.IHttpRequest; import com.microsoft.graph.http.IStatefulResponseHandler; import com.microsoft.graph.logger.ILogger; import com.microsoft.graph.models.extensions.UploadSession; -import com.microsoft.graph.requests.extensions.ChunkedUploadResult; +import com.microsoft.graph.concurrency.ChunkedUploadResult; import com.microsoft.graph.serializer.ISerializer; import okhttp3.Response; @@ -66,16 +65,6 @@ public ChunkedUploadResponseHandler(final Class uploadType) { this.deserializeTypeClass = uploadType; } - /** - * Do nothing before getting the response - * - * @param connection the connection - */ - @Override - public void configConnection(final IConnection connection) { - return; - } - /** * Do nothing before getting the response * @@ -85,62 +74,6 @@ public void configConnection(final IConnection connection) { public void configConnection(final Response response) { return; } - - /** - * Generate the chunked upload response result - * - * @param request the HTTP request - * @param connection the HTTP connection - * @param serializer the serializer - * @param logger the system logger - * @return the chunked upload result, which could be either an uploaded item or error - * @throws Exception an exception occurs if the request was unable to complete for any reason - */ - @Override - public ChunkedUploadResult generateResult( - final IHttpRequest request, - final IConnection connection, - final ISerializer serializer, - final ILogger logger) throws Exception { - InputStream in = null; - - try { - if (connection.getResponseCode() == HttpResponseCode.HTTP_ACCEPTED) { - logger.logDebug("Chunk bytes has been accepted by the server."); - in = new BufferedInputStream(connection.getInputStream()); - final UploadSession session = serializer.deserializeObject( - DefaultHttpProvider.streamToString(in), UploadSession.class); - - return new ChunkedUploadResult(session); - - } else if (connection.getResponseCode() == HttpResponseCode.HTTP_CREATED - || connection.getResponseCode() == HttpResponseCode.HTTP_OK) { - logger.logDebug("Upload session is completed, uploaded item returned."); - in = new BufferedInputStream(connection.getInputStream()); - String rawJson = DefaultHttpProvider.streamToString(in); - UploadType uploadedItem = serializer.deserializeObject(rawJson, - this.deserializeTypeClass); - - return new ChunkedUploadResult(uploadedItem); - } else if (connection.getResponseCode() >= HttpResponseCode.HTTP_CLIENT_ERROR) { - logger.logDebug("Receiving error during upload, see detail on result error"); - - return new ChunkedUploadResult( - GraphServiceException.createFromConnection(request, null, serializer, - connection, logger)); - } - } finally { - if (in != null) { - try{ - in.close(); - } catch(IOException e) { - logger.logError(e.getMessage(), e); - } - } - } - - return null; - } /** * Generate the chunked upload response result @@ -158,23 +91,21 @@ public ChunkedUploadResult generateResult( final Response response, final ISerializer serializer, final ILogger logger) throws Exception { - InputStream in = null; - try { - if (response.code() >= HttpResponseCode.HTTP_CLIENT_ERROR) { - logger.logDebug("Receiving error during upload, see detail on result error"); - - return new ChunkedUploadResult( - GraphServiceException.createFromConnection(request, null, serializer, - response, logger)); - } else if (response.code() >= HttpResponseCode.HTTP_OK - && response.code() < HttpResponseCode.HTTP_MULTIPLE_CHOICES) { - final Map headers = responseHeadersHelper.getResponseHeadersAsMapStringString(response); - final String contentType = headers.get(Constants.CONTENT_TYPE_HEADER_NAME); - final String location = headers.get("Location"); - if(contentType != null - && contentType.contains(Constants.JSON_CONTENT_TYPE)) { - in = new BufferedInputStream(response.body().byteStream()); - final String rawJson = DefaultHttpProvider.streamToString(in); + if (response.code() >= HttpResponseCode.HTTP_CLIENT_ERROR) { + logger.logDebug("Receiving error during upload, see detail on result error"); + + return new ChunkedUploadResult( + GraphServiceException.createFromResponse(request, null, serializer, + response, logger)); + } else if (response.code() >= HttpResponseCode.HTTP_OK + && response.code() < HttpResponseCode.HTTP_MULTIPLE_CHOICES) { + final Map headers = responseHeadersHelper.getResponseHeadersAsMapStringString(response); + final String contentType = headers.get(Constants.CONTENT_TYPE_HEADER_NAME); + final String location = headers.get("Location"); + if(contentType != null + && contentType.contains(Constants.JSON_CONTENT_TYPE)) { + try (final InputStream in = new BufferedInputStream(response.body().byteStream())) { + final String rawJson = CoreHttpProvider.streamToString(in); final UploadSession session = serializer.deserializeObject(rawJson, UploadSession.class); if(session == null || session.nextExpectedRanges == null) { logger.logDebug("Upload session is completed (ODSP), uploaded item returned."); @@ -184,20 +115,12 @@ public ChunkedUploadResult generateResult( logger.logDebug("Chunk bytes has been accepted by the server."); return new ChunkedUploadResult(session); } - } else if(location != null) { - logger.logDebug("Upload session is completed (Outlook), uploaded item returned."); - return new ChunkedUploadResult(this.deserializeTypeClass.getDeclaredConstructor().newInstance()); - } else { - logger.logDebug("Upload session returned an unexpected response"); - } - } - } finally { - if (in != null) { - try{ - in.close(); - } catch(IOException e) { - logger.logError(e.getMessage(), e); } + } else if(location != null) { + logger.logDebug("Upload session is completed (Outlook), uploaded item returned."); + return new ChunkedUploadResult(this.deserializeTypeClass.getDeclaredConstructor().newInstance()); + } else { + logger.logDebug("Upload session returned an unexpected response"); } } return new ChunkedUploadResult(new ClientException("Received an unexpected response from the service, response code: " + response.code(), null)); diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadResult.java b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResult.java similarity index 98% rename from src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadResult.java rename to src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResult.java index 9dc884e3d30..6c5a1d90d1c 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ChunkedUploadResult.java +++ b/src/main/java/com/microsoft/graph/concurrency/ChunkedUploadResult.java @@ -2,7 +2,7 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. // ------------------------------------------------------------------------------ -package com.microsoft.graph.requests.extensions; +package com.microsoft.graph.concurrency; import com.microsoft.graph.core.ClientException; import com.microsoft.graph.http.GraphServiceException; diff --git a/src/main/java/com/microsoft/graph/core/BaseClient.java b/src/main/java/com/microsoft/graph/core/BaseClient.java index 0f4e9224d80..c16677a4d7d 100644 --- a/src/main/java/com/microsoft/graph/core/BaseClient.java +++ b/src/main/java/com/microsoft/graph/core/BaseClient.java @@ -22,7 +22,6 @@ package com.microsoft.graph.core; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.http.IHttpProvider; import com.microsoft.graph.logger.ILogger; @@ -32,12 +31,6 @@ * A client that communications with an OData service */ public abstract class BaseClient implements IBaseClient { - - /** - * The authentication provider instance - */ - private IAuthenticationProvider authenticationProvider; - /** * The executors instance */ @@ -58,16 +51,6 @@ public abstract class BaseClient implements IBaseClient { */ private ISerializer serializer; - /** - * Gets the authentication provider - * - * @return The authentication provider - */ - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return authenticationProvider; - } - /** * Gets the executors * @@ -112,10 +95,6 @@ public ISerializer getSerializer() { */ @Override public void validate() { - if (authenticationProvider == null) { - throw new NullPointerException("AuthenticationProvider"); - } - if (executors == null) { throw new NullPointerException("Executors"); } @@ -147,15 +126,6 @@ protected void setExecutors(final IExecutors executors) { this.executors = executors; } - /** - * Sets the authentication provider - * - * @param authenticationProvider The authentication provider - */ - protected void setAuthenticationProvider(final IAuthenticationProvider authenticationProvider) { - this.authenticationProvider = authenticationProvider; - } - /** * Sets the HTTP provider * diff --git a/src/main/java/com/microsoft/graph/requests/extensions/CustomRequestBuilder.java b/src/main/java/com/microsoft/graph/core/CustomRequestBuilder.java similarity index 95% rename from src/main/java/com/microsoft/graph/requests/extensions/CustomRequestBuilder.java rename to src/main/java/com/microsoft/graph/core/CustomRequestBuilder.java index 2f9438e1d77..f4935c639b0 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/CustomRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/core/CustomRequestBuilder.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.requests.extensions; +package com.microsoft.graph.core; import java.util.List; diff --git a/src/main/java/com/microsoft/graph/models/extensions/DateOnly.java b/src/main/java/com/microsoft/graph/core/DateOnly.java similarity index 98% rename from src/main/java/com/microsoft/graph/models/extensions/DateOnly.java rename to src/main/java/com/microsoft/graph/core/DateOnly.java index 33b2be5a7e6..6d18f5911f8 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/DateOnly.java +++ b/src/main/java/com/microsoft/graph/core/DateOnly.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.models.extensions; +package com.microsoft.graph.core; import java.text.ParseException; diff --git a/src/main/java/com/microsoft/graph/core/DefaultClientConfig.java b/src/main/java/com/microsoft/graph/core/DefaultClientConfig.java deleted file mode 100644 index c469fcb16ed..00000000000 --- a/src/main/java/com/microsoft/graph/core/DefaultClientConfig.java +++ /dev/null @@ -1,163 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.core; - -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.concurrency.DefaultExecutors; -import com.microsoft.graph.concurrency.IExecutors; -import com.microsoft.graph.http.CoreHttpProvider; -import com.microsoft.graph.http.IHttpProvider; -import com.microsoft.graph.logger.DefaultLogger; -import com.microsoft.graph.logger.ILogger; -import com.microsoft.graph.serializer.DefaultSerializer; -import com.microsoft.graph.serializer.ISerializer; - -import okhttp3.OkHttpClient; - -/** - * The default configuration for a service client - */ -public abstract class DefaultClientConfig implements IClientConfig { - - /** - * The executors instance - */ - private IExecutors executors; - - /** - * The HTTP provider instance - */ - private IHttpProvider httpProvider; - - /** - * The logger - */ - private ILogger logger; - - /** - * The serializer instance - */ - private ISerializer serializer; - - /** - * Creates an instance of this configuration with an authentication provider - * - * @param authenticationProvider the authentication provider - * @return the IClientConfig - */ - public static IClientConfig createWithAuthenticationProvider( - final IAuthenticationProvider authenticationProvider - ) { - DefaultClientConfig config = new DefaultClientConfig() { - - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return authenticationProvider; - } - }; - config.getLogger() - .logDebug( - "Using provided auth provider " - + authenticationProvider - .getClass() - .getSimpleName() - ); - return config; - } - - /** - * Gets the authentication provider - * - * @return the authentication provider - */ - @Override - public abstract IAuthenticationProvider getAuthenticationProvider(); - /** - * Gets the HTTP provider - * - * @return the HTTP provider - */ - @Override - public IHttpProvider getHttpProvider() { - return this.getHttpProvider(null); - } - - /** - * Gets the HTTP provider - * - * @param httpClient the http client to pass to the http provider when building it - * @param the http client type - * @return the HTTP provider - */ - @Override - public IHttpProvider getHttpProvider(final T1 httpClient) { - if (httpProvider == null) { - httpProvider = (httpClient instanceof OkHttpClient) ? - new CoreHttpProvider(this, (OkHttpClient) httpClient) : - new CoreHttpProvider(this, null); - getLogger().logDebug("Created CoreHttpProvider"); - } - return httpProvider; - } - - /** - * Gets the serializer - * - * @return the serializer - */ - @Override - public ISerializer getSerializer() { - if (serializer == null) { - serializer = new DefaultSerializer(getLogger()); - getLogger().logDebug("Created DefaultSerializer"); - } - return serializer; - } - - /** - * Gets the executors - * - * @return the executors - */ - @Override - public IExecutors getExecutors() { - if (executors == null) { - executors = new DefaultExecutors(getLogger()); - getLogger().logDebug("Created DefaultExecutors"); - } - return executors; - } - - /** - * Gets the logger - * - * @return the logger - */ - public ILogger getLogger() { - if (logger == null) { - logger = new DefaultLogger(); - logger.logDebug("Created DefaultLogger"); - } - return logger; - } -} diff --git a/src/main/java/com/microsoft/graph/core/GraphServiceClient.java b/src/main/java/com/microsoft/graph/core/GraphServiceClient.java new file mode 100644 index 00000000000..ff9d24cc734 --- /dev/null +++ b/src/main/java/com/microsoft/graph/core/GraphServiceClient.java @@ -0,0 +1,239 @@ +// ------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. +// ------------------------------------------------------------------------------ + +package com.microsoft.graph.core; + +import com.microsoft.graph.core.ClientException; + +import com.microsoft.graph.httpcore.HttpClients; +import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; +import com.microsoft.graph.core.DefaultConnectionConfig; +import com.microsoft.graph.core.IConnectionConfig; +import com.microsoft.graph.concurrency.DefaultExecutors; +import com.microsoft.graph.logger.*; +import com.google.gson.JsonObject; +import com.microsoft.graph.concurrency.IExecutors; +import com.microsoft.graph.core.IGraphServiceClient; +import com.microsoft.graph.http.CoreHttpProvider; +import com.microsoft.graph.http.IHttpProvider; +import com.microsoft.graph.serializer.DefaultSerializer; +import com.microsoft.graph.serializer.ISerializer; +import com.microsoft.graph.core.CustomRequestBuilder; +import com.microsoft.graph.requests.extensions.BaseGraphServiceClient; + +import okhttp3.OkHttpClient; + +/** + * The class for the Graph Service Client. + */ +public class GraphServiceClient extends BaseGraphServiceClient implements IGraphServiceClient { + + /** + * Restricted constructor + */ + protected GraphServiceClient() { + } + + /** + * Send a custom request to Graph + * + * @param url + * the full URL to make a request with + * @param responseType + * the response class to deserialize the response into + * @return the instance of this builder + */ + public CustomRequestBuilder customRequest(final String url, final Class responseType) { + return new CustomRequestBuilder(getServiceRoot() + url, this, null, responseType); + } + + /** + * Send a custom request to Graph + * + * @param url + * the full URL to make a request with + * @return the instance of this builder + */ + public CustomRequestBuilder customRequest(final String url) { + return new CustomRequestBuilder(getServiceRoot() + url, this, null, + JsonObject.class); + } + + public static Builder builder() { + return new Builder(); + } + + public static final class Builder { + private ISerializer serializer; + private IHttpProvider httpProvider; + private IExecutors executors; + private ILogger logger; + private httpClientType httpClient; + private IConnectionConfig connConfig; + private ICoreAuthenticationProvider auth; + + private ICoreAuthenticationProvider getAuth() { + if(auth == null) { + throw new NullPointerException("auth"); // TODO initialize to default once moved to core + } else { + return auth; + } + } + private IConnectionConfig getConnectionConfig() { + if(connConfig == null) { + return new DefaultConnectionConfig() {}; + } else { + return connConfig; + } + } + private ILogger getLogger() { + if(logger == null) { + return new DefaultLogger(); + } else { + return logger; + } + } + private IExecutors getExecutors() { + if(executors == null) { + return new DefaultExecutors(getLogger()); + } else { + return executors; + } + } + private ISerializer getSerializer() { + if(serializer == null) { + return new DefaultSerializer(getLogger()); + } else { + return serializer; + } + } + @SuppressWarnings("unchecked") + private httpClientType getHttpClient() { + if(httpClient == null) { + return (httpClientType)HttpClients.createDefault(getAuth()); + } else { + return httpClient; + } + } + private IHttpProvider getHttpProvider() { + if(httpProvider == null) { + return new CoreHttpProvider(getSerializer(), getExecutors(), getLogger(), (OkHttpClient)getHttpClient(), getConnectionConfig()); + } else { + return httpProvider; + } + } + + /** + * Sets the serializer. + * + * @param serializer + * the serializer + * @return the instance of this builder + */ + public Builder serializer(final ISerializer serializer) { + checkNotNull(serializer, "serializer"); + this.serializer = serializer; + return this; + } + + /** + * Sets the httpProvider + * + * @param httpProvider + * the httpProvider + * @return the instance of this builder + */ + public Builder httpProvider(final IHttpProvider httpProvider) { + checkNotNull(httpProvider, "httpProvider"); + this.httpProvider = httpProvider; + return this; + } + + /** + * Sets the executors + * + * @param executors + * the executors + * @return the instance of this builder + */ + public Builder executors(final IExecutors executors) { + checkNotNull(executors, "executors"); + this.executors = executors; + return this; + } + + /** + * Sets the logger + * + * @param logger + * the logger + * @return the instance of this builder + */ + public Builder logger(final ILogger logger) { + checkNotNull(logger, "logger"); + this.logger = logger; + return this; + } + + /** + * Sets the http client + * + * @param client the http client + * + * @return the instance of this builder + */ + public Builder httpClient(final httpClientType client) { + checkNotNull(client, "client"); + this.httpClient = client; + return this; + } + + /** + * Sets the connection configuration + * + * @param config connection configuration + * + * @return the instance of this builder + */ + public Builder connectionConfig(final IConnectionConfig config) { + checkNotNull(config, "config"); + this.connConfig = config; + return this; + } + /** + * Sets the authentication provider + * + * @param auth the authentication provider + * @return the instance of this builder + */ + public Builder authenticationProvider(final ICoreAuthenticationProvider auth) { + checkNotNull(auth, "auth"); + this.auth = auth; + return this; + } + + /** + * Builds and returns the Graph service client. + * + * @return the Graph service client object + * @throws ClientException + * if there was an exception creating the client + */ + public IGraphServiceClient buildClient() throws ClientException { + GraphServiceClient client = new GraphServiceClient(); + client.setExecutors(this.getExecutors()); + client.setHttpProvider(this.getHttpProvider()); + client.setLogger(this.getLogger()); + client.setSerializer(this.getSerializer()); + client.validate(); + return client; + } + } + + private static void checkNotNull(Object o, String name) { + if (o==null) { + throw new NullPointerException(name + " cannot be null"); + } + } +} diff --git a/src/main/java/com/microsoft/graph/core/IBaseClient.java b/src/main/java/com/microsoft/graph/core/IBaseClient.java index 36bcf832d06..f36e5ab4f6d 100644 --- a/src/main/java/com/microsoft/graph/core/IBaseClient.java +++ b/src/main/java/com/microsoft/graph/core/IBaseClient.java @@ -22,7 +22,6 @@ package com.microsoft.graph.core; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.http.IHttpProvider; import com.microsoft.graph.logger.ILogger; @@ -32,14 +31,6 @@ * A client that communications with an OData service */ public interface IBaseClient { - - /** - * Gets the authentication provider - * - * @return the authentication provider - */ - IAuthenticationProvider getAuthenticationProvider(); - /** * Gets the service root * diff --git a/src/main/java/com/microsoft/graph/core/IClientConfig.java b/src/main/java/com/microsoft/graph/core/IClientConfig.java deleted file mode 100644 index d4c6450597a..00000000000 --- a/src/main/java/com/microsoft/graph/core/IClientConfig.java +++ /dev/null @@ -1,78 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.core; - -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.concurrency.IExecutors; -import com.microsoft.graph.http.IHttpProvider; -import com.microsoft.graph.logger.ILogger; -import com.microsoft.graph.serializer.ISerializer; - -/** - * The default configuration for a service client - */ -public interface IClientConfig { - /** - * Gets the authentication provider - * - * @return the authentication provider - */ - IAuthenticationProvider getAuthenticationProvider(); - - /** - * Gets the executors - * - * @return the executors - */ - IExecutors getExecutors(); - - /** - * Gets the HTTP provider - * - * @return the HTTP provider - */ - IHttpProvider getHttpProvider(); - - /** - * Gets the HTTP provider - * - * @param httpClient the http client to pass to the http provider when building it - * @param the http client type - * @return the HTTP provider - */ - IHttpProvider getHttpProvider(final T1 httpClient); - - /** - * Gets the logger - * - * @return the logger - */ - ILogger getLogger(); - - /** - * Gets the serializer - * - * @return the serializer - */ - ISerializer getSerializer(); -} diff --git a/src/main/java/com/microsoft/graph/core/IGraphServiceClient.java b/src/main/java/com/microsoft/graph/core/IGraphServiceClient.java new file mode 100644 index 00000000000..2f7c04c8b46 --- /dev/null +++ b/src/main/java/com/microsoft/graph/core/IGraphServiceClient.java @@ -0,0 +1,19 @@ +// ------------------------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. +// ------------------------------------------------------------------------------ + +package com.microsoft.graph.core; + +import com.google.gson.JsonObject; +import com.microsoft.graph.models.extensions.IBaseGraphServiceClient; +import com.microsoft.graph.core.CustomRequestBuilder; + +/** + * The interface for the Graph Service Client. + */ +public interface IGraphServiceClient extends IBaseGraphServiceClient { + + CustomRequestBuilder customRequest(final String url, final Class responseType); + + CustomRequestBuilder customRequest(final String url); +} diff --git a/src/main/java/com/microsoft/graph/models/extensions/Multipart.java b/src/main/java/com/microsoft/graph/core/Multipart.java similarity index 93% rename from src/main/java/com/microsoft/graph/models/extensions/Multipart.java rename to src/main/java/com/microsoft/graph/core/Multipart.java index ef2252dc3da..1b352e68174 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/Multipart.java +++ b/src/main/java/com/microsoft/graph/core/Multipart.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.models.extensions; +package com.microsoft.graph.core; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; @@ -239,18 +239,19 @@ public byte[] content() throws IOException { * @return The byte[] * @throws IOException Throws an exception if the output stream cannot be written to */ - private byte[] getByteArray(InputStream in) throws IOException { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - int nRead; - byte[] data = new byte[16384]; - try { - while ((nRead = in.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, nRead); - } - } finally { - in.close(); - } - buffer.flush(); - return buffer.toByteArray(); + private byte[] getByteArray(final InputStream in) throws IOException { + try (final ByteArrayOutputStream buffer = new ByteArrayOutputStream()){ + int nRead; + byte[] data = new byte[16384]; + try { + while ((nRead = in.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + } finally { + in.close(); + } + buffer.flush(); + return buffer.toByteArray(); + } } } diff --git a/src/main/java/com/microsoft/graph/models/extensions/TimeOfDay.java b/src/main/java/com/microsoft/graph/core/TimeOfDay.java similarity index 87% rename from src/main/java/com/microsoft/graph/models/extensions/TimeOfDay.java rename to src/main/java/com/microsoft/graph/core/TimeOfDay.java index 5248fc67b60..4f36f763507 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/TimeOfDay.java +++ b/src/main/java/com/microsoft/graph/core/TimeOfDay.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.models.extensions; +package com.microsoft.graph.core; import java.math.BigDecimal; @@ -34,7 +34,7 @@ public class TimeOfDay { */ public static TimeOfDay parse(final String timeStr) throws ParseException { // break the date up into its constituent parts - String[] timeInfo = timeStr.split(":"); + final String[] timeInfo = timeStr.split(":"); // validate the split date string final int expectedLength = 3; @@ -50,9 +50,9 @@ public static TimeOfDay parse(final String timeStr) throws ParseException { final int indSecond = 2; // unpack this array - int hour = Integer.parseInt(timeInfo[indHour]); - int minute = Integer.parseInt(timeInfo[indMinute]); - int second = new BigDecimal(timeInfo[indSecond]).intValue(); + final int hour = Integer.parseInt(timeInfo[indHour]); + final int minute = Integer.parseInt(timeInfo[indMinute]); + final int second = new BigDecimal(timeInfo[indSecond]).intValue(); return new TimeOfDay(hour, minute, second); } diff --git a/src/main/java/com/microsoft/graph/http/CoreHttpProvider.java b/src/main/java/com/microsoft/graph/http/CoreHttpProvider.java index 4489b814107..19f918148ed 100644 --- a/src/main/java/com/microsoft/graph/http/CoreHttpProvider.java +++ b/src/main/java/com/microsoft/graph/http/CoreHttpProvider.java @@ -39,14 +39,12 @@ import java.util.concurrent.TimeUnit; import com.google.common.annotations.VisibleForTesting; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.concurrency.ICallback; import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.concurrency.IProgressCallback; import com.microsoft.graph.core.ClientException; import com.microsoft.graph.core.Constants; import com.microsoft.graph.core.DefaultConnectionConfig; -import com.microsoft.graph.core.IClientConfig; import com.microsoft.graph.core.IConnectionConfig; import com.microsoft.graph.httpcore.HttpClients; import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; @@ -77,11 +75,6 @@ public class CoreHttpProvider implements IHttpProvider { */ private final ISerializer serializer; - /** - * The authentication provider - */ - private final IAuthenticationProvider authenticationProvider; - /** * The executors */ @@ -95,7 +88,7 @@ public class CoreHttpProvider implements IHttpProvider { /** * The connection config */ - private IConnectionConfig connectionConfig; + private IConnectionConfig connectionConfig = new DefaultConnectionConfig(); /** * The OkHttpClient that handles all requests @@ -103,33 +96,52 @@ public class CoreHttpProvider implements IHttpProvider { private OkHttpClient corehttpClient; /** - * Creates the DefaultHttpProvider + * Creates the CoreHttpProvider * * @param serializer the serializer - * @param authenticationProvider the authentication provider * @param executors the executors * @param logger the logger for diagnostic information + * @param httpClient the client to send http requests with */ public CoreHttpProvider(final ISerializer serializer, - final IAuthenticationProvider authenticationProvider, final IExecutors executors, - final ILogger logger) { - this.serializer = serializer; - this.authenticationProvider = authenticationProvider; - this.executors = executors; - this.logger = logger; + final ILogger logger, + final OkHttpClient httpClient) { + if (httpClient == null) { + throw new NullPointerException("httpClient"); + } else if(serializer == null) { + throw new NullPointerException("serializer"); + } else if(executors == null) { + throw new NullPointerException("executors"); + } else if(logger == null) { + throw new NullPointerException("logger"); + } else { + this.serializer = serializer; + this.executors = executors; + this.logger = logger; + this.corehttpClient = httpClient; + } } /** - * Creates the DefaultHttpProvider + * Creates the CoreHttpProvider * - * @param clientConfig the client configuration to use for the provider + * @param serializer the serializer + * @param executors the executors + * @param logger the logger for diagnostic information * @param httpClient the http client to execute the requests with + * @param connectionConfig the connection configuration */ - public CoreHttpProvider(final IClientConfig clientConfig, - final OkHttpClient httpClient) { - this(clientConfig.getSerializer(), clientConfig.getAuthenticationProvider(), clientConfig.getExecutors(), clientConfig.getLogger()); - this.corehttpClient = httpClient; + public CoreHttpProvider(final ISerializer serializer, + final IExecutors executors, + final ILogger logger, + final OkHttpClient httpClient, + final IConnectionConfig connectionConfig) { + this(serializer, executors, logger, httpClient); + if(connectionConfig == null) { + throw new NullPointerException("connectionConfig"); + } + this.connectionConfig = connectionConfig; } /** @@ -240,19 +252,15 @@ public Request getHttpRequest(final IHttpRequest request, final URL requestUrl = request.getRequestUrl(); logger.logDebug("Starting to send request, URL " + requestUrl.toString()); - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } - // Request level middleware options - RedirectOptions redirectOptions = new RedirectOptions(request.getMaxRedirects() > 0? request.getMaxRedirects() : this.connectionConfig.getMaxRedirects(), + final RedirectOptions redirectOptions = new RedirectOptions(request.getMaxRedirects() > 0? request.getMaxRedirects() : this.connectionConfig.getMaxRedirects(), request.getShouldRedirect() != null? request.getShouldRedirect() : this.connectionConfig.getShouldRedirect()); - RetryOptions retryOptions = new RetryOptions(request.getShouldRetry() != null? request.getShouldRetry() : this.connectionConfig.getShouldRetry(), + final RetryOptions retryOptions = new RetryOptions(request.getShouldRetry() != null? request.getShouldRetry() : this.connectionConfig.getShouldRetry(), request.getMaxRetries() > 0? request.getMaxRetries() : this.connectionConfig.getMaxRetries(), request.getDelay() > 0? request.getDelay() : this.connectionConfig.getDelay()); - Request coreHttpRequest = convertIHttpRequestToOkHttpRequest(request); - Request.Builder corehttpRequestBuilder = coreHttpRequest + final Request coreHttpRequest = convertIHttpRequestToOkHttpRequest(request); + final Request.Builder corehttpRequestBuilder = coreHttpRequest .newBuilder() .tag(RedirectOptions.class, redirectOptions) .tag(RetryOptions.class, retryOptions); @@ -260,7 +268,7 @@ public Request getHttpRequest(final IHttpRequest request, String contenttype = null; logger.logDebug("Request Method " + request.getHttpMethod().toString()); - List requestHeaders = request.getHeaders(); + final List requestHeaders = request.getHeaders(); for(HeaderOption headerOption : requestHeaders) { if(headerOption.getName().equalsIgnoreCase(Constants.CONTENT_TYPE_HEADER_NAME)) { @@ -322,21 +330,21 @@ public long contentLength() throws IOException { } @Override public void writeTo(BufferedSink sink) throws IOException { - OutputStream out = sink.outputStream(); int writtenSoFar = 0; - BufferedOutputStream bos = new BufferedOutputStream(out); - int toWrite; - do { - toWrite = Math.min(defaultBufferSize, bytesToWrite.length - writtenSoFar); - bos.write(bytesToWrite, writtenSoFar, toWrite); - writtenSoFar = writtenSoFar + toWrite; - if (progress != null) { - executors.performOnForeground(writtenSoFar, bytesToWrite.length, - progress); + try (final OutputStream out = sink.outputStream()) { + try (final BufferedOutputStream bos = new BufferedOutputStream(out)){ + int toWrite; + do { + toWrite = Math.min(defaultBufferSize, bytesToWrite.length - writtenSoFar); + bos.write(bytesToWrite, writtenSoFar, toWrite); + writtenSoFar = writtenSoFar + toWrite; + if (progress != null) { + executors.performOnForeground(writtenSoFar, bytesToWrite.length, + progress); + } + } while (toWrite > 0); } - } while (toWrite > 0); - bos.close(); - out.close(); + } } @Override @@ -372,28 +380,6 @@ private Result sendRequestInternal(final IHttpRe throws ClientException { try { - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } - if(this.corehttpClient == null) { - final ICoreAuthenticationProvider authProvider = new ICoreAuthenticationProvider() { - @Override - public Request authenticateRequest(Request request) { - return request; - } - }; - this.corehttpClient = HttpClients - .createDefault(authProvider) - .newBuilder() - .connectTimeout(connectionConfig.getConnectTimeout(), TimeUnit.MILLISECONDS) - .readTimeout(connectionConfig.getReadTimeout(), TimeUnit.MILLISECONDS) - .followRedirects(false) //TODO https://github.com/microsoftgraph/msgraph-sdk-java/issues/516 - .protocols(Arrays.asList(Protocol.HTTP_1_1)) //https://stackoverflow.com/questions/62031298/sockettimeout-on-java-11-but-not-on-java-8 - .build(); - } - if (authenticationProvider != null) { //TODO https://github.com/microsoftgraph/msgraph-sdk-java/issues/517 - authenticationProvider.authenticateRequest(request); - } Request coreHttpRequest = getHttpRequest(request, resultClass, serializable, progress); Response response = corehttpClient.newCall(coreHttpRequest).execute(); InputStream in = null; @@ -500,7 +486,7 @@ private void handleErrorResponse(final IHttpRequest request, final Body serializable, final Response response) throws IOException { - throw GraphServiceException.createFromConnection(request, serializable, serializer, + throw GraphServiceException.createFromResponse(request, serializable, serializer, response, logger); } @@ -555,15 +541,10 @@ private Result handleEmptyResponse(Map> responseHe public static String streamToString(final InputStream input) { final String httpStreamEncoding = "UTF-8"; final String endOfFile = "\\A"; - final Scanner scanner = new Scanner(input, httpStreamEncoding); - String scannerString = ""; - try { + try (final Scanner scanner = new Scanner(input, httpStreamEncoding)) { scanner.useDelimiter(endOfFile); - scannerString = scanner.next(); - } finally { - scanner.close(); + return scanner.next(); } - return scannerString; } /** @@ -592,31 +573,14 @@ public ILogger getLogger() { public IExecutors getExecutors() { return executors; } - - @VisibleForTesting - public IAuthenticationProvider getAuthenticationProvider() { - return authenticationProvider; - } - - + /** + * INTERNAL METHOD, DO NOT USE * Get connection config for read and connect timeout in requests * * @return Connection configuration to be used for timeout values */ - public IConnectionConfig getConnectionConfig() { - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } + public IConnectionConfig getConnectionConfigInternal() { return connectionConfig; } - - /** - * Set connection config for read and connect timeout in requests - * - * @param connectionConfig Connection configuration to be used for timeout values - */ - public void setConnectionConfig(IConnectionConfig connectionConfig) { - this.connectionConfig = connectionConfig; - } } diff --git a/src/main/java/com/microsoft/graph/http/DefaultConnectionFactory.java b/src/main/java/com/microsoft/graph/http/DefaultConnectionFactory.java deleted file mode 100644 index 6bf32523db5..00000000000 --- a/src/main/java/com/microsoft/graph/http/DefaultConnectionFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import java.io.IOException; - -/** - * Creates connections to remove servers - */ -public class DefaultConnectionFactory implements IConnectionFactory { - - /** - * Creates a connection from an IHttpRequest - * - * @param request the request to make the connection from - * @return the connection object - * @throws IOException an exception occurs if there was a network issue creating the connection - */ - @Override - public IConnection createFromRequest(final IHttpRequest request) throws IOException { - return new UrlConnection(request); - } -} diff --git a/src/main/java/com/microsoft/graph/http/DefaultHttpProvider.java b/src/main/java/com/microsoft/graph/http/DefaultHttpProvider.java deleted file mode 100644 index 093b64771b0..00000000000 --- a/src/main/java/com/microsoft/graph/http/DefaultHttpProvider.java +++ /dev/null @@ -1,543 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import com.google.common.annotations.VisibleForTesting; -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.concurrency.ICallback; -import com.microsoft.graph.concurrency.IExecutors; -import com.microsoft.graph.concurrency.IProgressCallback; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.core.DefaultConnectionConfig; -import com.microsoft.graph.core.IConnectionConfig; -import com.microsoft.graph.logger.ILogger; -import com.microsoft.graph.logger.LoggerLevel; -import com.microsoft.graph.options.HeaderOption; -import com.microsoft.graph.serializer.ISerializer; - -import okhttp3.Request; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.util.List; -import java.util.Map; -import java.util.Scanner; - -/** - * HTTP provider based off of URLConnection - * @deprecated user CoreHttpProvider instead - */ -@Deprecated -public class DefaultHttpProvider implements IHttpProvider { - - /** - * The content type header - */ - static final String CONTENT_TYPE_HEADER_NAME = "Content-Type"; - - /** - * The content type for JSON responses - */ - static final String JSON_CONTENT_TYPE = "application/json"; - - /** - * The encoding type for getBytes - */ - static final String JSON_ENCODING = "UTF-8"; - - /** - * The serializer - */ - private final ISerializer serializer; - - /** - * The authentication provider - */ - private final IAuthenticationProvider authenticationProvider; - - /** - * The executors - */ - private final IExecutors executors; - - /** - * The logger - */ - private final ILogger logger; - - /** - * The connection factory - */ - private IConnectionFactory connectionFactory; - - /** - * The connection config - */ - private IConnectionConfig connectionConfig; - - /** - * Creates the DefaultHttpProvider using a DefaultConnectionFactory. - * - * @param serializer the serializer - * @param authenticationProvider the authentication provider - * @param executors the executors - * @param logger the logger for diagnostic information - */ - public DefaultHttpProvider(final ISerializer serializer, - final IAuthenticationProvider authenticationProvider, - final IExecutors executors, - final ILogger logger) { - this(serializer, authenticationProvider, executors, logger, new DefaultConnectionFactory()); - } - - /** - * Creates the DefaultHttpProvider - * - * @param serializer the serializer - * @param authenticationProvider the authentication provider - * @param executors the executors - * @param logger the logger for diagnostic information - * @param connectionFactory an IConnectionFactory to create outgoing connections - */ - public DefaultHttpProvider(final ISerializer serializer, - final IAuthenticationProvider authenticationProvider, - final IExecutors executors, - final ILogger logger, - final IConnectionFactory connectionFactory) { - this.serializer = serializer; - this.authenticationProvider = authenticationProvider; - this.executors = executors; - this.logger = logger; - this.connectionFactory = connectionFactory; - } - - /** - * Gets the serializer for this HTTP provider - * - * @return the serializer for this provider - */ - @Override - public ISerializer getSerializer() { - return serializer; - } - - /** - * Sends the HTTP request asynchronously - * - * @param request the request description - * @param callback the callback to be called after success or failure - * @param resultClass the class of the response from the service - * @param serializable the object to send to the service in the body of the request - * @param the type of the response object - * @param the type of the object to send to the service in the body of the request - */ - @Override - public void send(final IHttpRequest request, - final ICallback callback, - final Class resultClass, - final Body serializable) { - final IProgressCallback progressCallback; - if (callback instanceof IProgressCallback) { - progressCallback = (IProgressCallback) callback; - } else { - progressCallback = null; - } - - executors.performOnBackground(new Runnable() { - @Override - public void run() { - try { - executors.performOnForeground(sendRequestInternal(request, - resultClass, - serializable, - progressCallback, - null), - callback); - } catch (final ClientException e) { - executors.performOnForeground(e, callback); - } - } - }); - } - - /** - * Sends the HTTP request - * - * @param request the request description - * @param resultClass the class of the response from the service - * @param serializable the object to send to the service in the body of the request - * @param the type of the response object - * @param the type of the object to send to the service in the body of the request - * @return the result from the request - * @throws ClientException an exception occurs if the request was unable to complete for any reason - */ - @Override - public Result send(final IHttpRequest request, - final Class resultClass, - final Body serializable) - throws ClientException { - return send(request, resultClass, serializable, null); - } - - /** - * Sends the HTTP request - * - * @param request the request description - * @param resultClass the class of the response from the service - * @param serializable the object to send to the service in the body of the request - * @param handler the handler for stateful response - * @param the type of the response object - * @param the type of the object to send to the service in the body of the request - * @param the response handler for stateful response - * @return the result from the request - * @throws ClientException this exception occurs if the request was unable to complete for any reason - */ - public Result send(final IHttpRequest request, - final Class resultClass, - final Body serializable, - final IStatefulResponseHandler handler) throws ClientException { - return sendRequestInternal(request, resultClass, serializable, null, handler); - } - - /** - * Sends the HTTP request - * - * @param request the request description - * @param resultClass the class of the response from the service - * @param serializable the object to send to the service in the body of the request - * @param progress the progress callback for the request - * @param handler the handler for stateful response - * @param the type of the response object - * @param the type of the object to send to the service in the body of the request - * @param the response handler for stateful response - * @return the result from the request - * @throws ClientException an exception occurs if the request was unable to complete for any reason - */ - @SuppressWarnings("unchecked") - private Result sendRequestInternal(final IHttpRequest request, - final Class resultClass, - final Body serializable, - final IProgressCallback progress, - final IStatefulResponseHandler handler) - throws ClientException { - final int defaultBufferSize = 4096; - final String binaryContentType = "application/octet-stream"; - - try { - if (authenticationProvider != null) { - authenticationProvider.authenticateRequest(request); - } - - OutputStream out = null; - InputStream in = null; - boolean isBinaryStreamInput = false; - final URL requestUrl = request.getRequestUrl(); - logger.logDebug("Starting to send request, URL " + requestUrl.toString()); - final IConnection connection = connectionFactory.createFromRequest(request); - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } - connection.setConnectTimeout(connectionConfig.getConnectTimeout()); - connection.setReadTimeout(connectionConfig.getReadTimeout()); - - try { - logger.logDebug("Request Method " + request.getHttpMethod().toString()); - List requestHeaders = request.getHeaders(); - - final byte[] bytesToWrite; - connection.addRequestHeader("Accept", "*/*"); - if (serializable == null) { - // Send an empty body through with a POST request - // This ensures that the Content-Length header is properly set - if (request.getHttpMethod() == HttpMethod.POST) { - bytesToWrite = new byte[0]; - } - else { - bytesToWrite = null; - } - } else if (serializable instanceof byte[]) { - logger.logDebug("Sending byte[] as request body"); - bytesToWrite = (byte[]) serializable; - - // If the user hasn't specified a Content-Type for the request - if (!hasHeader(requestHeaders, CONTENT_TYPE_HEADER_NAME)) { - connection.addRequestHeader(CONTENT_TYPE_HEADER_NAME, binaryContentType); - } - connection.setContentLength(bytesToWrite.length); - } else { - logger.logDebug("Sending " + serializable.getClass().getName() + " as request body"); - final String serializeObject = serializer.serializeObject(serializable); - bytesToWrite = serializeObject.getBytes(JSON_ENCODING); - - // If the user hasn't specified a Content-Type for the request - if (!hasHeader(requestHeaders, CONTENT_TYPE_HEADER_NAME)) { - connection.addRequestHeader(CONTENT_TYPE_HEADER_NAME, JSON_CONTENT_TYPE); - } - connection.setContentLength(bytesToWrite.length); - } - - // Handle cases where we've got a body to process. - if (bytesToWrite != null) { - out = connection.getOutputStream(); - - int writtenSoFar = 0; - BufferedOutputStream bos = new BufferedOutputStream(out); - - int toWrite; - do { - toWrite = Math.min(defaultBufferSize, bytesToWrite.length - writtenSoFar); - bos.write(bytesToWrite, writtenSoFar, toWrite); - writtenSoFar = writtenSoFar + toWrite; - if (progress != null) { - executors.performOnForeground(writtenSoFar, bytesToWrite.length, - progress); - } - } while (toWrite > 0); - bos.close(); - } - - if (handler != null) { - handler.configConnection(connection); - } - - logger.logDebug(String.format("Response code %d, %s", - connection.getResponseCode(), - connection.getResponseMessage())); - - if (handler != null) { - logger.logDebug("StatefulResponse is handling the HTTP response."); - return handler.generateResult( - request, connection, this.getSerializer(), this.logger); - } - - if (connection.getResponseCode() >= HttpResponseCode.HTTP_CLIENT_ERROR) { - logger.logDebug("Handling error response"); - in = connection.getInputStream(); - handleErrorResponse(request, serializable, connection); - } - - if (connection.getResponseCode() == HttpResponseCode.HTTP_NOBODY - || connection.getResponseCode() == HttpResponseCode.HTTP_NOT_MODIFIED) { - logger.logDebug("Handling response with no body"); - return handleEmptyResponse(connection.getResponseHeaders(), resultClass); - } - - if (connection.getResponseCode() == HttpResponseCode.HTTP_ACCEPTED) { - logger.logDebug("Handling accepted response"); - return handleEmptyResponse(connection.getResponseHeaders(), resultClass); - } - - in = new BufferedInputStream(connection.getInputStream()); - - final Map headers = connection.getHeaders(); - - final String contentType = headers.get(CONTENT_TYPE_HEADER_NAME); - if (contentType.contains(JSON_CONTENT_TYPE)) { - logger.logDebug("Response json"); - return handleJsonResponse(in, connection.getResponseHeaders(), resultClass); - } else { - logger.logDebug("Response binary"); - isBinaryStreamInput = true; - //no inspection unchecked - return (Result) handleBinaryStream(in); - } - } finally { - if (out != null) { - out.close(); - } - if (!isBinaryStreamInput && in != null) { - in.close(); - connection.close(); - } - } - } catch (final GraphServiceException ex) { - final boolean shouldLogVerbosely = logger.getLoggingLevel() == LoggerLevel.DEBUG; - logger.logError("Graph service exception " + ex.getMessage(shouldLogVerbosely), ex); - throw ex; - } catch (final UnsupportedEncodingException ex) { - final ClientException clientException = new ClientException("Unsupported encoding problem: ", - ex); - logger.logError("Unsupported encoding problem: " + ex.getMessage(), ex); - throw clientException; - } catch (final Exception ex) { - final ClientException clientException = new ClientException("Error during http request", - ex); - logger.logError("Error during http request", clientException); - throw clientException; - } - } - - /** - * Handles the event of an error response - * - * @param request the request that caused the failed response - * @param serializable the body of the request - * @param connection the URL connection - * @param the type of the request body - * @throws IOException an exception occurs if there were any problems interacting with the connection object - */ - private void handleErrorResponse(final IHttpRequest request, - final Body serializable, - final IConnection connection) - throws IOException { - throw GraphServiceException.createFromConnection(request, serializable, serializer, - connection, logger); - } - - /** - * Handles the cause where the response is a binary stream - * - * @param in the input stream from the response - * @return the input stream to return to the caller - */ - private InputStream handleBinaryStream(final InputStream in) { - return in; - } - - /** - * Handles the cause where the response is a JSON object - * - * @param in the input stream from the response - * @param responseHeaders the response header - * @param clazz the class of the response object - * @param the type of the response object - * @return the JSON object - */ - private Result handleJsonResponse(final InputStream in, Map> responseHeaders, final Class clazz) { - if (clazz == null) { - return null; - } - - final String rawJson = streamToString(in); - return getSerializer().deserializeObject(rawJson, clazz, responseHeaders); - } - - /** - * Handles the case where the response body is empty - * - * @param responseHeaders the response headers - * @param clazz the type of the response object - * @return the JSON object - */ - private Result handleEmptyResponse(Map> responseHeaders, final Class clazz) - throws UnsupportedEncodingException{ - //Create an empty object to attach the response headers to - InputStream in = new ByteArrayInputStream("{}".getBytes(JSON_ENCODING)); - return handleJsonResponse(in, responseHeaders, clazz); - } - - /** - * Sets the connection factory for this provider - * - * @param factory the new factory - */ - void setConnectionFactory(final IConnectionFactory factory) { - connectionFactory = factory; - } - - /** - * Reads in a stream and converts it into a string - * - * @param input the response body stream - * @return the string result - */ - public static String streamToString(final InputStream input) { - final String httpStreamEncoding = "UTF-8"; - final String endOfFile = "\\A"; - final Scanner scanner = new Scanner(input, httpStreamEncoding); - String scannerString = ""; - try { - scanner.useDelimiter(endOfFile); - scannerString = scanner.next(); - } finally { - scanner.close(); - } - return scannerString; - } - - /** - * Searches for the given header in a list of HeaderOptions - * - * @param headers the list of headers to search through - * @param header the header name to search for (case insensitive) - * @return true if the header has already been set - */ - @VisibleForTesting - static boolean hasHeader(List headers, String header) { - for (HeaderOption option : headers) { - if (option.getName().equalsIgnoreCase(header)) { - return true; - } - } - return false; - } - - @VisibleForTesting - public ILogger getLogger() { - return logger; - } - - @VisibleForTesting - public IExecutors getExecutors() { - return executors; - } - - @VisibleForTesting - public IAuthenticationProvider getAuthenticationProvider() { - return authenticationProvider; - } - - - /** - * Get connection config for read and connect timeout in requests - * - * @return Connection configuration to be used for timeout values - */ - public IConnectionConfig getConnectionConfig() { - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } - return connectionConfig; - } - - /** - * Set connection config for read and connect timeout in requests - * - * @param connectionConfig Connection configuration to be used for timeout values - */ - public void setConnectionConfig(IConnectionConfig connectionConfig) { - this.connectionConfig = connectionConfig; - } - - @Override - public Request getHttpRequest(IHttpRequest request, Class resultClass, - BodyType serializable, IProgressCallback progress) throws ClientException { - return null; - } -} diff --git a/src/main/java/com/microsoft/graph/http/GraphServiceException.java b/src/main/java/com/microsoft/graph/http/GraphServiceException.java index 1ed0124f887..fc35f1cc594 100644 --- a/src/main/java/com/microsoft/graph/http/GraphServiceException.java +++ b/src/main/java/com/microsoft/graph/http/GraphServiceException.java @@ -301,108 +301,6 @@ public GraphError getServiceError() { return error.error; } - /** - * Creates a Graph service exception from a given failed HTTP request - * - * @param request the request that resulted in this failure - * @param serializable the serialized object that was sent with this request - * @param serializer the serializer to re-create the option in its over the wire state - * @param connection the connection that was used to extract the response information from - * @param logger the logger to log exception information to - * @param the type of the serializable object - * @return the new GraphServiceException instance - * @throws IOException an exception occurs if there were any problems processing the connection - */ - public static GraphServiceException createFromConnection(final IHttpRequest request, - final T serializable, - final ISerializer serializer, - final IConnection connection, - final ILogger logger) - throws IOException { - final String method = connection.getRequestMethod(); - final String url = request.getRequestUrl().toString(); - final List requestHeaders = new LinkedList<>(); - for (final HeaderOption option : request.getHeaders()) { - requestHeaders.add(option.getName() + " : " + option.getValue()); - } - boolean isVerbose = logger.getLoggingLevel() == LoggerLevel.DEBUG; - final String requestBody; - if (serializable instanceof byte[]) { - final byte[] bytes = (byte[]) serializable; - StringBuilder sb = new StringBuilder(); - sb.append("byte[").append(bytes.length).append("]"); - - sb.append(" {"); - if (isVerbose) { - sb.append(bytes); - } else { - for (int i = 0; i < MAX_BYTE_COUNT_BEFORE_TRUNCATION && i < bytes.length; i++) { - sb.append(bytes[i]).append(", "); - } - if (bytes.length > MAX_BYTE_COUNT_BEFORE_TRUNCATION) { - sb.append(TRUNCATION_MARKER).append("}"); - } - } - requestBody = sb.toString(); - } else if (serializable != null) { - requestBody = serializer.serializeObject(serializable); - } else { - requestBody = null; - } - - final int responseCode = connection.getResponseCode(); - final List responseHeaders = new LinkedList<>(); - final Map headers = connection.getHeaders(); - for (final String key : headers.keySet()) { - final String fieldPrefix; - if (key == null) { - fieldPrefix = ""; - } else { - fieldPrefix = key + " : "; - } - responseHeaders.add(fieldPrefix + headers.get(key)); - } - - final String responseMessage = connection.getResponseMessage(); - String rawOutput = "{}"; - if(connection.getInputStream() != null) { - rawOutput = DefaultHttpProvider.streamToString(connection.getInputStream()); - } - GraphErrorResponse error; - try { - error = serializer.deserializeObject(rawOutput, GraphErrorResponse.class, connection.getResponseHeaders()); - } catch (final Exception ex) { - error = new GraphErrorResponse(); - error.error = new GraphError(); - error.error.code = "Unable to parse error response message"; - error.error.message = "Raw error: " + rawOutput; - error.error.innererror = new GraphInnerError(); - error.error.innererror.code = ex.getMessage(); - } - - if (responseCode >= INTERNAL_SERVER_ERROR) { - return new GraphFatalServiceException(method, - url, - requestHeaders, - requestBody, - responseCode, - responseMessage, - responseHeaders, - error, - isVerbose); - } - - return new GraphServiceException(method, - url, - requestHeaders, - requestBody, - responseCode, - responseMessage, - responseHeaders, - error, - isVerbose); - } - /** * Creates a Graph service exception from a given failed HTTP request * @@ -415,7 +313,7 @@ public static GraphServiceException createFromConnection(final IHttpRequest * @return the new GraphServiceException instance * @throws IOException an exception occurs if there were any problems processing the connection */ - public static GraphServiceException createFromConnection(final IHttpRequest request, + public static GraphServiceException createFromResponse(final IHttpRequest request, final T serializable, final ISerializer serializer, final Response response, @@ -470,7 +368,7 @@ public static GraphServiceException createFromConnection(final IHttpRequest InputStream is = response.body().byteStream(); try { - rawOutput = DefaultHttpProvider.streamToString(is); + rawOutput = CoreHttpProvider.streamToString(is); } finally { closeQuietly(is); } diff --git a/src/main/java/com/microsoft/graph/http/IConnection.java b/src/main/java/com/microsoft/graph/http/IConnection.java deleted file mode 100644 index 62a52903528..00000000000 --- a/src/main/java/com/microsoft/graph/http/IConnection.java +++ /dev/null @@ -1,131 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.List; -import java.util.Map; - -/** - * An HTTP connection with a remote server - */ -public interface IConnection { - - /** - * Follow 3XX series redirects - * - * @param followRedirects true to follow redirects, false otherwise - */ - void setFollowRedirects(final boolean followRedirects); - - /** - * Adds a header to the connection (Must be done before reading/writing) - * - * @param headerName the header name - * @param headerValue the header value - */ - void addRequestHeader(String headerName, String headerValue); - - /** - * Gets the stream to write to the request - * - * @return the output stream to write onto - * @throws IOException if something goes wrong while getting the stream - */ - OutputStream getOutputStream() throws IOException; - - /** - * Gets the stream to read to the response - * - * @return the input stream to read from - * @throws IOException if something goes wrong while getting the stream - */ - InputStream getInputStream() throws IOException; - - /** - * Gets the response code for the request - * - * @return the HTTP status code - * @throws IOException if something goes wrong while getting the response code - */ - int getResponseCode() throws IOException; - - /** - * Get the response message - * - * @return the response message - * @throws IOException if something goes wrong while getting the response message - */ - String getResponseMessage() throws IOException; - - /** - * Closes this connection, and all streams become inaccessible - */ - void close(); - - /** - * Gets the response headers for this connection - * - * @return the map of headers - */ - Map getHeaders(); - - Map> getResponseHeaders(); - - /** - * Gets the HTTP request method - * - * @return the request method - */ - String getRequestMethod(); - - /** - * Returns the Content-Length - * - * @return the content length - */ - int getContentLength(); - - /** - * Set the Content-Length header - * - * @param length the length of content - */ - void setContentLength(final int length); - - /** - * Set the connect timeout on the connection - * - * @param connectTimeoutMilliseconds the connection timeout in milliseconds - */ - void setConnectTimeout(final int connectTimeoutMilliseconds); - - /** - * Set the read timeout on the connection - * - * @param readTimeoutMilliseconds the read timeout in milliseconds - */ - void setReadTimeout(final int readTimeoutMilliseconds); -} diff --git a/src/main/java/com/microsoft/graph/http/IConnectionFactory.java b/src/main/java/com/microsoft/graph/http/IConnectionFactory.java deleted file mode 100644 index f0ce28433c2..00000000000 --- a/src/main/java/com/microsoft/graph/http/IConnectionFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import java.io.IOException; - -/** - * Creates connections to remove servers - */ -public interface IConnectionFactory { - - /** - * Create a connection from an IHttpRequest - * - * @param request the request to make the connection from - * @return the connection object - * @throws IOException an exception occurs if there was a network issue while creating the connection - */ - IConnection createFromRequest(IHttpRequest request) throws IOException; -} diff --git a/src/main/java/com/microsoft/graph/http/IHttpProvider.java b/src/main/java/com/microsoft/graph/http/IHttpProvider.java index d7780d04f7d..03fd15d6667 100644 --- a/src/main/java/com/microsoft/graph/http/IHttpProvider.java +++ b/src/main/java/com/microsoft/graph/http/IHttpProvider.java @@ -25,7 +25,6 @@ import com.microsoft.graph.concurrency.ICallback; import com.microsoft.graph.concurrency.IProgressCallback; import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.core.IConnectionConfig; import com.microsoft.graph.serializer.ISerializer; import okhttp3.Request; @@ -42,22 +41,6 @@ public interface IHttpProvider { */ ISerializer getSerializer(); - /** - * Get connection config for read and connect timeout in requests - * - * @return Connection configuration to be used for timeout values - * - */ - public IConnectionConfig getConnectionConfig(); - - /** - * Set connection config for read and connect timeout in requests - * - * @param connectionConfig Connection configuration to be used for timeout values - * - */ - public void setConnectionConfig(IConnectionConfig connectionConfig); - /** * Sends the HTTP request asynchronously * diff --git a/src/main/java/com/microsoft/graph/http/IStatefulResponseHandler.java b/src/main/java/com/microsoft/graph/http/IStatefulResponseHandler.java index cf90df6823b..be7fa8fdd73 100644 --- a/src/main/java/com/microsoft/graph/http/IStatefulResponseHandler.java +++ b/src/main/java/com/microsoft/graph/http/IStatefulResponseHandler.java @@ -37,34 +37,12 @@ * @param the deserialize type for serializer */ public interface IStatefulResponseHandler { - /** - * Configure the connection before get response - * - * @param connection the HTTP connection - */ - void configConnection(final IConnection connection); - /** * Configure the response * * @param response the HTTP response */ void configConnection(final Response response); - - /** - * Generate result after receiving response - * - * @param request the HTTP request - * @param connection the HTTP connection - * @param serializer the serializer for parsing response - * @param logger the logger - * @return the result generated by this handler - * @throws Exception an exception occurs if the request was unable to complete for any reason - */ - ResultType generateResult(final IHttpRequest request, - final IConnection connection, - final ISerializer serializer, - final ILogger logger) throws Exception; /** * Generate result after receiving response diff --git a/src/main/java/com/microsoft/graph/http/UrlConnection.java b/src/main/java/com/microsoft/graph/http/UrlConnection.java deleted file mode 100644 index 0f9439c022e..00000000000 --- a/src/main/java/com/microsoft/graph/http/UrlConnection.java +++ /dev/null @@ -1,189 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2017 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import com.microsoft.graph.options.HeaderOption; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.ProtocolException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Wrapper around HttpUrlConnection for testability - */ -public class UrlConnection implements IConnection { - - /** - * The backing HTTP URL connection instance - */ - private final HttpURLConnection connection; - - /** - * The response header cache - */ - private HashMap headers; - - /** - * Creates a new UrlConnection - * - * @param request the IHttpRequest to create the connection from - * @throws IOException an exception occurs if there was a problem creating the connection - */ - public UrlConnection(final IHttpRequest request) throws IOException { - connection = (HttpURLConnection) request.getRequestUrl().openConnection(); - - for (final HeaderOption header : request.getHeaders()) { - connection.addRequestProperty(header.getName(), header.getValue().toString()); - } - - connection.setUseCaches(request.getUseCaches()); - - try { - connection.setRequestMethod(request.getHttpMethod().toString()); - } catch (final ProtocolException ignored) { - // Some HTTP verbs are not supported by older HTTP implementations, use method override as an alternative - connection.setRequestMethod(HttpMethod.POST.toString()); - connection.addRequestProperty("X-HTTP-Method-Override", request.getHttpMethod().toString()); - connection.addRequestProperty("X-HTTP-Method", request.getHttpMethod().toString()); - } - } - - @Override - public void setFollowRedirects(final boolean followRedirects) { - connection.setInstanceFollowRedirects(followRedirects); - } - - @Override - public void addRequestHeader(final String headerName, final String headerValue) { - connection.addRequestProperty(headerName, headerValue); - } - - @Override - public OutputStream getOutputStream() throws IOException { - connection.setDoOutput(true); - return connection.getOutputStream(); - } - - @Override - public InputStream getInputStream() throws IOException { - final int httpClientErrorResponseCode = 400; - if (connection.getResponseCode() >= httpClientErrorResponseCode) { - return connection.getErrorStream(); - } else { - return connection.getInputStream(); - } - } - - @Override - public int getContentLength() { - return connection.getContentLength(); - } - - @Override - public int getResponseCode() throws IOException { - return connection.getResponseCode(); - } - - public Map> getResponseHeaders() { - // Copy unmodifiable map to hashmap - HashMap> headerFields = new HashMap<>(); - headerFields.putAll(connection.getHeaderFields()); - - // Add the response code - List list = new ArrayList<>(); - try { - list.add(String.format("%d", connection.getResponseCode())); - } catch (IOException e) { - throw new IllegalArgumentException("Invalid connection response code: could not connect to server", e); - } - - headerFields.put("responseCode", list); - return headerFields; - } - - @Override - public String getResponseMessage() throws IOException { - return connection.getResponseMessage(); - } - - @Override - public void close() { - connection.disconnect(); - } - - @Override - public Map getHeaders() { - if (headers == null) { - headers = getResponseHeaders(connection); - } - return headers; - } - - @Override - public String getRequestMethod() { - return connection.getRequestMethod(); - } - - @Override - public void setContentLength(final int length) { - connection.setFixedLengthStreamingMode(length); - } - - @Override - public void setReadTimeout(final int readTimeoutMilliseconds) { - connection.setReadTimeout(readTimeoutMilliseconds); - } - - @Override - public void setConnectTimeout(final int connectTimeoutMilliseconds) { - connection.setConnectTimeout(connectTimeoutMilliseconds); - } - - /** - * Gets the response headers from an HTTP URL connection - * - * @param connection the HTTP connection - * @return the set of headers names and value - */ - private static HashMap getResponseHeaders(final HttpURLConnection connection) { - final HashMap headers = new HashMap<>(); - int index = 0; - while (true) { - final String headerName = connection.getHeaderFieldKey(index); - final String headerValue = connection.getHeaderField(index); - if (headerName == null && headerValue == null) { - break; - } - headers.put(headerName, headerValue); - index++; - } - - return headers; - } -} diff --git a/src/main/java/com/microsoft/graph/models/extensions/EducationStudent.java b/src/main/java/com/microsoft/graph/models/extensions/EducationStudent.java index 090c9e07cb6..b8435d48a7e 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/EducationStudent.java +++ b/src/main/java/com/microsoft/graph/models/extensions/EducationStudent.java @@ -38,7 +38,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("birthDate") @Expose - public com.microsoft.graph.models.extensions.DateOnly birthDate; + public com.microsoft.graph.core.DateOnly birthDate; /** * The External Id. diff --git a/src/main/java/com/microsoft/graph/models/extensions/EducationTerm.java b/src/main/java/com/microsoft/graph/models/extensions/EducationTerm.java index 9e3f76e8eac..d0b84974f72 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/EducationTerm.java +++ b/src/main/java/com/microsoft/graph/models/extensions/EducationTerm.java @@ -45,7 +45,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("endDate") @Expose - public com.microsoft.graph.models.extensions.DateOnly endDate; + public com.microsoft.graph.core.DateOnly endDate; /** * The External Id. @@ -61,7 +61,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("startDate") @Expose - public com.microsoft.graph.models.extensions.DateOnly startDate; + public com.microsoft.graph.core.DateOnly startDate; /** diff --git a/src/main/java/com/microsoft/graph/models/extensions/IGraphServiceClient.java b/src/main/java/com/microsoft/graph/models/extensions/IGraphServiceClient.java deleted file mode 100644 index 9233a845370..00000000000 --- a/src/main/java/com/microsoft/graph/models/extensions/IGraphServiceClient.java +++ /dev/null @@ -1,106 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.models.extensions; - -import com.microsoft.graph.http.IRequestBuilder; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.concurrency.ICallback; -import com.microsoft.graph.requests.extensions.InvitationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.InvitationRequestBuilder; -import com.microsoft.graph.requests.extensions.UserCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.UserRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityProviderCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityProviderRequestBuilder; -import com.microsoft.graph.requests.extensions.ApplicationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ApplicationRequestBuilder; -import com.microsoft.graph.requests.extensions.CertificateBasedAuthConfigurationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.CertificateBasedAuthConfigurationRequestBuilder; -import com.microsoft.graph.requests.extensions.OrgContactCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OrgContactRequestBuilder; -import com.microsoft.graph.requests.extensions.ContractCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ContractRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryObjectCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryObjectRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainDnsRecordCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainDnsRecordRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.OAuth2PermissionGrantCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OAuth2PermissionGrantRequestBuilder; -import com.microsoft.graph.requests.extensions.OrganizationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OrganizationRequestBuilder; -import com.microsoft.graph.requests.extensions.ScopedRoleMembershipCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ScopedRoleMembershipRequestBuilder; -import com.microsoft.graph.requests.extensions.ServicePrincipalCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ServicePrincipalRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscribedSkuCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscribedSkuRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveItemCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveItemRequestBuilder; -import com.microsoft.graph.requests.extensions.PlaceCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.PlaceRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveRequestBuilder; -import com.microsoft.graph.requests.extensions.SharedDriveItemCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SharedDriveItemRequestBuilder; -import com.microsoft.graph.requests.extensions.SiteCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SiteRequestBuilder; -import com.microsoft.graph.requests.extensions.SchemaExtensionCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SchemaExtensionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupLifecyclePolicyCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupLifecyclePolicyRequestBuilder; -import com.microsoft.graph.requests.extensions.DataPolicyOperationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DataPolicyOperationRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscriptionCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscriptionRequestBuilder; -import com.microsoft.graph.requests.extensions.ChatCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ChatRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamsTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamsTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.AuditLogRootRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityContainerRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRequestBuilder; -import com.microsoft.graph.requests.extensions.PolicyRootRequestBuilder; -import com.microsoft.graph.requests.extensions.EducationRootRequestBuilder; -import com.microsoft.graph.requests.extensions.CloudCommunicationsRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceAppManagementRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceManagementRequestBuilder; -import com.microsoft.graph.requests.extensions.ReportRootRequestBuilder; -import com.microsoft.graph.requests.extensions.PlannerRequestBuilder; -import com.microsoft.graph.requests.extensions.SecurityRequestBuilder; -import com.microsoft.graph.requests.extensions.AppCatalogsRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamworkRequestBuilder; -import com.microsoft.graph.requests.extensions.InformationProtectionRequestBuilder; -import java.util.Arrays; -import java.util.EnumSet; -import com.google.gson.JsonObject; -import com.microsoft.graph.models.extensions.IBaseGraphServiceClient; -import com.microsoft.graph.requests.extensions.CustomRequestBuilder; - -// **NOTE** This file was generated by a tool and any changes will be overwritten. - -/** - * The interface for the Graph Service Client. - */ -public interface IGraphServiceClient extends IBaseGraphServiceClient { - - CustomRequestBuilder customRequest(final String url, final Class responseType); - - CustomRequestBuilder customRequest(final String url); -} diff --git a/src/main/java/com/microsoft/graph/models/extensions/IosUpdateConfiguration.java b/src/main/java/com/microsoft/graph/models/extensions/IosUpdateConfiguration.java index 3caedfd31b5..ee80502b9b8 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/IosUpdateConfiguration.java +++ b/src/main/java/com/microsoft/graph/models/extensions/IosUpdateConfiguration.java @@ -29,7 +29,7 @@ public class IosUpdateConfiguration extends DeviceConfiguration implements IJson */ @SerializedName("activeHoursEnd") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay activeHoursEnd; + public com.microsoft.graph.core.TimeOfDay activeHoursEnd; /** * The Active Hours Start. @@ -37,7 +37,7 @@ public class IosUpdateConfiguration extends DeviceConfiguration implements IJson */ @SerializedName("activeHoursStart") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay activeHoursStart; + public com.microsoft.graph.core.TimeOfDay activeHoursStart; /** * The Scheduled Install Days. diff --git a/src/main/java/com/microsoft/graph/models/extensions/RecurrenceRange.java b/src/main/java/com/microsoft/graph/models/extensions/RecurrenceRange.java index dfab6d76dfa..2d4cb12d38d 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/RecurrenceRange.java +++ b/src/main/java/com/microsoft/graph/models/extensions/RecurrenceRange.java @@ -38,7 +38,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("endDate") @Expose - public com.microsoft.graph.models.extensions.DateOnly endDate; + public com.microsoft.graph.core.DateOnly endDate; /** * The Number Of Occurrences. @@ -62,7 +62,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("startDate") @Expose - public com.microsoft.graph.models.extensions.DateOnly startDate; + public com.microsoft.graph.core.DateOnly startDate; /** * The Type. diff --git a/src/main/java/com/microsoft/graph/models/extensions/SharedPCConfiguration.java b/src/main/java/com/microsoft/graph/models/extensions/SharedPCConfiguration.java index 9e26881754d..1e10f929a7f 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/SharedPCConfiguration.java +++ b/src/main/java/com/microsoft/graph/models/extensions/SharedPCConfiguration.java @@ -118,7 +118,7 @@ public class SharedPCConfiguration extends DeviceConfiguration implements IJsonB */ @SerializedName("maintenanceStartTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay maintenanceStartTime; + public com.microsoft.graph.core.TimeOfDay maintenanceStartTime; /** diff --git a/src/main/java/com/microsoft/graph/models/extensions/StandardTimeZoneOffset.java b/src/main/java/com/microsoft/graph/models/extensions/StandardTimeZoneOffset.java index e0b02d84a9c..8c7d71ce1a1 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/StandardTimeZoneOffset.java +++ b/src/main/java/com/microsoft/graph/models/extensions/StandardTimeZoneOffset.java @@ -62,7 +62,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("time") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay time; + public com.microsoft.graph.core.TimeOfDay time; /** * The Year. diff --git a/src/main/java/com/microsoft/graph/models/extensions/TimeRange.java b/src/main/java/com/microsoft/graph/models/extensions/TimeRange.java index 43b87cb811d..207b6064a2b 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/TimeRange.java +++ b/src/main/java/com/microsoft/graph/models/extensions/TimeRange.java @@ -37,7 +37,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("endTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay endTime; + public com.microsoft.graph.core.TimeOfDay endTime; /** * The Start Time. @@ -45,7 +45,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("startTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay startTime; + public com.microsoft.graph.core.TimeOfDay startTime; /** diff --git a/src/main/java/com/microsoft/graph/models/extensions/Windows10GeneralConfiguration.java b/src/main/java/com/microsoft/graph/models/extensions/Windows10GeneralConfiguration.java index 34393f52439..aed31e77e2f 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/Windows10GeneralConfiguration.java +++ b/src/main/java/com/microsoft/graph/models/extensions/Windows10GeneralConfiguration.java @@ -357,7 +357,7 @@ public class Windows10GeneralConfiguration extends DeviceConfiguration implement */ @SerializedName("defenderScheduledQuickScanTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay defenderScheduledQuickScanTime; + public com.microsoft.graph.core.TimeOfDay defenderScheduledQuickScanTime; /** * The Defender Scheduled Scan Time. @@ -365,7 +365,7 @@ public class Windows10GeneralConfiguration extends DeviceConfiguration implement */ @SerializedName("defenderScheduledScanTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay defenderScheduledScanTime; + public com.microsoft.graph.core.TimeOfDay defenderScheduledScanTime; /** * The Defender Signature Update Interval In Hours. diff --git a/src/main/java/com/microsoft/graph/models/extensions/Windows10TeamGeneralConfiguration.java b/src/main/java/com/microsoft/graph/models/extensions/Windows10TeamGeneralConfiguration.java index 06a33d3f559..55d0f4ae798 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/Windows10TeamGeneralConfiguration.java +++ b/src/main/java/com/microsoft/graph/models/extensions/Windows10TeamGeneralConfiguration.java @@ -78,7 +78,7 @@ public class Windows10TeamGeneralConfiguration extends DeviceConfiguration imple */ @SerializedName("maintenanceWindowStartTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay maintenanceWindowStartTime; + public com.microsoft.graph.core.TimeOfDay maintenanceWindowStartTime; /** * The Miracast Blocked. diff --git a/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateActiveHoursInstall.java b/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateActiveHoursInstall.java index d3e57b03071..50af05717e2 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateActiveHoursInstall.java +++ b/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateActiveHoursInstall.java @@ -28,7 +28,7 @@ public class WindowsUpdateActiveHoursInstall extends WindowsUpdateInstallSchedul */ @SerializedName("activeHoursEnd") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay activeHoursEnd; + public com.microsoft.graph.core.TimeOfDay activeHoursEnd; /** * The Active Hours Start. @@ -36,7 +36,7 @@ public class WindowsUpdateActiveHoursInstall extends WindowsUpdateInstallSchedul */ @SerializedName("activeHoursStart") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay activeHoursStart; + public com.microsoft.graph.core.TimeOfDay activeHoursStart; /** diff --git a/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateScheduledInstall.java b/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateScheduledInstall.java index 06c5cb86ef2..b41882a117f 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateScheduledInstall.java +++ b/src/main/java/com/microsoft/graph/models/extensions/WindowsUpdateScheduledInstall.java @@ -37,7 +37,7 @@ public class WindowsUpdateScheduledInstall extends WindowsUpdateInstallScheduleT */ @SerializedName("scheduledInstallTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay scheduledInstallTime; + public com.microsoft.graph.core.TimeOfDay scheduledInstallTime; /** diff --git a/src/main/java/com/microsoft/graph/models/extensions/WorkingHours.java b/src/main/java/com/microsoft/graph/models/extensions/WorkingHours.java index 1b551cbdd0c..d784e0c027d 100644 --- a/src/main/java/com/microsoft/graph/models/extensions/WorkingHours.java +++ b/src/main/java/com/microsoft/graph/models/extensions/WorkingHours.java @@ -47,7 +47,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("endTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay endTime; + public com.microsoft.graph.core.TimeOfDay endTime; /** * The Start Time. @@ -55,7 +55,7 @@ public final AdditionalDataManager additionalDataManager() { */ @SerializedName("startTime") @Expose - public com.microsoft.graph.models.extensions.TimeOfDay startTime; + public com.microsoft.graph.core.TimeOfDay startTime; /** * The Time Zone. diff --git a/src/main/java/com/microsoft/graph/requests/extensions/GraphServiceClient.java b/src/main/java/com/microsoft/graph/requests/extensions/GraphServiceClient.java deleted file mode 100644 index 0300e2f8cd8..00000000000 --- a/src/main/java/com/microsoft/graph/requests/extensions/GraphServiceClient.java +++ /dev/null @@ -1,310 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. See License in the project root for license information. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.requests.extensions; - -import com.microsoft.graph.http.IRequestBuilder; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.concurrency.ICallback; -import com.microsoft.graph.requests.extensions.InvitationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.InvitationRequestBuilder; -import com.microsoft.graph.requests.extensions.UserCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.UserRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityProviderCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityProviderRequestBuilder; -import com.microsoft.graph.requests.extensions.ApplicationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ApplicationRequestBuilder; -import com.microsoft.graph.requests.extensions.CertificateBasedAuthConfigurationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.CertificateBasedAuthConfigurationRequestBuilder; -import com.microsoft.graph.requests.extensions.OrgContactCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OrgContactRequestBuilder; -import com.microsoft.graph.requests.extensions.ContractCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ContractRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryObjectCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryObjectRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRoleTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainDnsRecordCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainDnsRecordRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DomainRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupSettingTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.OAuth2PermissionGrantCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OAuth2PermissionGrantRequestBuilder; -import com.microsoft.graph.requests.extensions.OrganizationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.OrganizationRequestBuilder; -import com.microsoft.graph.requests.extensions.ScopedRoleMembershipCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ScopedRoleMembershipRequestBuilder; -import com.microsoft.graph.requests.extensions.ServicePrincipalCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ServicePrincipalRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscribedSkuCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscribedSkuRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveItemCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveItemRequestBuilder; -import com.microsoft.graph.requests.extensions.PlaceCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.PlaceRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DriveRequestBuilder; -import com.microsoft.graph.requests.extensions.SharedDriveItemCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SharedDriveItemRequestBuilder; -import com.microsoft.graph.requests.extensions.SiteCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SiteRequestBuilder; -import com.microsoft.graph.requests.extensions.SchemaExtensionCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SchemaExtensionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupLifecyclePolicyCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.GroupLifecyclePolicyRequestBuilder; -import com.microsoft.graph.requests.extensions.DataPolicyOperationCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.DataPolicyOperationRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscriptionCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.SubscriptionRequestBuilder; -import com.microsoft.graph.requests.extensions.ChatCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.ChatRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamsTemplateCollectionRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamsTemplateRequestBuilder; -import com.microsoft.graph.requests.extensions.AuditLogRootRequestBuilder; -import com.microsoft.graph.requests.extensions.IdentityContainerRequestBuilder; -import com.microsoft.graph.requests.extensions.DirectoryRequestBuilder; -import com.microsoft.graph.requests.extensions.PolicyRootRequestBuilder; -import com.microsoft.graph.requests.extensions.EducationRootRequestBuilder; -import com.microsoft.graph.requests.extensions.CloudCommunicationsRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceAppManagementRequestBuilder; -import com.microsoft.graph.requests.extensions.DeviceManagementRequestBuilder; -import com.microsoft.graph.requests.extensions.ReportRootRequestBuilder; -import com.microsoft.graph.requests.extensions.PlannerRequestBuilder; -import com.microsoft.graph.requests.extensions.SecurityRequestBuilder; -import com.microsoft.graph.requests.extensions.AppCatalogsRequestBuilder; -import com.microsoft.graph.requests.extensions.TeamworkRequestBuilder; -import com.microsoft.graph.requests.extensions.InformationProtectionRequestBuilder; -import java.util.Arrays; -import java.util.EnumSet; - -import com.microsoft.graph.authentication.*; -import com.microsoft.graph.logger.*; -import com.google.gson.JsonObject; -import com.microsoft.graph.concurrency.IExecutors; -import com.microsoft.graph.models.extensions.IGraphServiceClient; -import com.microsoft.graph.http.IHttpProvider; -import com.microsoft.graph.serializer.ISerializer; -import com.microsoft.graph.core.IClientConfig; -import com.microsoft.graph.core.DefaultClientConfig; - -// **NOTE** This file was generated by a tool and any changes will be overwritten. - -/** - * The class for the Graph Service Client. - */ -public class GraphServiceClient extends BaseGraphServiceClient implements IGraphServiceClient { - - /** - * Restricted constructor - */ - protected GraphServiceClient() { - } - - /** - * Send a custom request to Graph - * - * @param url - * the full URL to make a request with - * @param responseType - * the response class to deserialize the response into - * @return the instance of this builder - */ - public CustomRequestBuilder customRequest(final String url, final Class responseType) { - return new CustomRequestBuilder(getServiceRoot() + url, this, null, responseType); - } - - /** - * Send a custom request to Graph - * - * @param url - * the full URL to make a request with - * @return the instance of this builder - */ - public CustomRequestBuilder customRequest(final String url) { - return new CustomRequestBuilder(getServiceRoot() + url, this, null, - JsonObject.class); - } - - /** - * Returns a Graph service client using the given configuration. - * - * @param config - * the client configuration - * @return a Graph service client - */ - public static IGraphServiceClient fromConfig(final IClientConfig config) { - GraphServiceClient client = new GraphServiceClient(); - client.setAuthenticationProvider(config.getAuthenticationProvider()); - client.setExecutors(config.getExecutors()); - client.setHttpProvider(config.getHttpProvider()); - client.setLogger(config.getLogger()); - client.setSerializer(config.getSerializer()); - client.validate(); - return client; - } - - public static Builder builder() { - return new Builder(); - } - - public static final class Builder { - - Builder() { - // restrict instantiation - } - - /** - * Sets the authentication provider - * - * @param authenticationProvider - * the authentication provider - * @return a new builder that allows specification of other aspects of the GraphServiceClient - */ - public Builder2 authenticationProvider(IAuthenticationProvider authenticationProvider) { - checkNotNull(authenticationProvider, "authenticationProvider"); - return new Builder2(authenticationProvider); - } - } - - /** - * The builder for this GraphServiceClient - */ - public static final class Builder2 { - - private final IAuthenticationProvider authenticationProvider; - private ISerializer serializer; - private IHttpProvider httpProvider; - private IExecutors executors; - private ILogger logger; - - - Builder2(IAuthenticationProvider authenticationProvider) { - this.authenticationProvider = authenticationProvider; - } - - /** - * Sets the serializer. - * - * @param serializer - * the serializer - * @return the instance of this builder - */ - public Builder2 serializer(final ISerializer serializer) { - checkNotNull(serializer, "serializer"); - this.serializer = serializer; - return this; - } - - /** - * Sets the httpProvider - * - * @param httpProvider - * the httpProvider - * @return the instance of this builder - */ - public Builder2 httpProvider(final IHttpProvider httpProvider) { - checkNotNull(httpProvider, "httpProvider"); - this.httpProvider = httpProvider; - return this; - } - - /** - * Sets the executors - * - * @param executors - * the executors - * @return the instance of this builder - */ - public Builder2 executors(final IExecutors executors) { - checkNotNull(executors, "executors"); - this.executors = executors; - return this; - } - - /** - * Sets the logger - * - * @param logger - * the logger - * @return the instance of this builder - */ - public Builder2 logger(final ILogger logger) { - checkNotNull(logger, "logger"); - this.logger = logger; - return this; - } - - /** - * Builds and returns the Graph service client. - * - * @return the Graph service client object - * @throws ClientException - * if there was an exception creating the client - */ - public IGraphServiceClient buildClient() throws ClientException { - DefaultClientConfig config = new DefaultClientConfig() { - - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return authenticationProvider; - } - - @Override - public IHttpProvider getHttpProvider() { - if (httpProvider != null) { - return httpProvider; - } else { - return super.getHttpProvider(); - } - } - - @Override - public IExecutors getExecutors() { - if (executors != null) { - return executors; - } else { - return super.getExecutors(); - } - } - - @Override - public ILogger getLogger() { - if (logger !=null) { - return logger; - } else { - return super.getLogger(); - } - } - - @Override - public ISerializer getSerializer() { - if (serializer != null) { - return serializer; - } else { - return super.getSerializer(); - } - } - }; - return GraphServiceClient.fromConfig(config); - } - } - - private static void checkNotNull(Object o, String name) { - if (o==null) { - throw new NullPointerException(name + " cannot be null"); - } - } -} diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailActivityUserDetailRequestBuilder.java index b313e0ab60e..2013832e752 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetEmailActivityUserDetailRequestBuilder extends BaseFunc * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetEmailActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetEmailActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailAppUsageUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailAppUsageUserDetailRequestBuilder.java index 7d1a161e281..0b5da61f9a2 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailAppUsageUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetEmailAppUsageUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetEmailAppUsageUserDetailRequestBuilder extends BaseFunc * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetEmailAppUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetEmailAppUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365ActiveUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365ActiveUserDetailRequestBuilder.java index 813a363e928..18627413b06 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365ActiveUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365ActiveUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetOffice365ActiveUserDetailRequestBuilder extends BaseFu * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetOffice365ActiveUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOffice365ActiveUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365GroupsActivityDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365GroupsActivityDetailRequestBuilder.java index c127ad53a3d..51e5c6be9eb 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365GroupsActivityDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOffice365GroupsActivityDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetOffice365GroupsActivityDetailRequestBuilder extends Ba * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetOffice365GroupsActivityDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOffice365GroupsActivityDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveActivityUserDetailRequestBuilder.java index 98588735b13..b9ab5740d19 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetOneDriveActivityUserDetailRequestBuilder extends BaseF * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetOneDriveActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOneDriveActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveUsageAccountDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveUsageAccountDetailRequestBuilder.java index 6091411979e..01993ad4f3f 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveUsageAccountDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetOneDriveUsageAccountDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetOneDriveUsageAccountDetailRequestBuilder extends BaseF * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetOneDriveUsageAccountDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOneDriveUsageAccountDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointActivityUserDetailRequestBuilder.java index fe1d9883ba5..ba85ce071fc 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetSharePointActivityUserDetailRequestBuilder extends Bas * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetSharePointActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSharePointActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointSiteUsageDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointSiteUsageDetailRequestBuilder.java index 96a2a5a00df..35d00aacf07 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointSiteUsageDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSharePointSiteUsageDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetSharePointSiteUsageDetailRequestBuilder extends BaseFu * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetSharePointSiteUsageDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSharePointSiteUsageDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder.java index 8cd08445b45..00bc97b12bc 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder exten * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder.java index 4628c57d40c..bc6571fe838 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder ex * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder.java index c920c134758..f9c1ccabda4 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder extends BaseF * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsUserActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsUserActivityUserDetailRequestBuilder.java index a675b5f739d..b6ad67eaf40 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsUserActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetTeamsUserActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetTeamsUserActivityUserDetailRequestBuilder extends Base * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetTeamsUserActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetTeamsUserActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerActivityUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerActivityUserDetailRequestBuilder.java index d05e0714231..19d11e12065 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerActivityUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerActivityUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetYammerActivityUserDetailRequestBuilder extends BaseFun * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetYammerActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerActivityUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerDeviceUsageUserDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerDeviceUsageUserDetailRequestBuilder.java index 1991375c0c8..7ae48cdf266 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerDeviceUsageUserDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerDeviceUsageUserDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetYammerDeviceUsageUserDetailRequestBuilder extends Base * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetYammerDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerDeviceUsageUserDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerGroupsActivityDetailRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerGroupsActivityDetailRequestBuilder.java index 05d59e87eb2..02dbd2d6a19 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerGroupsActivityDetailRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootGetYammerGroupsActivityDetailRequestBuilder.java @@ -26,7 +26,7 @@ public class ReportRootGetYammerGroupsActivityDetailRequestBuilder extends BaseF * @param requestOptions the options for this request * @param date the date */ - public ReportRootGetYammerGroupsActivityDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerGroupsActivityDetailRequestBuilder(final String requestUrl, final IBaseClient client, final java.util.List requestOptions, final com.microsoft.graph.core.DateOnly date) { super(requestUrl, client, requestOptions); functionOptions.add(new com.microsoft.graph.options.FunctionOption("date", date)); } diff --git a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootRequestBuilder.java b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootRequestBuilder.java index c719d1006ff..00f6a885e8b 100644 --- a/src/main/java/com/microsoft/graph/requests/extensions/ReportRootRequestBuilder.java +++ b/src/main/java/com/microsoft/graph/requests/extensions/ReportRootRequestBuilder.java @@ -86,7 +86,7 @@ public ReportRootGetEmailActivityUserCountsRequestBuilder getEmailActivityUserCo return new ReportRootGetEmailActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getEmailActivityUserCounts"), getClient(), null, period); } - public ReportRootGetEmailActivityUserDetailRequestBuilder getEmailActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetEmailActivityUserDetailRequestBuilder getEmailActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetEmailActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getEmailActivityUserDetail"), getClient(), null, date); } @@ -102,7 +102,7 @@ public ReportRootGetEmailAppUsageUserCountsRequestBuilder getEmailAppUsageUserCo return new ReportRootGetEmailAppUsageUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getEmailAppUsageUserCounts"), getClient(), null, period); } - public ReportRootGetEmailAppUsageUserDetailRequestBuilder getEmailAppUsageUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetEmailAppUsageUserDetailRequestBuilder getEmailAppUsageUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetEmailAppUsageUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getEmailAppUsageUserDetail"), getClient(), null, date); } @@ -146,7 +146,7 @@ public ReportRootGetOffice365ActiveUserCountsRequestBuilder getOffice365ActiveUs return new ReportRootGetOffice365ActiveUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOffice365ActiveUserCounts"), getClient(), null, period); } - public ReportRootGetOffice365ActiveUserDetailRequestBuilder getOffice365ActiveUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOffice365ActiveUserDetailRequestBuilder getOffice365ActiveUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetOffice365ActiveUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOffice365ActiveUserDetail"), getClient(), null, date); } @@ -158,7 +158,7 @@ public ReportRootGetOffice365GroupsActivityCountsRequestBuilder getOffice365Grou return new ReportRootGetOffice365GroupsActivityCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOffice365GroupsActivityCounts"), getClient(), null, period); } - public ReportRootGetOffice365GroupsActivityDetailRequestBuilder getOffice365GroupsActivityDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOffice365GroupsActivityDetailRequestBuilder getOffice365GroupsActivityDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetOffice365GroupsActivityDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOffice365GroupsActivityDetail"), getClient(), null, date); } @@ -190,7 +190,7 @@ public ReportRootGetOneDriveActivityUserCountsRequestBuilder getOneDriveActivity return new ReportRootGetOneDriveActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOneDriveActivityUserCounts"), getClient(), null, period); } - public ReportRootGetOneDriveActivityUserDetailRequestBuilder getOneDriveActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOneDriveActivityUserDetailRequestBuilder getOneDriveActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetOneDriveActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOneDriveActivityUserDetail"), getClient(), null, date); } @@ -202,7 +202,7 @@ public ReportRootGetOneDriveUsageAccountCountsRequestBuilder getOneDriveUsageAcc return new ReportRootGetOneDriveUsageAccountCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOneDriveUsageAccountCounts"), getClient(), null, period); } - public ReportRootGetOneDriveUsageAccountDetailRequestBuilder getOneDriveUsageAccountDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetOneDriveUsageAccountDetailRequestBuilder getOneDriveUsageAccountDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetOneDriveUsageAccountDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getOneDriveUsageAccountDetail"), getClient(), null, date); } @@ -230,7 +230,7 @@ public ReportRootGetSharePointActivityUserCountsRequestBuilder getSharePointActi return new ReportRootGetSharePointActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSharePointActivityUserCounts"), getClient(), null, period); } - public ReportRootGetSharePointActivityUserDetailRequestBuilder getSharePointActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSharePointActivityUserDetailRequestBuilder getSharePointActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetSharePointActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSharePointActivityUserDetail"), getClient(), null, date); } @@ -238,7 +238,7 @@ public ReportRootGetSharePointActivityUserDetailRequestBuilder getSharePointActi return new ReportRootGetSharePointActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSharePointActivityUserDetail"), getClient(), null, period); } - public ReportRootGetSharePointSiteUsageDetailRequestBuilder getSharePointSiteUsageDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSharePointSiteUsageDetailRequestBuilder getSharePointSiteUsageDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetSharePointSiteUsageDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSharePointSiteUsageDetail"), getClient(), null, date); } @@ -270,7 +270,7 @@ public ReportRootGetSkypeForBusinessActivityUserCountsRequestBuilder getSkypeFor return new ReportRootGetSkypeForBusinessActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSkypeForBusinessActivityUserCounts"), getClient(), null, period); } - public ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder getSkypeForBusinessActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder getSkypeForBusinessActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetSkypeForBusinessActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSkypeForBusinessActivityUserDetail"), getClient(), null, date); } @@ -286,7 +286,7 @@ public ReportRootGetSkypeForBusinessDeviceUsageUserCountsRequestBuilder getSkype return new ReportRootGetSkypeForBusinessDeviceUsageUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSkypeForBusinessDeviceUsageUserCounts"), getClient(), null, period); } - public ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder getSkypeForBusinessDeviceUsageUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder getSkypeForBusinessDeviceUsageUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetSkypeForBusinessDeviceUsageUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getSkypeForBusinessDeviceUsageUserDetail"), getClient(), null, date); } @@ -338,7 +338,7 @@ public ReportRootGetTeamsDeviceUsageUserCountsRequestBuilder getTeamsDeviceUsage return new ReportRootGetTeamsDeviceUsageUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getTeamsDeviceUsageUserCounts"), getClient(), null, period); } - public ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder getTeamsDeviceUsageUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder getTeamsDeviceUsageUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetTeamsDeviceUsageUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getTeamsDeviceUsageUserDetail"), getClient(), null, date); } @@ -354,7 +354,7 @@ public ReportRootGetTeamsUserActivityUserCountsRequestBuilder getTeamsUserActivi return new ReportRootGetTeamsUserActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getTeamsUserActivityUserCounts"), getClient(), null, period); } - public ReportRootGetTeamsUserActivityUserDetailRequestBuilder getTeamsUserActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetTeamsUserActivityUserDetailRequestBuilder getTeamsUserActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetTeamsUserActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getTeamsUserActivityUserDetail"), getClient(), null, date); } @@ -370,7 +370,7 @@ public ReportRootGetYammerActivityUserCountsRequestBuilder getYammerActivityUser return new ReportRootGetYammerActivityUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerActivityUserCounts"), getClient(), null, period); } - public ReportRootGetYammerActivityUserDetailRequestBuilder getYammerActivityUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerActivityUserDetailRequestBuilder getYammerActivityUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetYammerActivityUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerActivityUserDetail"), getClient(), null, date); } @@ -386,7 +386,7 @@ public ReportRootGetYammerDeviceUsageUserCountsRequestBuilder getYammerDeviceUsa return new ReportRootGetYammerDeviceUsageUserCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerDeviceUsageUserCounts"), getClient(), null, period); } - public ReportRootGetYammerDeviceUsageUserDetailRequestBuilder getYammerDeviceUsageUserDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerDeviceUsageUserDetailRequestBuilder getYammerDeviceUsageUserDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetYammerDeviceUsageUserDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerDeviceUsageUserDetail"), getClient(), null, date); } @@ -398,7 +398,7 @@ public ReportRootGetYammerGroupsActivityCountsRequestBuilder getYammerGroupsActi return new ReportRootGetYammerGroupsActivityCountsRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerGroupsActivityCounts"), getClient(), null, period); } - public ReportRootGetYammerGroupsActivityDetailRequestBuilder getYammerGroupsActivityDetail(final com.microsoft.graph.models.extensions.DateOnly date) { + public ReportRootGetYammerGroupsActivityDetailRequestBuilder getYammerGroupsActivityDetail(final com.microsoft.graph.core.DateOnly date) { return new ReportRootGetYammerGroupsActivityDetailRequestBuilder(getRequestUrlWithAdditionalSegment("microsoft.graph.getYammerGroupsActivityDetail"), getClient(), null, date); } diff --git a/src/main/java/com/microsoft/graph/serializer/GsonFactory.java b/src/main/java/com/microsoft/graph/serializer/GsonFactory.java index f593d6be007..abd85457ec0 100644 --- a/src/main/java/com/microsoft/graph/serializer/GsonFactory.java +++ b/src/main/java/com/microsoft/graph/serializer/GsonFactory.java @@ -33,9 +33,9 @@ import com.google.gson.JsonSerializer; import com.microsoft.graph.http.BaseCollectionPage; import com.microsoft.graph.logger.ILogger; -import com.microsoft.graph.models.extensions.DateOnly; +import com.microsoft.graph.core.DateOnly; -import com.microsoft.graph.models.extensions.TimeOfDay; +import com.microsoft.graph.core.TimeOfDay; import java.lang.reflect.Type; import java.text.ParseException; import java.util.Calendar; diff --git a/src/test/java/com/microsoft/graph/authentication/MockAuthenticationProvider.java b/src/test/java/com/microsoft/graph/authentication/MockAuthenticationProvider.java deleted file mode 100644 index d069edbdfee..00000000000 --- a/src/test/java/com/microsoft/graph/authentication/MockAuthenticationProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.microsoft.graph.authentication; - -import java.util.concurrent.atomic.AtomicInteger; - -import com.microsoft.graph.http.IHttpRequest; - -/** - * Mock authenticationProvider {@see IAuthenticationProvider} - */ -public class MockAuthenticationProvider implements IAuthenticationProvider { - - /** - * Interception counter - */ - private AtomicInteger mInterceptionCount = new AtomicInteger(0); - - @Override - public void authenticateRequest(IHttpRequest request) { - mInterceptionCount.incrementAndGet(); - } - - /** - * Gets the number of intercepted requests - * @return The number of intercepted requests - */ - public int getInterceptionCount() { - return mInterceptionCount.get(); - } -} diff --git a/src/test/java/com/microsoft/graph/core/BaseClientTests.java b/src/test/java/com/microsoft/graph/core/BaseClientTests.java index fa52d53f622..c2ed7828178 100644 --- a/src/test/java/com/microsoft/graph/core/BaseClientTests.java +++ b/src/test/java/com/microsoft/graph/core/BaseClientTests.java @@ -8,12 +8,12 @@ import org.junit.Before; import org.junit.Test; -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.authentication.MockAuthenticationProvider; +import okhttp3.OkHttpClient; + import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.concurrency.MockExecutors; import com.microsoft.graph.http.IHttpProvider; -import com.microsoft.graph.http.MockHttpProvider; +import com.microsoft.graph.http.CoreHttpProvider; import com.microsoft.graph.logger.ILogger; import com.microsoft.graph.logger.MockLogger; import com.microsoft.graph.serializer.ISerializer; @@ -26,7 +26,6 @@ public class BaseClientTests { public static final String DEFAULT_GRAPH_ENDPOINT = "https://graph.microsoft.com/v1.0"; private String mEndpoint = DEFAULT_GRAPH_ENDPOINT; private BaseClient baseClient; - private IAuthenticationProvider mAuthenticationProvider; private IExecutors mExecutors; private IHttpProvider mHttpProvider; private ILogger mLogger; @@ -45,17 +44,18 @@ public void setServiceRoot(String value) { mEndpoint = value; } }; - mAuthenticationProvider = new MockAuthenticationProvider(); mExecutors = new MockExecutors(); - mHttpProvider = new MockHttpProvider(); mLogger = new MockLogger(); mSerializer = new MockSerializer(null, ""); + mHttpProvider = new CoreHttpProvider(mSerializer, + mExecutors, + mLogger, + new OkHttpClient.Builder().build()); } @Test public void testNotNull() { assertNotNull(baseClient); - assertNotNull(mAuthenticationProvider); assertNotNull(mExecutors); assertNotNull(mHttpProvider); assertNotNull(mLogger); @@ -75,7 +75,6 @@ public void testValidateThrowException() { @Test public void testValidateSuccess() throws Exception { - baseClient.setAuthenticationProvider(mAuthenticationProvider); baseClient.setExecutors(mExecutors); baseClient.setHttpProvider(mHttpProvider); baseClient.setSerializer(mSerializer); @@ -90,13 +89,6 @@ public void testEndPoint() { assertEquals(expectedServiceRoot, baseClient.getServiceRoot()); } - @Test - public void testAuthenticationProvider() { - assertNull(baseClient.getAuthenticationProvider()); - baseClient.setAuthenticationProvider(mAuthenticationProvider); - assertEquals(mAuthenticationProvider, baseClient.getAuthenticationProvider()); - } - @Test public void testExecutors() { assertNull(baseClient.getExecutors()); diff --git a/src/test/java/com/microsoft/graph/core/DefaultClientConfigTests.java b/src/test/java/com/microsoft/graph/core/DefaultClientConfigTests.java deleted file mode 100644 index d14e88edf41..00000000000 --- a/src/test/java/com/microsoft/graph/core/DefaultClientConfigTests.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.microsoft.graph.core; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.junit.Before; -import org.junit.Test; - -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.authentication.MockAuthenticationProvider; -import com.microsoft.graph.logger.DefaultLogger; -import com.microsoft.graph.logger.ILogger; - -/** - * Test cases for {@see DefaultClientConfig} - */ -public class DefaultClientConfigTests { - - private IClientConfig mClientConfig; - private IAuthenticationProvider mAuthenticationProvider; - - @Before - public void setUp() throws Exception { - mAuthenticationProvider = new MockAuthenticationProvider(); - mClientConfig = DefaultClientConfig.createWithAuthenticationProvider(mAuthenticationProvider); - } - - @Test - public void testDefaultClientConfig() { - assertNotNull(mAuthenticationProvider); - assertNotNull(mClientConfig); - assertNotNull(mClientConfig.getLogger()); - assertNotNull(mClientConfig.getExecutors()); - assertNotNull(mClientConfig.getSerializer()); - assertNotNull(mClientConfig.getHttpProvider()); - assertNotNull(mClientConfig.getAuthenticationProvider()); - assertEquals(mAuthenticationProvider, mClientConfig.getAuthenticationProvider()); - } - - @Test - public void testOverrideLoggerShouldNotThrow() { - final ILogger logger = new DefaultLogger(); - DefaultClientConfig config = new DefaultClientConfig() { - - @Override - public ILogger getLogger() { - return logger; - } - - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return new MockAuthenticationProvider(); - } - - }; - config.getExecutors(); - config.getAuthenticationProvider(); - config.getHttpProvider(); - config.getSerializer(); - config.getLogger(); - } - -} diff --git a/src/test/java/com/microsoft/graph/requests/extensions/GraphServiceClientTest.java b/src/test/java/com/microsoft/graph/core/GraphServiceClientTest.java similarity index 65% rename from src/test/java/com/microsoft/graph/requests/extensions/GraphServiceClientTest.java rename to src/test/java/com/microsoft/graph/core/GraphServiceClientTest.java index 89f9dac8244..89e74c6c037 100644 --- a/src/test/java/com/microsoft/graph/requests/extensions/GraphServiceClientTest.java +++ b/src/test/java/com/microsoft/graph/core/GraphServiceClientTest.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.requests.extensions; +package com.microsoft.graph.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -8,43 +8,46 @@ import org.junit.Test; +import okhttp3.OkHttpClient; import okhttp3.Request; -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.authentication.MockAuthenticationProvider; import com.microsoft.graph.concurrency.DefaultExecutors; import com.microsoft.graph.concurrency.ICallback; import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.concurrency.IProgressCallback; import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.core.DefaultClientConfig; +import com.microsoft.graph.core.IGraphServiceClient; +import com.microsoft.graph.core.GraphServiceClient; import com.microsoft.graph.core.DefaultConnectionConfig; import com.microsoft.graph.core.IConnectionConfig; import com.microsoft.graph.http.CoreHttpProvider; import com.microsoft.graph.http.IHttpProvider; import com.microsoft.graph.http.IHttpRequest; import com.microsoft.graph.http.IStatefulResponseHandler; +import com.microsoft.graph.httpcore.HttpClients; +import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; import com.microsoft.graph.logger.ILogger; import com.microsoft.graph.logger.LoggerLevel; -import com.microsoft.graph.models.extensions.IGraphServiceClient; import com.microsoft.graph.serializer.DefaultSerializer; import com.microsoft.graph.serializer.ISerializer; public class GraphServiceClientTest { - - private static final IAuthenticationProvider auth = new MockAuthenticationProvider(); + private ICoreAuthenticationProvider getAuthProvider() { + return new ICoreAuthenticationProvider() { + @Override + public Request authenticateRequest(Request request) { + return request; + } + }; + } @Test public void testClientMethodsReturnStuff() { - - IGraphServiceClient client = GraphServiceClient.fromConfig(new DefaultClientConfig() { - - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return auth; - } - }); - assertEquals(auth, client.getAuthenticationProvider()); + ILogger logger = createLogger(); + IGraphServiceClient client = GraphServiceClient.builder() + .logger(logger) + .authenticationProvider(getAuthProvider()) + .buildClient(); assertNotNull(client.getExecutors()); assertNotNull(client.getHttpProvider()); assertNotNull(client.getLogger()); @@ -54,11 +57,10 @@ public IAuthenticationProvider getAuthenticationProvider() { @Test public void testOverrideOfDefaultLogger() { ILogger logger = createLogger(); - IGraphServiceClient client = GraphServiceClient.builder() // - .authenticationProvider(auth) // - .logger(logger) // + IGraphServiceClient client = GraphServiceClient.builder() + .logger(logger) + .authenticationProvider(getAuthProvider()) .buildClient(); - assertEquals(auth, client.getAuthenticationProvider()); assertNotNull(client.getExecutors()); assertNotNull(client.getHttpProvider()); assertNotNull(client.getLogger()); @@ -71,23 +73,13 @@ public void testOverrideOfDefaultLogger() { @Test public void testOverrideOfDefaultAuthenticationProvider() { - IAuthenticationProvider ap = new IAuthenticationProvider() { - - @Override - public void authenticateRequest(IHttpRequest request) { - // do nothing - } - }; - IGraphServiceClient client = GraphServiceClient.builder() // - .authenticationProvider(ap) // + IGraphServiceClient client = GraphServiceClient.builder() + .authenticationProvider(getAuthProvider()) .buildClient(); - assertEquals(ap, client.getAuthenticationProvider()); assertNotNull(client.getExecutors()); assertNotNull(client.getHttpProvider()); assertNotNull(client.getLogger()); assertNotNull(client.getSerializer()); - assertEquals(ap, - ((CoreHttpProvider) client.getHttpProvider()).getAuthenticationProvider()); } @Test @@ -122,12 +114,11 @@ public void shutdownBackgroundExecutors() { } }; - IGraphServiceClient client = GraphServiceClient.builder() // - .authenticationProvider(auth) // - .executors(ex) // + IGraphServiceClient client = GraphServiceClient.builder() + .executors(ex) + .authenticationProvider(getAuthProvider()) .buildClient(); assertEquals(ex, client.getExecutors()); - assertEquals(auth, client.getAuthenticationProvider()); assertNotNull(client.getHttpProvider()); assertNotNull(client.getLogger()); assertNotNull(client.getSerializer()); @@ -154,12 +145,11 @@ public T deserializeObject(String inputString, Class clazz) { return null; } }; - IGraphServiceClient client = GraphServiceClient.builder() // - .authenticationProvider(auth) // - .serializer(serializer) // + IGraphServiceClient client = GraphServiceClient.builder() + .serializer(serializer) + .authenticationProvider(getAuthProvider()) .buildClient(); assertEquals(serializer, client.getSerializer()); - assertEquals(auth, client.getAuthenticationProvider()); assertNotNull(client.getHttpProvider()); assertNotNull(client.getLogger()); assertNotNull(client.getExecutors()); @@ -195,85 +185,63 @@ public Result send(IHttpRequest request, return null; } - @Override - public IConnectionConfig getConnectionConfig() { - return null; - } - - @Override - public void setConnectionConfig(IConnectionConfig connectionConfig) { - // do nothing - } - @Override public Request getHttpRequest(IHttpRequest request, Class resultClass, BodyType serializable, IProgressCallback progress) throws ClientException { return null; } }; - IGraphServiceClient client = GraphServiceClient // - .builder() // - .authenticationProvider(auth) // - .httpProvider(hp) // + IGraphServiceClient client = GraphServiceClient + .builder() + .httpProvider(hp) .buildClient(); assertEquals(hp, client.getHttpProvider()); - assertEquals(auth, client.getAuthenticationProvider()); assertNotNull(client.getSerializer()); assertNotNull(client.getLogger()); assertNotNull(client.getExecutors()); } - @Test(expected = NullPointerException.class) - public void testAuthenticationProviderCannotBeNull() { - GraphServiceClient.builder().authenticationProvider(null); - } - @Test(expected = NullPointerException.class) public void testHttpProviderCannotBeNull() { - GraphServiceClient.builder().authenticationProvider(auth).httpProvider(null); + GraphServiceClient.builder().httpProvider(null); } @Test(expected = NullPointerException.class) public void testExecutorsCannotBeNull() { - GraphServiceClient.builder().authenticationProvider(auth).executors(null); + GraphServiceClient.builder().executors(null); } @Test(expected = NullPointerException.class) public void testLoggerCannotBeNull() { - GraphServiceClient.builder().authenticationProvider(auth).logger(null); + GraphServiceClient.builder().logger(null); } @Test public void connectionConfigTest() { - IAuthenticationProvider ap = new IAuthenticationProvider() { - @Override - public void authenticateRequest(IHttpRequest request) { - // do nothing - } - }; - IGraphServiceClient client = GraphServiceClient.builder() - .authenticationProvider(ap) - .buildClient(); - client.getHttpProvider().setConnectionConfig(new DefaultConnectionConfig()); - assertEquals(30_000, client.getHttpProvider().getConnectionConfig().getConnectTimeout()); - assertEquals(30_000, client.getHttpProvider().getConnectionConfig().getReadTimeout()); + ILogger logger = createLogger(); + IGraphServiceClient client = GraphServiceClient.builder() + .logger(logger) + .authenticationProvider(getAuthProvider()) + .buildClient(); + final CoreHttpProvider provider = (CoreHttpProvider)client.getHttpProvider(); + assertEquals(30_000, provider.getConnectionConfigInternal().getConnectTimeout()); + assertEquals(30_000, provider.getConnectionConfigInternal().getReadTimeout()); } @Test public void connectionConfigValuesChangeTest() { - IAuthenticationProvider ap = new IAuthenticationProvider() { - @Override - public void authenticateRequest(IHttpRequest request) { - // do nothing - } - }; - IGraphServiceClient client = GraphServiceClient.builder() - .authenticationProvider(ap) - .buildClient(); - client.getHttpProvider().getConnectionConfig().setConnectTimeout(20_000); - client.getHttpProvider().getConnectionConfig().setReadTimeout(10_000); - assertEquals(20_000, client.getHttpProvider().getConnectionConfig().getConnectTimeout()); - assertEquals(10_000, client.getHttpProvider().getConnectionConfig().getReadTimeout()); + final IConnectionConfig connConfig = new DefaultConnectionConfig(); + connConfig.setConnectTimeout(20_000); + connConfig.setReadTimeout(10_000); + ILogger logger = createLogger(); + IGraphServiceClient client = GraphServiceClient.builder() + .logger(logger) + .authenticationProvider(getAuthProvider()) + .connectionConfig(connConfig) + .buildClient(); + final CoreHttpProvider provider = (CoreHttpProvider)client.getHttpProvider(); + assertEquals(20_000, provider.getConnectionConfigInternal().getConnectTimeout()); + assertEquals(10_000, provider.getConnectionConfigInternal().getReadTimeout()); } private static ILogger createLogger() { diff --git a/src/test/java/com/microsoft/graph/core/MockBaseClient.java b/src/test/java/com/microsoft/graph/core/MockBaseClient.java index 21f3bef2417..f902c906651 100644 --- a/src/test/java/com/microsoft/graph/core/MockBaseClient.java +++ b/src/test/java/com/microsoft/graph/core/MockBaseClient.java @@ -1,6 +1,5 @@ package com.microsoft.graph.core; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.concurrency.IExecutors; import com.microsoft.graph.http.IHttpProvider; import com.microsoft.graph.logger.ILogger; @@ -10,17 +9,11 @@ public class MockBaseClient implements IBaseClient { private static final String DEFAULT_GRAPH_ENDPOINT = "https://graph.microsoft.com/v1.0"; private String mEndpoint; - private IAuthenticationProvider mAuthenticationProvider; private IExecutors mExecutors; private IHttpProvider mHttpProvider; private ILogger mLogger; private ISerializer mSerializer; - @Override - public IAuthenticationProvider getAuthenticationProvider() { - return mAuthenticationProvider; - } - @Override public String getServiceRoot() { if(mEndpoint == null) { @@ -67,10 +60,6 @@ public void setExecutors(final IExecutors executors) { mExecutors = executors; } - public void setAuthenticationProvider(final IAuthenticationProvider authenticationProvider) { - mAuthenticationProvider = authenticationProvider; - } - public void setHttpProvider(final IHttpProvider httpProvider) { mHttpProvider = httpProvider; } diff --git a/src/test/java/com/microsoft/graph/models/extensions/MultipartTests.java b/src/test/java/com/microsoft/graph/core/MultipartTests.java similarity index 98% rename from src/test/java/com/microsoft/graph/models/extensions/MultipartTests.java rename to src/test/java/com/microsoft/graph/core/MultipartTests.java index f03d661eb45..bde13c30aa8 100644 --- a/src/test/java/com/microsoft/graph/models/extensions/MultipartTests.java +++ b/src/test/java/com/microsoft/graph/core/MultipartTests.java @@ -1,4 +1,4 @@ -package com.microsoft.graph.models.extensions; +package com.microsoft.graph.core; import static org.junit.Assert.assertEquals; diff --git a/src/test/java/com/microsoft/graph/extensions/ManualExtensionsTests.java b/src/test/java/com/microsoft/graph/extensions/ManualExtensionsTests.java deleted file mode 100644 index 3dda64880fe..00000000000 --- a/src/test/java/com/microsoft/graph/extensions/ManualExtensionsTests.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.microsoft.graph.extensions; - -import org.junit.Assert; -import org.junit.Test; - -public class ManualExtensionsTests { - - @Test - public void testChunkedUploadRequestPreserved() { - final String className = "com.microsoft.graph.requests.extensions.ChunkedUploadRequest"; - try { - Class.forName(className); - } catch (ClassNotFoundException e) { - Assert.fail("Extension [" + className + "] not found."); - } - } - - @Test - public void testChunkedUploadResultPreserved() { - final String className = "com.microsoft.graph.requests.extensions.ChunkedUploadResult"; - try { - Class.forName(className); - } catch (ClassNotFoundException e) { - Assert.fail("Extension [" + className + "] not found."); - } - } -} diff --git a/src/test/java/com/microsoft/graph/functional/BatchTests.java b/src/test/java/com/microsoft/graph/functional/BatchTests.java index a0f1b7deb62..420b3879c3d 100644 --- a/src/test/java/com/microsoft/graph/functional/BatchTests.java +++ b/src/test/java/com/microsoft/graph/functional/BatchTests.java @@ -9,8 +9,7 @@ import com.microsoft.graph.content.MSBatchResponseContent; import com.microsoft.graph.http.HttpMethod; import com.microsoft.graph.httpcore.HttpClients; -import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; -import com.microsoft.graph.models.extensions.IGraphServiceClient; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.models.extensions.User; import com.microsoft.graph.requests.extensions.UserRequest; @@ -26,15 +25,10 @@ @Ignore public class BatchTests { - IGraphServiceClient graphServiceClient = null; - - @Before - public void setUp() { - final TestBase testBase = new TestBase(); - graphServiceClient = testBase.graphClient; - } @Test public void GetsABatchFromRequests() throws IOException{ + final TestBase testBase = new TestBase(); + final IGraphServiceClient graphServiceClient = testBase.graphClient; final MSBatchRequestContent batchContent = new MSBatchRequestContent(); final String meGetId = batchContent.addBatchRequestStep(graphServiceClient.me() .buildRequest() @@ -63,15 +57,14 @@ public void GetsABatchFromRequests() throws IOException{ .post(RequestBody.create(MediaType.parse("application/json"), serializedBatchContent)) .build(); - final OkHttpClient client = HttpClients.createDefault((ICoreAuthenticationProvider)graphServiceClient.getAuthenticationProvider()); - final Response batchResponse = client.newCall(batchRequest).execute(); - assertEquals(200, batchResponse.code()); - - final MSBatchResponseContent responseContent = new MSBatchResponseContent(batchResponse); - batchResponse.close(); + final OkHttpClient client = HttpClients.createDefault(testBase.getAuthenticationProvider()); + try (final Response batchResponse = client.newCall(batchRequest).execute()) { + assertEquals(200, batchResponse.code()); - assertEquals(400, responseContent.getResponseById(userPostId).code()); //400:we're not providing enough properties for the call to go through - assertEquals(200, responseContent.getResponseById(meGetId).code()); - assertEquals(200, responseContent.getResponseById(usersGetId).code()); + final MSBatchResponseContent responseContent = new MSBatchResponseContent(batchResponse); + assertEquals(400, responseContent.getResponseById(userPostId).code()); //400:we're not providing enough properties for the call to go through + assertEquals(200, responseContent.getResponseById(meGetId).code()); + assertEquals(200, responseContent.getResponseById(usersGetId).code()); + } } } diff --git a/src/test/java/com/microsoft/graph/functional/CalendarTests.java b/src/test/java/com/microsoft/graph/functional/CalendarTests.java index 725d1ea1e68..0efc9705336 100644 --- a/src/test/java/com/microsoft/graph/functional/CalendarTests.java +++ b/src/test/java/com/microsoft/graph/functional/CalendarTests.java @@ -10,7 +10,7 @@ import org.junit.Test; import com.microsoft.graph.models.extensions.Calendar; -import com.microsoft.graph.models.extensions.IGraphServiceClient; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.options.Option; import com.microsoft.graph.options.QueryOption; import com.microsoft.graph.requests.extensions.CalendarCollectionPage; diff --git a/src/test/java/com/microsoft/graph/functional/OneNoteTests.java b/src/test/java/com/microsoft/graph/functional/OneNoteTests.java index 8e33a87d4db..042c6d1e1b8 100644 --- a/src/test/java/com/microsoft/graph/functional/OneNoteTests.java +++ b/src/test/java/com/microsoft/graph/functional/OneNoteTests.java @@ -22,7 +22,7 @@ import org.junit.Ignore; import org.junit.Test; -import com.microsoft.graph.models.extensions.Multipart; +import com.microsoft.graph.core.Multipart; import com.microsoft.graph.models.extensions.Notebook; import com.microsoft.graph.models.extensions.OnenoteOperation; import com.microsoft.graph.models.extensions.OnenotePage; diff --git a/src/test/java/com/microsoft/graph/functional/TestBase.java b/src/test/java/com/microsoft/graph/functional/TestBase.java index 21886283e74..3390f244bc2 100644 --- a/src/test/java/com/microsoft/graph/functional/TestBase.java +++ b/src/test/java/com/microsoft/graph/functional/TestBase.java @@ -8,13 +8,16 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.core.Constants; -import com.microsoft.graph.core.DefaultClientConfig; -import com.microsoft.graph.core.IClientConfig; +import com.microsoft.graph.http.CoreHttpProvider; import com.microsoft.graph.http.IHttpRequest; -import com.microsoft.graph.models.extensions.IGraphServiceClient; -import com.microsoft.graph.requests.extensions.GraphServiceClient; +import com.microsoft.graph.httpcore.HttpClients; +import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; +import com.microsoft.graph.core.IGraphServiceClient; +import com.microsoft.graph.core.GraphServiceClient; + +import okhttp3.OkHttpClient; +import okhttp3.Request; public class TestBase { @@ -26,7 +29,6 @@ public class TestBase { private String grantType = "password"; private String tokenEndpoint = "https://login.microsoftonline.com/"+ Constants.TENANTID +"/oauth2/v2.0/token"; private String resourceId = "https%3A%2F%2Fgraph.microsoft.com%2F.default"; - private String accessToken = null; protected IGraphServiceClient graphClient = null; @@ -44,10 +46,10 @@ private void GetAuthenticatedClient() { if (graphClient == null) { try { - accessToken = GetAccessToken().replace("\"", ""); - IClientConfig mClientConfig = DefaultClientConfig.createWithAuthenticationProvider(new TestBaseAuthenticationProvider(accessToken)); - - graphClient = GraphServiceClient.fromConfig(mClientConfig); + final OkHttpClient httpClient = HttpClients.createDefault(getAuthenticationProvider()); + graphClient = GraphServiceClient.builder() + .httpClient(httpClient) + .buildClient(); } catch (Exception e) { @@ -55,15 +57,24 @@ private void GetAuthenticatedClient() } } } + public ICoreAuthenticationProvider getAuthenticationProvider() { + final String accessToken = GetAccessToken().replace("\"", ""); + return new ICoreAuthenticationProvider() { + @Override + public Request authenticateRequest(Request request) { + return request.newBuilder().addHeader("Authorization", "Bearer "+ accessToken).build(); + } + }; + } private String GetAccessToken() { try { - URL url = new URL(tokenEndpoint); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + final URL url = new URL(tokenEndpoint); + final HttpURLConnection conn = (HttpURLConnection) url.openConnection(); String line; - StringBuilder jsonString = new StringBuilder(); + final StringBuilder jsonString = new StringBuilder(); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); conn.setRequestMethod("POST"); @@ -71,22 +82,22 @@ private String GetAccessToken() conn.setDoOutput(true); conn.setInstanceFollowRedirects(false); conn.connect(); - OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); - String payload = String.format("grant_type=%1$s&scope=%2$s&client_id=%3$s&username=%4$s&password=%5$s&client_secret=%6$s", - grantType, - resourceId, - clientId, - username, - password, - clientSecret); - writer.write(payload); - writer.close(); + try (final OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), "UTF-8")) { + final String payload = String.format("grant_type=%1$s&scope=%2$s&client_id=%3$s&username=%4$s&password=%5$s&client_secret=%6$s", + grantType, + resourceId, + clientId, + username, + password, + clientSecret); + writer.write(payload); + } try { - BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); - while((line = br.readLine()) != null){ - jsonString.append(line); + try (final BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) { + while((line = br.readLine()) != null){ + jsonString.append(line); + } } - br.close(); } catch (Exception e) { throw new Error("Error reading authorization response: " + e.getLocalizedMessage()); } diff --git a/src/test/java/com/microsoft/graph/functional/TestBaseAuthenticationProvider.java b/src/test/java/com/microsoft/graph/functional/TestBaseAuthenticationProvider.java index 864bfe20a8c..adee6070189 100644 --- a/src/test/java/com/microsoft/graph/functional/TestBaseAuthenticationProvider.java +++ b/src/test/java/com/microsoft/graph/functional/TestBaseAuthenticationProvider.java @@ -1,12 +1,11 @@ package com.microsoft.graph.functional; -import com.microsoft.graph.authentication.IAuthenticationProvider; import com.microsoft.graph.http.IHttpRequest; import com.microsoft.graph.httpcore.ICoreAuthenticationProvider; import okhttp3.Request; -public class TestBaseAuthenticationProvider implements IAuthenticationProvider, ICoreAuthenticationProvider { +public class TestBaseAuthenticationProvider implements ICoreAuthenticationProvider { private String _accessToken; private String hostNameToCheck = "graph"; public TestBaseAuthenticationProvider(String accessToken) { @@ -19,12 +18,4 @@ public Request authenticateRequest(Request request) { else return request; } - - @Override - public void authenticateRequest(IHttpRequest request) { - if(request.getRequestUrl().getHost().toLowerCase().contains(hostNameToCheck)) - request.addHeader("Authorization", - "Bearer " + _accessToken); - } - } diff --git a/src/test/java/com/microsoft/graph/functional/UserTests.java b/src/test/java/com/microsoft/graph/functional/UserTests.java index 2e57b924777..68839f8b533 100644 --- a/src/test/java/com/microsoft/graph/functional/UserTests.java +++ b/src/test/java/com/microsoft/graph/functional/UserTests.java @@ -24,7 +24,7 @@ import com.microsoft.graph.models.extensions.Drive; import com.microsoft.graph.models.extensions.DriveItem; import com.microsoft.graph.models.extensions.Group; -import com.microsoft.graph.models.extensions.IGraphServiceClient; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.models.extensions.ProfilePhoto; import com.microsoft.graph.models.extensions.User; import com.microsoft.graph.options.HeaderOption; diff --git a/src/test/java/com/microsoft/graph/http/BaseCollectionRequestTests.java b/src/test/java/com/microsoft/graph/http/BaseCollectionRequestTests.java index 183a42d3156..4a382621942 100644 --- a/src/test/java/com/microsoft/graph/http/BaseCollectionRequestTests.java +++ b/src/test/java/com/microsoft/graph/http/BaseCollectionRequestTests.java @@ -3,6 +3,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.HashMap; @@ -10,9 +14,18 @@ import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; + +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; import com.google.gson.JsonObject; -import com.microsoft.graph.authentication.MockAuthenticationProvider; +import com.google.gson.JsonPrimitive; import com.microsoft.graph.concurrency.MockExecutors; import com.microsoft.graph.core.MockBaseClient; import com.microsoft.graph.logger.MockLogger; @@ -26,52 +39,43 @@ */ public class BaseCollectionRequestTests { - private MockAuthenticationProvider mAuthenticationProvider; private MockBaseClient mBaseClient; - private BaseCollectionRequest request; + private BaseCollectionRequest mRequest; @Before public void setUp() throws Exception { - mAuthenticationProvider = new MockAuthenticationProvider(); mBaseClient = new MockBaseClient(); - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - - MockHttpProvider mProvider = new MockHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{ \"id\": \"zzz\" }" + )) + .addHeader("Content-Type", "application/json") + .build(); + final OkHttpClient mockClient = BaseStreamRequestTests.getMockClient(response); + final JsonObject result = new JsonObject(); + result.add("id", new JsonPrimitive("zzz")); + CoreHttpProvider mProvider = new CoreHttpProvider(new MockSerializer(result, ""), new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); + new MockLogger(), + mockClient); mBaseClient.setHttpProvider(mProvider); - request = new BaseCollectionRequest("https://a.b.c/", mBaseClient, null, JsonObject.class,null){}; + mRequest = new BaseCollectionRequest("https://a.b.c/", mBaseClient, null, JsonObject.class,null){}; } @Test public void testSend() { - JsonObject result = (JsonObject)request.send(); + JsonObject result = (JsonObject)mRequest.send(); assertNotNull(result); assertEquals("zzz", result.get("id").getAsString()); } @Test public void testPost() { - JsonObject result = (JsonObject)request.post(null); + JsonObject result = (JsonObject)mRequest.post(null); assertNotNull(result); assertEquals("zzz", result.get("id").getAsString()); } @@ -110,12 +114,16 @@ public void testFunctionAndQueryParameters() { } @Test - public void testHttpMethod() { - assertNull(request.getHttpMethod()); - request.send(); - assertEquals(HttpMethod.GET, request.getHttpMethod()); - request.post(null); - assertEquals(HttpMethod.POST, request.getHttpMethod()); + public void testGetMethod() { + assertNull(mRequest.getHttpMethod()); + mRequest.send(); + assertEquals(HttpMethod.GET, mRequest.getHttpMethod()); + } + @Test + public void testPostMethod() { + assertNull(mRequest.getHttpMethod()); + mRequest.post(null); + assertEquals(HttpMethod.POST, mRequest.getHttpMethod()); } @Test diff --git a/src/test/java/com/microsoft/graph/http/BaseRequestTests.java b/src/test/java/com/microsoft/graph/http/BaseRequestTests.java index d3c59442783..34557ca234a 100644 --- a/src/test/java/com/microsoft/graph/http/BaseRequestTests.java +++ b/src/test/java/com/microsoft/graph/http/BaseRequestTests.java @@ -14,76 +14,74 @@ import org.junit.Before; import org.junit.Test; +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; + import com.google.gson.JsonObject; -//import com.microsoft.graph.BuildConfig; -import com.microsoft.graph.authentication.MockAuthenticationProvider; +import com.google.gson.JsonPrimitive; import com.microsoft.graph.concurrency.ICallback; import com.microsoft.graph.concurrency.MockExecutors; import com.microsoft.graph.core.ClientException; import com.microsoft.graph.core.MockBaseClient; import com.microsoft.graph.logger.MockLogger; +import com.microsoft.graph.core.IGraphServiceClient; import com.microsoft.graph.options.FunctionOption; import com.microsoft.graph.options.Option; import com.microsoft.graph.options.QueryOption; +import com.microsoft.graph.core.GraphServiceClient; import com.microsoft.graph.serializer.MockSerializer; /** * Test cases for {@see BaseRequest} */ public class BaseRequestTests { - private MockAuthenticationProvider mAuthenticationProvider; - private MockBaseClient mBaseClient; - private BaseRequest request; + private IGraphServiceClient mBaseClient; + private BaseRequest mRequest; private JsonObject callbackJsonObject; @Before public void setUp() throws Exception { - mAuthenticationProvider = new MockAuthenticationProvider(); - mBaseClient = new MockBaseClient(); - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - MockHttpProvider mProvider = new MockHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, - new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - mBaseClient.setHttpProvider(mProvider); - request = new BaseRequest("https://a.b.c/", mBaseClient, null,null){}; + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{ \"id\": \"zzz\" }" + )) + .addHeader("Content-Type", "application/json") + .build(); + final OkHttpClient mockClient = BaseStreamRequestTests.getMockClient(response); + final JsonObject result = new JsonObject(); + result.add("id", new JsonPrimitive("zzz")); + mBaseClient = GraphServiceClient.builder() + .httpClient(mockClient) + .buildClient(); + mRequest = new BaseRequest("https://a.b.c/", mBaseClient, null,JsonObject.class){}; } @Test public void testSend() { - JsonObject result = request.send(HttpMethod.GET, null); + final JsonObject result = mRequest.send(HttpMethod.GET, null); assertNotNull(result); assertEquals("zzz", result.get("id").getAsString()); } @Test - public void testSendWithCallback() { + public void testSendWithCallback() throws InterruptedException { final AtomicBoolean success = new AtomicBoolean(false); final AtomicBoolean failure = new AtomicBoolean(false); - ICallback callback = new ICallback() { + final ICallback callback = new ICallback() { @Override - public void success(Object o) { + public void success(JsonObject o) { success.set(true); - callbackJsonObject = (JsonObject)o; + callbackJsonObject = o; } @Override @@ -91,7 +89,8 @@ public void failure(ClientException ex) { failure.set(true); } }; - request.send(HttpMethod.GET, callback,null); + mRequest.send(HttpMethod.GET, callback,null); + Thread.sleep(1000L); // running on different threads can make it so the asserts get called before the callback assertTrue(success.get()); assertFalse(failure.get()); assertNotNull(callbackJsonObject); @@ -153,8 +152,8 @@ public void testHeader() { @Test public void testProtectedProperties() { - assertEquals(0, request.functionOptions.size()); - assertEquals(0, request.queryOptions.size()); + assertEquals(0, mRequest.functionOptions.size()); + assertEquals(0, mRequest.queryOptions.size()); final Option q1 = new QueryOption("q1","option1 "); final Option f1 = new FunctionOption("f1","option2"); final BaseRequest request = new BaseRequest("https://a.b.c/", null, Arrays.asList(q1,f1), null){}; diff --git a/src/test/java/com/microsoft/graph/http/BaseStreamRequestTests.java b/src/test/java/com/microsoft/graph/http/BaseStreamRequestTests.java index 3d79f5fde05..82b55a34b4a 100644 --- a/src/test/java/com/microsoft/graph/http/BaseStreamRequestTests.java +++ b/src/test/java/com/microsoft/graph/http/BaseStreamRequestTests.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -13,7 +14,16 @@ import org.junit.Before; import org.junit.Test; -import com.microsoft.graph.authentication.MockAuthenticationProvider; +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; + +import static org.mockito.Mockito.*; + import com.microsoft.graph.concurrency.ICallback; import com.microsoft.graph.concurrency.MockExecutors; import com.microsoft.graph.core.ClientException; @@ -26,71 +36,52 @@ */ public class BaseStreamRequestTests { - private MockAuthenticationProvider mAuthenticationProvider; private MockBaseClient mBaseClient; @Before public void setUp() throws Exception { - mAuthenticationProvider = new MockAuthenticationProvider(); mBaseClient = new MockBaseClient(); } @Test - public void testSend() { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/octet-stream"); - return map; - } - }; - DefaultHttpProvider mProvider = new DefaultHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, + public void testSend() throws IOException { + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/octet-stream"), + "{ \"id\": \"zzz\" }" + )) + .build(); + + final OkHttpClient mockClient = getMockClient(response); + CoreHttpProvider mProvider = new CoreHttpProvider(new MockSerializer(null, ""), new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); + new MockLogger(), + mockClient); mBaseClient.setHttpProvider(mProvider); final BaseStreamRequest request = new BaseStreamRequest("https://a.b.c/", mBaseClient,null, null){}; request.send(); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); } @Test - public void testSendWithCallback() { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - DefaultHttpProvider mProvider = new DefaultHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, + public void testSendWithCallback() throws IOException { + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{ \"id\": \"zzz\" }" + )) + .build(); + + final OkHttpClient mockClient = getMockClient(response); + CoreHttpProvider mProvider = new CoreHttpProvider(new MockSerializer(null, ""), new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); + new MockLogger(), + mockClient); mBaseClient.setHttpProvider(mProvider); final AtomicBoolean success = new AtomicBoolean(false); final AtomicBoolean failure = new AtomicBoolean(false); @@ -109,34 +100,25 @@ public void failure(ClientException ex) { request.send(callback); assertTrue(success.get()); assertFalse(failure.get()); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); } @Test - public void testSendWithContentAndCallback() { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - DefaultHttpProvider mProvider = new DefaultHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, + public void testSendWithContentAndCallback() throws IOException { + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{ \"id\": \"zzz\" }" + )) + .build(); + + final OkHttpClient mockClient = getMockClient(response); + CoreHttpProvider mProvider = new CoreHttpProvider(new MockSerializer(null, ""), new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); + new MockLogger(), + mockClient); mBaseClient.setHttpProvider(mProvider); final AtomicBoolean success = new AtomicBoolean(false); final AtomicBoolean failure = new AtomicBoolean(false); @@ -155,38 +137,29 @@ public void failure(ClientException ex) { request.send(new byte[]{1, 2, 3, 4},callback); assertTrue(success.get()); assertFalse(failure.get()); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); } @Test - public void testSendWithContent() { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - DefaultHttpProvider mProvider = new DefaultHttpProvider(new MockSerializer(null, ""), - mAuthenticationProvider, + public void testSendWithContent() throws IOException { + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(200).message("OK").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{ \"id\": \"zzz\" }" + )) + .build(); + + final OkHttpClient mockClient = getMockClient(response); + + CoreHttpProvider mProvider = new CoreHttpProvider(new MockSerializer(null, ""), new MockExecutors(), - new MockLogger()); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); + new MockLogger(), + mockClient); mBaseClient.setHttpProvider(mProvider); final BaseStreamRequest request = new BaseStreamRequest("https://a.b.c/", mBaseClient,null, InputStream.class){}; request.send(new byte[]{1, 2, 3, 4}); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); } @Test @@ -198,5 +171,11 @@ public void testBaseMethod() { assertNull(request.getHttpMethod()); assertEquals(2, request.getOptions().size()); } - + public static OkHttpClient getMockClient(final Response response) throws IOException { + final OkHttpClient mockClient = mock(OkHttpClient.class); + final Call remoteCall = mock(Call.class); + when(remoteCall.execute()).thenReturn(response); + when(mockClient.newCall(any())).thenReturn(remoteCall); + return mockClient; + } } diff --git a/src/test/java/com/microsoft/graph/http/CoreHttpProviderTests.java b/src/test/java/com/microsoft/graph/http/CoreHttpProviderTests.java index dea29b50140..274401f858b 100644 --- a/src/test/java/com/microsoft/graph/http/CoreHttpProviderTests.java +++ b/src/test/java/com/microsoft/graph/http/CoreHttpProviderTests.java @@ -12,9 +12,10 @@ import org.junit.Ignore; import org.junit.Test; +import okhttp3.OkHttpClient; + import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; -import com.microsoft.graph.authentication.MockAuthenticationProvider; import com.microsoft.graph.concurrency.MockExecutors; import com.microsoft.graph.core.GraphErrorCodes; import com.microsoft.graph.logger.LoggerLevel; @@ -26,7 +27,6 @@ @Ignore public class CoreHttpProviderTests { - private MockAuthenticationProvider mAuthenticationProvider; private CoreHttpProvider mProvider; @Test @@ -39,7 +39,7 @@ public void testErrorResponse() throws Exception { toSerialize.error.message = expectedMessage; toSerialize.error.innererror = null; - setDefaultHttpProvider(toSerialize); + setCoreHttpProvider(toSerialize); try { mProvider.send(new MockHttpRequest(), DriveItem.class, null); fail("Expected exception in previous statement"); @@ -58,17 +58,17 @@ public void testVerboseErrorResponse() throws Exception { toSerialize.error.code = expectedErrorCode.toString(); toSerialize.error.message = expectedMessage; toSerialize.error.innererror = null; - JsonObject raw = new JsonObject(); + final JsonObject raw = new JsonObject(); raw.add("response", new JsonPrimitive("The raw request was invalid")); toSerialize.rawObject = raw; - MockLogger logger = new MockLogger(); + final MockLogger logger = new MockLogger(); logger.setLoggingLevel(LoggerLevel.DEBUG); mProvider = new CoreHttpProvider(new MockSerializer(toSerialize, ""), - mAuthenticationProvider = new MockAuthenticationProvider(), new MockExecutors(), - logger); + logger, + new OkHttpClient.Builder().build()); try { mProvider.send(new MockHttpRequest(), DriveItem.class, null); @@ -82,19 +82,19 @@ public void testVerboseErrorResponse() throws Exception { @Test public void testHasHeaderReturnsTrue() { HeaderOption h = new HeaderOption("name", "value"); - assertTrue(DefaultHttpProvider.hasHeader(Arrays.asList(h), "name")); + assertTrue(CoreHttpProvider.hasHeader(Arrays.asList(h), "name")); } @Test public void testHasHeaderReturnsTrueWhenDifferentCase() { HeaderOption h = new HeaderOption("name", "value"); - assertTrue(DefaultHttpProvider.hasHeader(Arrays.asList(h), "NAME")); + assertTrue(CoreHttpProvider.hasHeader(Arrays.asList(h), "NAME")); } @Test public void testHasHeaderReturnsFalse() { HeaderOption h = new HeaderOption("name", "value"); - assertFalse(DefaultHttpProvider.hasHeader(Arrays.asList(h), "blah")); + assertFalse(CoreHttpProvider.hasHeader(Arrays.asList(h), "blah")); } @@ -102,11 +102,11 @@ public void testHasHeaderReturnsFalse() { * Configures the http provider for test cases * @param toSerialize The object to serialize */ - private void setDefaultHttpProvider(final Object toSerialize) { + private void setCoreHttpProvider(final Object toSerialize) { mProvider = new CoreHttpProvider(new MockSerializer(toSerialize, ""), - mAuthenticationProvider = new MockAuthenticationProvider(), new MockExecutors(), - new MockLogger()); + new MockLogger(), + new OkHttpClient.Builder().build()); } } diff --git a/src/test/java/com/microsoft/graph/http/DefaultConnectionFactoryTests.java b/src/test/java/com/microsoft/graph/http/DefaultConnectionFactoryTests.java deleted file mode 100644 index 338d3faf910..00000000000 --- a/src/test/java/com/microsoft/graph/http/DefaultConnectionFactoryTests.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.microsoft.graph.http; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.junit.Before; -import org.junit.Test; - -/** - * Test cases for {@see DefaultConnectionFactory} - */ -public class DefaultConnectionFactoryTests { - - private IConnection mConnection; - - @Before - public void setUp() throws Exception { - mConnection = new DefaultConnectionFactory().createFromRequest(new MockHttpRequest()); - } - - @Test - public void testNotNull() { - assertNotNull(mConnection); - } - - @Test - public void testDefaultRequestMethod() { - assertEquals("GET", mConnection.getRequestMethod()); - } - -} diff --git a/src/test/java/com/microsoft/graph/http/DefaultHttpProviderTests.java b/src/test/java/com/microsoft/graph/http/DefaultHttpProviderTests.java deleted file mode 100644 index ae4c671a276..00000000000 --- a/src/test/java/com/microsoft/graph/http/DefaultHttpProviderTests.java +++ /dev/null @@ -1,384 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2015 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.InputStream; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; - -import org.junit.Test; - -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; -import com.microsoft.graph.authentication.MockAuthenticationProvider; -import com.microsoft.graph.concurrency.IProgressCallback; -import com.microsoft.graph.concurrency.MockExecutors; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.core.GraphErrorCodes; -import com.microsoft.graph.logger.LoggerLevel; -import com.microsoft.graph.logger.MockLogger; -import com.microsoft.graph.models.extensions.Drive; -import com.microsoft.graph.models.extensions.DriveItem; -import com.microsoft.graph.options.HeaderOption; -import com.microsoft.graph.serializer.MockSerializer; - -/** - * Test cases for {@see DefaultHttpProvider} - */ -public class DefaultHttpProviderTests { - - private MockAuthenticationProvider mAuthenticationProvider; - private DefaultHttpProvider mProvider; - - @Test - public void testNoContentType() throws Exception { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; - setDefaultHttpProvider(null); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - try { - mProvider.send(new MockHttpRequest(), Drive.class, null); - fail("Expected exception"); - } catch (final ClientException ce) { - if (!(ce.getCause() instanceof NullPointerException)) { - fail("Wrong inner exception!"); - } - } - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testDriveResponse() throws Exception { - final String driveId = "driveId"; - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - final Drive expectedDrive = new Drive(); - expectedDrive.id = driveId; - setDefaultHttpProvider(expectedDrive); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - final Drive drive = mProvider.send(new MockHttpRequest(), Drive.class, null); - - assertEquals(driveId, drive.id); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testBinaryResponse() throws Exception { - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/octet-stream"); - return map; - } - }; - setDefaultHttpProvider(null); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - mProvider.send(new MockHttpRequest(), InputStream.class, null); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testPostItem() throws Exception { - final String itemId = "itemId"; - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - - final DriveItem expectedItem = new DriveItem(); - expectedItem.id = itemId; - setDefaultHttpProvider(expectedItem); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - final DriveItem item = mProvider.send(new MockHttpRequest(), DriveItem.class, new DriveItem()); - - assertEquals(itemId, item.id); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testPostByte() throws Exception { - final String itemId = "itemId"; - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 200; - } - - @Override - public String getJsonResponse() { - return "{ \"id\": \"zzz\" }"; - } - - @Override - public Map getHeaders() { - final HashMap map = new HashMap<>(); - map.put("Content-Type", "application/json"); - return map; - } - }; - final DriveItem expectedItem = new DriveItem(); - expectedItem.id = itemId; - setDefaultHttpProvider(expectedItem); - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - final AtomicBoolean progress = new AtomicBoolean(false); - final AtomicBoolean success = new AtomicBoolean(false); - final AtomicBoolean failure = new AtomicBoolean(false); - final IProgressCallback progressCallback = new IProgressCallback() { - @Override - public void progress(final long current, final long max) { - progress.set(true); - } - - @Override - public void success(final DriveItem item) { - success.set(true); - } - - @Override - public void failure(final ClientException ex) { - failure.set(true); - } - }; - - mProvider.send(new MockHttpRequest(), progressCallback, DriveItem.class, new byte[]{1, 2, 3, 4}); - - assertTrue(progress.get()); - assertTrue(success.get()); - assertEquals(1, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testErrorResponse() throws Exception { - final GraphErrorCodes expectedErrorCode = GraphErrorCodes.INVALID_REQUEST; - final String expectedMessage = "Test error!"; - final GraphErrorResponse toSerialize = new GraphErrorResponse(); - toSerialize.error = new GraphError(); - toSerialize.error.code = expectedErrorCode.toString(); - toSerialize.error.message = expectedMessage; - toSerialize.error.innererror = null; - - setDefaultHttpProvider(toSerialize); - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 415; - } - - @Override - public String getJsonResponse() { - return "{}"; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - try { - mProvider.send(new MockHttpRequest(), DriveItem.class, null); - fail("Expected exception in previous statement"); - } catch (final GraphServiceException e) { - assertTrue(e.getMessage().indexOf("truncated") > 0); - assertEquals(expectedMessage, e.getServiceError().message); - } - } - - @Test - public void testVerboseErrorResponse() throws Exception { - final GraphErrorCodes expectedErrorCode = GraphErrorCodes.INVALID_REQUEST; - final String expectedMessage = "Test error!"; - final GraphErrorResponse toSerialize = new GraphErrorResponse(); - toSerialize.error = new GraphError(); - toSerialize.error.code = expectedErrorCode.toString(); - toSerialize.error.message = expectedMessage; - toSerialize.error.innererror = null; - JsonObject raw = new JsonObject(); - raw.add("response", new JsonPrimitive("The raw request was invalid")); - toSerialize.rawObject = raw; - - MockLogger logger = new MockLogger(); - logger.setLoggingLevel(LoggerLevel.DEBUG); - - mProvider = new DefaultHttpProvider(new MockSerializer(toSerialize, ""), - mAuthenticationProvider = new MockAuthenticationProvider(), - new MockExecutors(), - logger); - - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 415; - } - - @Override - public String getJsonResponse() { - return "{}"; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - try { - mProvider.send(new MockHttpRequest(), DriveItem.class, null); - fail("Expected exception in previous statement"); - } catch (final GraphServiceException e) { - assertFalse(e.getMessage().indexOf("truncated") > 0); - assertTrue(e.getMessage().indexOf("The raw request was invalid") > 0); - } - } - - @Test - public void testBodyLessResponse() throws Exception { - final int[] codes = new int[] {204, 304 }; - final AtomicInteger currentCode = new AtomicInteger(0); - setDefaultHttpProvider(null); - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return codes[currentCode.get()]; - } - - @Override - public String getJsonResponse() { - return null; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; - mProvider.setConnectionFactory(new MockConnectionFactory(new MockConnection(data))); - - for (@SuppressWarnings("unused") final int ignored : codes) { - DriveItem result = mProvider.send(new MockHttpRequest(), DriveItem.class, null); - currentCode.incrementAndGet(); - assertNull(result); - } - assertEquals(codes.length, mAuthenticationProvider.getInterceptionCount()); - } - - @Test - public void testHasHeaderReturnsTrue() { - HeaderOption h = new HeaderOption("name", "value"); - assertTrue(DefaultHttpProvider.hasHeader(Arrays.asList(h), "name")); - } - - @Test - public void testHasHeaderReturnsTrueWhenDifferentCase() { - HeaderOption h = new HeaderOption("name", "value"); - assertTrue(DefaultHttpProvider.hasHeader(Arrays.asList(h), "NAME")); - } - - @Test - public void testHasHeaderReturnsFalse() { - HeaderOption h = new HeaderOption("name", "value"); - assertFalse(DefaultHttpProvider.hasHeader(Arrays.asList(h), "blah")); - } - - - /** - * Configures the http provider for test cases - * @param toSerialize The object to serialize - */ - private void setDefaultHttpProvider(final Object toSerialize) { - mProvider = new DefaultHttpProvider(new MockSerializer(toSerialize, ""), - mAuthenticationProvider = new MockAuthenticationProvider(), - new MockExecutors(), - new MockLogger()); - } -} diff --git a/src/test/java/com/microsoft/graph/http/GraphServiceExceptionTests.java b/src/test/java/com/microsoft/graph/http/GraphServiceExceptionTests.java index 58485bb246b..2343c97a5c2 100644 --- a/src/test/java/com/microsoft/graph/http/GraphServiceExceptionTests.java +++ b/src/test/java/com/microsoft/graph/http/GraphServiceExceptionTests.java @@ -13,6 +13,12 @@ import org.junit.Test; +import okhttp3.MediaType; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; + import com.microsoft.graph.core.GraphErrorCodes; import com.microsoft.graph.logger.DefaultLogger; @@ -47,29 +53,22 @@ public void testVerboseError() { } @Test - public void testCreateFromConnection() { + public void testcreateFromResponse() { DefaultLogger logger = new DefaultLogger(); GraphServiceException exception = null; Boolean success = false; Boolean failure = false; - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 401; - } - - @Override - public String getJsonResponse() { - return "{}"; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; + final Response response = new Response.Builder() + .request(new Request.Builder().url("https://a.b.c").build()) + .protocol(Protocol.HTTP_1_1) + .code(401).message("Unauthorized").body( + ResponseBody.create( + MediaType.parse("application/json"), + "{}" + )) + .build(); try{ - exception = GraphServiceException.createFromConnection(new MockHttpRequest(),null,null,new MockConnection(data){},logger); + exception = GraphServiceException.createFromResponse(new MockHttpRequest(),null,null,response,logger); success = true; }catch (IOException ex){ failure = true; @@ -82,47 +81,4 @@ public Map getHeaders() { assertTrue(message.indexOf("Error code: Unable to parse error response message") == 0); assertTrue(message.indexOf("http://localhost") > 0); } - - @Test - public void testNullConnection() { - DefaultLogger logger = new DefaultLogger(); - GraphServiceException exception = null; - Boolean success = false; - Boolean failure = false; - final ITestConnectionData data = new ITestConnectionData() { - @Override - public int getRequestCode() { - return 401; - } - - @Override - public String getJsonResponse() { - return "{}"; - } - - @Override - public Map getHeaders() { - return new HashMap<>(); - } - }; - try{ - exception = GraphServiceException.createFromConnection(new MockHttpRequest(),null,null,new MockConnection(data) { - @Override - public InputStream getInputStream() throws IOException { - return null; - } - },logger); - success = true; - }catch (IOException ex){ - failure = true; - } - - assertTrue(success); - assertFalse(failure); - - String message = exception.getMessage(); - assertTrue(message.indexOf("Error code: Unable to parse error response message") == 0); - assertTrue(message.indexOf("http://localhost") > 0); - } - } diff --git a/src/test/java/com/microsoft/graph/http/MockConnection.java b/src/test/java/com/microsoft/graph/http/MockConnection.java deleted file mode 100644 index 7478260a467..00000000000 --- a/src/test/java/com/microsoft/graph/http/MockConnection.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.microsoft.graph.http; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Mock for {@see IConnection} - */ -public class MockConnection implements IConnection { - - private final ITestConnectionData mData; - private HashMap mHeaders = new HashMap<>(); - private Boolean mFollowRedirects; - private final String JSON_ENCODING = "UTF-8"; - - public MockConnection(ITestConnectionData data) { - mData = data; - } - - @Override - public void setFollowRedirects(boolean followRedirects) { - mFollowRedirects = followRedirects; - } - - @Override - public void addRequestHeader(String headerName, String headerValue) { - mHeaders.put(headerName, headerValue); - } - - @Override - public OutputStream getOutputStream() throws IOException { - return new ByteArrayOutputStream(); - } - - @Override - public InputStream getInputStream() throws IOException { - return new ByteArrayInputStream(mData.getJsonResponse().getBytes(JSON_ENCODING)); - } - - @Override - public int getResponseCode() throws IOException { - return mData.getRequestCode(); - } - - @Override - public String getResponseMessage() throws IOException { - return mData.getJsonResponse(); - } - - @Override - public void close() { - - } - - @Override - public Map getHeaders() { - return mData.getHeaders(); - } - - @Override - public String getRequestMethod() { - return "GET"; - } - - @Override - public int getContentLength() { - return mData.getJsonResponse().length(); - } - - @Override - public void setContentLength(int length) { - // noop - } - - @Override - public void setConnectTimeout(int connectionTimeoutMilliseconds) { - // noop - } - - @Override - public void setReadTimeout(int readTimeoutMilliseconds) { - // noop - } - - @Override - public Map> getResponseHeaders() { - Map> headers = new HashMap>(); - ArrayList headerValues = new ArrayList(); - headerValues.add("value1"); - headers.put("header1", headerValues); - - return headers; - } - -} diff --git a/src/test/java/com/microsoft/graph/http/MockConnectionFactory.java b/src/test/java/com/microsoft/graph/http/MockConnectionFactory.java deleted file mode 100644 index 5badfa22669..00000000000 --- a/src/test/java/com/microsoft/graph/http/MockConnectionFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.microsoft.graph.http; - -import java.io.IOException; - -/** - * Mock for {@see IConnectionFactory} - */ -public class MockConnectionFactory implements IConnectionFactory { - - private final IConnection mConnection; - - public MockConnectionFactory(IConnection connection) { - mConnection = connection; - } - - @Override - public IConnection createFromRequest(IHttpRequest request) throws IOException { - return mConnection; - } -} diff --git a/src/test/java/com/microsoft/graph/http/MockHttpProvider.java b/src/test/java/com/microsoft/graph/http/MockHttpProvider.java deleted file mode 100644 index 7c2d1e18104..00000000000 --- a/src/test/java/com/microsoft/graph/http/MockHttpProvider.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.microsoft.graph.http; - -import java.io.BufferedInputStream; - -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.microsoft.graph.authentication.IAuthenticationProvider; -import com.microsoft.graph.authentication.MockAuthenticationProvider; -import com.microsoft.graph.concurrency.ICallback; -import com.microsoft.graph.concurrency.IExecutors; -import com.microsoft.graph.concurrency.IProgressCallback; -import com.microsoft.graph.concurrency.MockExecutors; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.core.DefaultConnectionConfig; -import com.microsoft.graph.core.IConnectionConfig; -import com.microsoft.graph.logger.ILogger; -import com.microsoft.graph.logger.MockLogger; -import com.microsoft.graph.serializer.ISerializer; -import com.microsoft.graph.serializer.MockSerializer; - -import okhttp3.Request; - -/** - * Mock for {@see IHttpProvider} - */ -public class MockHttpProvider implements IHttpProvider { - - private final ISerializer mSerializer; - private final IAuthenticationProvider mAuthenticationProvider; - private final IExecutors mExecutors; - private final ILogger mLogger; - private IConnectionFactory mConnectionFactory; - private IConnectionConfig connectionConfig; - - @Override - public ISerializer getSerializer() { - return null; - } - - public MockHttpProvider() { - mLogger = new MockLogger(); - mSerializer = new MockSerializer(null,""); - mAuthenticationProvider = new MockAuthenticationProvider(); - mExecutors = new MockExecutors(); - mConnectionFactory = new DefaultConnectionFactory(); - } - - public MockHttpProvider(final ISerializer serializer, - final IAuthenticationProvider authenticationProvider, - final IExecutors executors, - final ILogger logger) { - mSerializer = serializer; - mAuthenticationProvider = authenticationProvider; - mExecutors = executors; - mLogger = logger; - mConnectionFactory = new DefaultConnectionFactory(); - } - - - @Override - public void send(IHttpRequest request, - ICallback callback, - Class resultClass, - BodyType serializable) { - Result result = null; - try{ - IConnection connection = mConnectionFactory.createFromRequest(request); - if(connection.getResponseCode() == 200) { - if(connection.getHeaders().containsKey("Content-Type")) { - if (connection.getHeaders().get("Content-Type").equals("application/json")){ - JsonObject jsonObject = JsonParser.parseString(connection.getResponseMessage()).getAsJsonObject(); - result = (Result) jsonObject; - }else if (connection.getHeaders().get("Content-Type").equals("application/octet-stream")) { - result = (Result) new BufferedInputStream(connection.getInputStream()); - } - } - } - } catch (Exception ex){ - final ClientException clientException = new ClientException("Error during http request", - ex); - callback.failure(clientException); - } - callback.success(result); - } - - @Override - public Result send(IHttpRequest request, - Class resultClass, - BodyType serializable) throws ClientException { - try{ - IConnection connection = mConnectionFactory.createFromRequest(request); - if(connection.getResponseCode() == 200) { - if(connection.getHeaders().containsKey("Content-Type")) { - if (connection.getHeaders().get("Content-Type").equals("application/json")){ - JsonObject jsonObject = JsonParser.parseString(connection.getResponseMessage()).getAsJsonObject(); - return (Result) jsonObject; - }else if (connection.getHeaders().get("Content-Type").equals("application/octet-stream")) { - return (Result) new BufferedInputStream(connection.getInputStream()); - } - } - } - } catch (Exception ex){ - final ClientException clientException = new ClientException("Error during http request", - ex); - throw clientException; - } - return null; - } - - @Override - public Result send(IHttpRequest request, Class resultClass, BodyType serializable, IStatefulResponseHandler handler) throws ClientException { - return null; - } - - void setConnectionFactory(final IConnectionFactory factory) { - mConnectionFactory = factory; - } - - public IConnectionConfig getConnectionConfig() { - if(this.connectionConfig == null) { - this.connectionConfig = new DefaultConnectionConfig(); - } - return this.connectionConfig; - } - - public void setConnectionConfig(IConnectionConfig connectionConfig) { - this.connectionConfig = connectionConfig; - } - - @Override - public Request getHttpRequest(IHttpRequest request, Class resultClass, - BodyType serializable, IProgressCallback progress) throws ClientException { - return null; - } -} diff --git a/src/test/java/com/microsoft/graph/http/MockInterceptor.java b/src/test/java/com/microsoft/graph/http/MockInterceptor.java deleted file mode 100644 index 2289664956f..00000000000 --- a/src/test/java/com/microsoft/graph/http/MockInterceptor.java +++ /dev/null @@ -1,51 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2015 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import java.util.concurrent.atomic.AtomicInteger; - -import com.microsoft.graph.authentication.IAuthenticationProvider; - -/** - * Mock {@see IAuthenticationProvider} - */ -public class MockInterceptor implements IAuthenticationProvider { - - /** - * Interception counter - */ - private AtomicInteger mInterceptionCount = new AtomicInteger(0); - - @Override - public void authenticateRequest(final IHttpRequest request) { - mInterceptionCount.incrementAndGet(); - } - - /** - * Gets the number of intercepted requests - * @return The number of intercepted requests - */ - public int getInterceptionCount() { - return mInterceptionCount.get(); - } -} diff --git a/src/test/java/com/microsoft/graph/http/MockRequest.java b/src/test/java/com/microsoft/graph/http/MockRequest.java deleted file mode 100644 index 9059eb7be7f..00000000000 --- a/src/test/java/com/microsoft/graph/http/MockRequest.java +++ /dev/null @@ -1,151 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright (c) 2015 Microsoft Corporation -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// ------------------------------------------------------------------------------ - -package com.microsoft.graph.http; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import com.microsoft.graph.concurrency.IProgressCallback; -import com.microsoft.graph.core.ClientException; -import com.microsoft.graph.httpcore.middlewareoption.IShouldRedirect; -import com.microsoft.graph.httpcore.middlewareoption.IShouldRetry; -import com.microsoft.graph.httpcore.middlewareoption.RedirectOptions; -import com.microsoft.graph.httpcore.middlewareoption.RetryOptions; -import com.microsoft.graph.options.HeaderOption; -import com.microsoft.graph.options.Option; - -import okhttp3.Request; - -/** - * Mock request for {@see IHttpRequest} - */ -class MockRequest implements IHttpRequest { - - @Override - public URL getRequestUrl() { - try { - return new URL("http://localhost"); - } catch (final MalformedURLException ignored) { - } - return null; - } - - @Override - public HttpMethod getHttpMethod() { - return HttpMethod.GET; - } - - @Override - public List getHeaders() { - return new ArrayList<>(); - } - - @Override - public List