// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`OpenAPI Gateway Java With Docs Unit Tests With Docs 1`] = ` Object { ".gitattributes": "# ~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\". /.gitattributes linguist-generated /.github/workflows/pull-request-lint.yml linguist-generated /.gitignore linguist-generated /.projen/** linguist-generated /.projen/deps.json linguist-generated /.projen/files.json linguist-generated /.projen/tasks.json linguist-generated /generated/README.md linguist-generated /pom.xml linguist-generated", ".github/workflows/pull-request-lint.yml": "# ~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\". name: pull-request-lint on: pull_request_target: types: - labeled - opened - synchronize - reopened - ready_for_review - edited jobs: validate: name: Validate PR title runs-on: ubuntu-latest permissions: pull-requests: write steps: - uses: amannn/action-semantic-pull-request@v5.0.2 env: GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }} with: types: |- feat fix chore requireScope: false ", ".gitignore": "# ~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\". node_modules/ !/.gitattributes !/.projen/tasks.json !/.projen/deps.json !/.projen/files.json !/.github/workflows/pull-request-lint.yml !/pom.xml .classpath .project .settings target dist/java !/generated/README.md ", ".projen/deps.json": Object { "//": "~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\".", "dependencies": Array [ Object { "metadata": Object { "configuration": Object { "source": "1.8", "target": "1.8", }, }, "name": "org.apache.maven.plugins/maven-compiler-plugin", "type": "build", "version": "3.8.1", }, Object { "metadata": Object { "configuration": Object { "rules": Array [ Object { "requireMavenVersion": Array [ Object { "version": "3.6", }, ], }, ], }, "executions": Array [ Object { "goals": Array [ "enforce", ], "id": "enforce-maven", }, ], }, "name": "org.apache.maven.plugins/maven-enforcer-plugin", "type": "build", "version": "3.0.0-M3", }, Object { "metadata": Object { "configuration": Object { "archive": Object { "index": true, "manifest": Object { "addDefaultImplementationEntries": true, "addDefaultSpecificationEntries": true, }, }, }, }, "name": "org.apache.maven.plugins/maven-jar-plugin", "type": "build", "version": "3.2.0", }, Object { "metadata": Object { "configuration": Object { "additionalJOptions": Object { "additionalJOption": Array [ "-J-XX:+TieredCompilation", "-J-XX:TieredStopAtLevel=1", ], }, "detectJavaApiLink": false, "failOnError": false, "show": "protected", }, "executions": Array [ Object { "goals": Array [ "jar", ], "id": "attach-javadocs", }, ], }, "name": "org.apache.maven.plugins/maven-javadoc-plugin", "type": "build", "version": "3.2.0", }, Object { "metadata": Object { "configuration": Object { "createDependencyReducedPom": false, "finalName": "myapi-1.0.0", }, "executions": Array [ Object { "goals": Array [ "shade", ], "id": "shade-task", "phase": "package", }, ], }, "name": "org.apache.maven.plugins/maven-shade-plugin", "type": "build", "version": "3.3.0", }, Object { "metadata": Object { "executions": Array [ Object { "goals": Array [ "jar", ], "id": "attach-sources", }, ], }, "name": "org.apache.maven.plugins/maven-source-plugin", "type": "build", "version": "3.2.1", }, Object { "name": "org.codehaus.mojo/exec-maven-plugin", "type": "build", "version": "3.0.0", }, Object { "name": "com.fasterxml.jackson.core/jackson-databind", "type": "runtime", "version": "^2", }, Object { "name": "com.generated.api/myapi-java", "type": "runtime", "version": "0.0.0", }, Object { "name": "io.github.cdklabs/cdknag", "type": "runtime", "version": "^2", }, Object { "name": "io.github.cdklabs/projen", "type": "runtime", "version": "^0", }, Object { "name": "org.projectlombok/lombok", "type": "runtime", "version": "^1", }, Object { "name": "software.amazon.awscdk/aws-cdk-lib", "type": "runtime", "version": "^2", }, Object { "name": "software.aws.awsprototypingsdk/open-api-gateway", "type": "runtime", "version": "^0", }, Object { "name": "software.constructs/constructs", "type": "runtime", "version": "^10", }, Object { "name": "org.junit.jupiter/junit-jupiter-api", "type": "test", "version": "5.7.0", }, Object { "name": "org.junit.jupiter/junit-jupiter-engine", "type": "test", "version": "5.7.0", }, ], }, ".projen/files.json": Object { "//": "~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\".", "files": Array [ ".gitattributes", ".github/workflows/pull-request-lint.yml", ".gitignore", ".projen/deps.json", ".projen/files.json", ".projen/tasks.json", "generated/README.md", "pom.xml", ], }, ".projen/tasks.json": Object { "//": "~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\".", "tasks": Object { "build": Object { "description": "Full release build", "name": "build", "steps": Array [ Object { "spawn": "default", }, Object { "spawn": "pre-compile", }, Object { "spawn": "compile", }, Object { "spawn": "post-compile", }, Object { "spawn": "test", }, Object { "spawn": "package", }, ], }, "clobber": Object { "condition": "git diff --exit-code > /dev/null", "description": "hard resets to HEAD of origin and cleans the local repo", "env": Object { "BRANCH": "$(git branch --show-current)", }, "name": "clobber", "steps": Array [ Object { "exec": "git checkout -b scratch", "name": "save current HEAD in \\"scratch\\" branch", }, Object { "exec": "git checkout $BRANCH", }, Object { "exec": "git fetch origin", "name": "fetch latest changes from origin", }, Object { "exec": "git reset --hard origin/$BRANCH", "name": "hard reset to origin commit", }, Object { "exec": "git clean -fdx", "name": "clean all untracked files", }, Object { "say": "ready to rock! (unpushed commits are under the \\"scratch\\" branch)", }, ], }, "compile": Object { "description": "Only compile", "name": "compile", "steps": Array [ Object { "exec": "mvn compiler:compile", }, ], }, "default": Object { "description": "Synthesize project files", "name": "default", "steps": Array [ Object { "exec": "mvn compiler:testCompile --quiet", }, Object { "exec": "mvn exec:java --quiet -Dexec.mainClass=projenrc -Dexec.classpathScope=\\"test\\"", }, ], }, "eject": Object { "description": "Remove projen from the project", "env": Object { "PROJEN_EJECTING": "true", }, "name": "eject", "steps": Array [ Object { "spawn": "default", }, ], }, "package": Object { "description": "Creates the distribution package", "env": Object { "MAVEN_OPTS": "-XX:+TieredCompilation -XX:TieredStopAtLevel=1", }, "name": "package", "steps": Array [ Object { "exec": "mkdir -p dist/java", }, Object { "exec": "mvn deploy -D=altDeploymentRepository=local::default::file:///$PWD/dist/java", }, ], }, "post-compile": Object { "description": "Runs after successful compilation", "name": "post-compile", }, "pre-compile": Object { "description": "Prepare the project for compilation", "name": "pre-compile", }, "test": Object { "description": "Run tests", "name": "test", "steps": Array [ Object { "exec": "mvn test", }, ], }, }, }, "README.md": "# replace this", "generated/.client-settings.json": Object { "//": "~~ Generated by projen. To modify, edit src/test/java/projenrc.java and run \\"npx projen\\".", "clientLanguages": Array [ "java", ], "documentationFormats": Array [ "html2", "markdown", "plantuml", ], }, "generated/README.md": "## Generated Clients This directory contains generated client code based on your OpenAPI Specification file (spec.yaml). Like other \`projen\` managed files, this directory should be checked in to source control, but should not be edited manually.", "generated/documentation/html2/.openapi-generator-ignore": "# OpenAPI Generator Ignore # Generated by openapi-generator https://github.com/openapitools/openapi-generator # Use this file to prevent files from being overwritten by the generator. # The patterns follow closely to .gitignore or .dockerignore. # As an example, the C# client generator defines ApiClient.cs. # You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: #ApiClient.cs # You can match any string of characters against a directory, file or extension with a single asterisk (*): #foo/*/qux # The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux # You can recursively match patterns against a directory, file or extension with a double asterisk (**): #foo/**/qux # This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux # You can also negate patterns with an exclamation (!). # For example, you can ignore all files in a docs folder with the file extension .md: #docs/*.md # Then explicitly reverse the ignore rule for a single file: #!docs/README.md ", "generated/documentation/html2/.openapi-generator/FILES": ".openapi-generator-ignore index.html ", "generated/documentation/html2/.openapi-generator/VERSION": "6.3.0", "generated/documentation/html2/index.html": " Example API

Example API

API and SDK Documentation

Version: 1.0.0

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

Default

sayHello


/hello

Usage and SDK Samples

curl -X GET \\\\
 -H \\"Accept: application/json\\" \\\\
 \\"http://localhost/hello?name=name_example\\"
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
import org.openapitools.client.api.DefaultApi;

import java.io.File;
import java.util.*;

public class DefaultApiExample {
    public static void main(String[] args) {

        // Create an instance of the API class
        DefaultApi apiInstance = new DefaultApi();
        String name = name_example; // String | 

        try {
            SayHelloResponseContent result = apiInstance.sayHello(name);
            System.out.println(result);
        } catch (ApiException e) {
            System.err.println(\\"Exception when calling DefaultApi#sayHello\\");
            e.printStackTrace();
        }
    }
}
import org.openapitools.client.api.DefaultApi;

public class DefaultApiExample {
    public static void main(String[] args) {
        DefaultApi apiInstance = new DefaultApi();
        String name = name_example; // String | 

        try {
            SayHelloResponseContent result = apiInstance.sayHello(name);
            System.out.println(result);
        } catch (ApiException e) {
            System.err.println(\\"Exception when calling DefaultApi#sayHello\\");
            e.printStackTrace();
        }
    }
}


// Create an instance of the API class
DefaultApi *apiInstance = [[DefaultApi alloc] init];
String *name = name_example; //  (default to null)

[apiInstance sayHelloWith:name
              completionHandler: ^(SayHelloResponseContent output, NSError* error) {
    if (output) {
        NSLog(@\\"%@\\", output);
    }
    if (error) {
        NSLog(@\\"Error: %@\\", error);
    }
}];
var ExampleApi = require('example_api');

// Create an instance of the API class
var api = new ExampleApi.DefaultApi()
var name = name_example; // {String} 

var callback = function(error, data, response) {
  if (error) {
    console.error(error);
  } else {
    console.log('API called successfully. Returned data: ' + data);
  }
};
api.sayHello(name, callback);
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
using Org.OpenAPITools.Client;
using Org.OpenAPITools.Model;

namespace Example
{
    public class sayHelloExample
    {
        public void main()
        {

            // Create an instance of the API class
            var apiInstance = new DefaultApi();
            var name = name_example;  // String |  (default to null)

            try {
                SayHelloResponseContent result = apiInstance.sayHello(name);
                Debug.WriteLine(result);
            } catch (Exception e) {
                Debug.Print(\\"Exception when calling DefaultApi.sayHello: \\" + e.Message );
            }
        }
    }
}
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Create an instance of the API class
$api_instance = new OpenAPITools\\\\Client\\\\Api\\\\DefaultApi();
$name = name_example; // String | 

try {
    $result = $api_instance->sayHello($name);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling DefaultApi->sayHello: ', $e->getMessage(), PHP_EOL;
}
?>
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
use WWW::OPenAPIClient::DefaultApi;

# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::DefaultApi->new();
my $name = name_example; # String | 

eval {
    my $result = $api_instance->sayHello(name => $name);
    print Dumper($result);
};
if ($@) {
    warn \\"Exception when calling DefaultApi->sayHello: $@\\\\n\\";
}
from __future__ import print_statement
import time
import openapi_client
from openapi_client.rest import ApiException
from pprint import pprint

# Create an instance of the API class
api_instance = openapi_client.DefaultApi()
name = name_example # String |  (default to null)

try:
    api_response = api_instance.say_hello(name)
    pprint(api_response)
except ApiException as e:
    print(\\"Exception when calling DefaultApi->sayHello: %s\\\\n\\" % e)
extern crate DefaultApi;

pub fn main() {
    let name = name_example; // String

    let mut context = DefaultApi::Context::default();
    let result = client.sayHello(name, &context).wait();

    println!(\\"{:?}\\", result);
}

Scopes

Parameters

Query parameters
Name Description
name*
String
Required

Responses


Suggestions, contact, support and error reporting;

Contact Info: team@openapitools.org

All rights reserved
http://apache.org/licenses/LICENSE-2.0.html
", "generated/documentation/markdown/.openapi-generator-ignore": "# OpenAPI Generator Ignore # Generated by openapi-generator https://github.com/openapitools/openapi-generator # Use this file to prevent files from being overwritten by the generator. # The patterns follow closely to .gitignore or .dockerignore. # As an example, the C# client generator defines ApiClient.cs. # You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: #ApiClient.cs # You can match any string of characters against a directory, file or extension with a single asterisk (*): #foo/*/qux # The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux # You can recursively match patterns against a directory, file or extension with a double asterisk (**): #foo/**/qux # This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux # You can also negate patterns with an exclamation (!). # For example, you can ignore all files in a docs folder with the file extension .md: #docs/*.md # Then explicitly reverse the ignore rule for a single file: #!docs/README.md ", "generated/documentation/markdown/.openapi-generator/FILES": ".openapi-generator-ignore Apis/DefaultApi.md Models/ApiErrorResponseContent.md Models/SayHelloResponseContent.md README.md ", "generated/documentation/markdown/.openapi-generator/VERSION": "6.3.0", "generated/documentation/markdown/Apis/DefaultApi.md": "# DefaultApi All URIs are relative to *http://localhost* | Method | HTTP request | Description | |------------- | ------------- | -------------| | [**sayHello**](DefaultApi.md#sayHello) | **GET** /hello | | # **sayHello** > SayHelloResponseContent sayHello(name) ### Parameters |Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **name** | **String**| | [default to null] | ### Return type [**SayHelloResponseContent**](../Models/SayHelloResponseContent.md) ### Authorization No authorization required ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/json ", "generated/documentation/markdown/Models/ApiErrorResponseContent.md": "# ApiErrorResponseContent ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **errorMessage** | **String** | | [default to null] | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) ", "generated/documentation/markdown/Models/SayHelloResponseContent.md": "# SayHelloResponseContent ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| | **message** | **String** | | [default to null] | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) ", "generated/documentation/markdown/README.md": "# Documentation for Example API ## Documentation for API Endpoints All URIs are relative to *http://localhost* | Class | Method | HTTP request | Description | |------------ | ------------- | ------------- | -------------| | *DefaultApi* | [**sayHello**](Apis/DefaultApi.md#sayhello) | **GET** /hello | | ## Documentation for Models - [ApiErrorResponseContent](./Models/ApiErrorResponseContent.md) - [SayHelloResponseContent](./Models/SayHelloResponseContent.md) ## Documentation for Authorization All endpoints do not require authorization. ", "generated/documentation/plantuml/.openapi-generator-ignore": "# OpenAPI Generator Ignore # Generated by openapi-generator https://github.com/openapitools/openapi-generator # Use this file to prevent files from being overwritten by the generator. # The patterns follow closely to .gitignore or .dockerignore. # As an example, the C# client generator defines ApiClient.cs. # You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: #ApiClient.cs # You can match any string of characters against a directory, file or extension with a single asterisk (*): #foo/*/qux # The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux # You can recursively match patterns against a directory, file or extension with a double asterisk (**): #foo/**/qux # This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux # You can also negate patterns with an exclamation (!). # For example, you can ignore all files in a docs folder with the file extension .md: #docs/*.md # Then explicitly reverse the ignore rule for a single file: #!docs/README.md ", "generated/documentation/plantuml/.openapi-generator/FILES": ".openapi-generator-ignore schemas.plantuml ", "generated/documentation/plantuml/.openapi-generator/VERSION": "6.3.0", "generated/documentation/plantuml/schemas.plantuml": "@startuml title Example API Schemas Diagram entity ApiErrorResponseContent { * errorMessage: String } entity SayHelloResponseContent { * message: String } @enduml", "generated/java/.gitattributes": "# ~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\". /.gitattributes linguist-generated /.gitignore linguist-generated /.openapi-generator-ignore linguist-generated /.projen/** linguist-generated /.projen/deps.json linguist-generated /.projen/files.json linguist-generated /.projen/tasks.json linguist-generated /package.json linguist-generated /pom.xml linguist-generated", "generated/java/.github/workflows/maven.yml": "# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven # # This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech) name: Java CI with Maven on: push: branches: [ main, master ] pull_request: branches: [ main, master ] jobs: build: name: Build Example API runs-on: ubuntu-latest strategy: matrix: java: [ '8' ] steps: - uses: actions/checkout@v2 - name: Set up JDK uses: actions/setup-java@v2 with: java-version: \${{ matrix.java }} distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --no-transfer-progress --file pom.xml ", "generated/java/.gitignore": "# ~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\". node_modules/ !/.gitattributes !/.projen/tasks.json !/.projen/deps.json !/.projen/files.json !/pom.xml .classpath .project .settings target dist/java !/.openapi-generator-ignore !/package.json ", "generated/java/.openapi-generator-ignore": "# ~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\". .gitignore pom.xml ", "generated/java/.openapi-generator/FILES": ".github/workflows/maven.yml .travis.yml README.md api/openapi.yaml build.gradle build.sbt docs/ApiErrorResponseContent.md docs/DefaultApi.md docs/SayHelloResponseContent.md git_push.sh gradle.properties gradle/wrapper/gradle-wrapper.jar gradle/wrapper/gradle-wrapper.properties gradlew gradlew.bat settings.gradle src/main/AndroidManifest.xml src/main/java/com/generated/api/myapijava/client/ApiCallback.java src/main/java/com/generated/api/myapijava/client/ApiClient.java src/main/java/com/generated/api/myapijava/client/ApiException.java src/main/java/com/generated/api/myapijava/client/ApiResponse.java src/main/java/com/generated/api/myapijava/client/Configuration.java src/main/java/com/generated/api/myapijava/client/GzipRequestInterceptor.java src/main/java/com/generated/api/myapijava/client/JSON.java src/main/java/com/generated/api/myapijava/client/Pair.java src/main/java/com/generated/api/myapijava/client/ProgressRequestBody.java src/main/java/com/generated/api/myapijava/client/ProgressResponseBody.java src/main/java/com/generated/api/myapijava/client/ServerConfiguration.java src/main/java/com/generated/api/myapijava/client/ServerVariable.java src/main/java/com/generated/api/myapijava/client/StringUtil.java src/main/java/com/generated/api/myapijava/client/api/DefaultApi.java src/main/java/com/generated/api/myapijava/client/api/DefaultApi/Handlers.java src/main/java/com/generated/api/myapijava/client/api/DefaultApi/OperationConfig.java src/main/java/com/generated/api/myapijava/client/api/DefaultApi/OperationLookup.java src/main/java/com/generated/api/myapijava/client/api/DefaultApi/Operations.java src/main/java/com/generated/api/myapijava/client/auth/ApiKeyAuth.java src/main/java/com/generated/api/myapijava/client/auth/Authentication.java src/main/java/com/generated/api/myapijava/client/auth/HttpBasicAuth.java src/main/java/com/generated/api/myapijava/client/auth/HttpBearerAuth.java src/main/java/com/generated/api/myapijava/client/model/AbstractOpenApiSchema.java src/main/java/com/generated/api/myapijava/client/model/ApiErrorResponseContent.java src/main/java/com/generated/api/myapijava/client/model/SayHelloResponseContent.java src/test/java/com/generated/api/myapijava/client/api/DefaultApiTest.java src/test/java/com/generated/api/myapijava/client/model/ApiErrorResponseContentTest.java src/test/java/com/generated/api/myapijava/client/model/SayHelloResponseContentTest.java ", "generated/java/.openapi-generator/VERSION": "6.3.0", "generated/java/.projen/deps.json": Object { "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\".", "dependencies": Array [ Object { "metadata": Object { "configuration": Object { "source": "1.8", "target": "1.8", }, }, "name": "org.apache.maven.plugins/maven-compiler-plugin", "type": "build", "version": "3.8.1", }, Object { "metadata": Object { "configuration": Object { "rules": Array [ Object { "requireMavenVersion": Array [ Object { "version": "3.6", }, ], }, ], }, "executions": Array [ Object { "goals": Array [ "enforce", ], "id": "enforce-maven", }, ], }, "name": "org.apache.maven.plugins/maven-enforcer-plugin", "type": "build", "version": "3.0.0-M3", }, Object { "metadata": Object { "configuration": Object { "archive": Object { "index": true, "manifest": Object { "addDefaultImplementationEntries": true, "addDefaultSpecificationEntries": true, }, }, }, }, "name": "org.apache.maven.plugins/maven-jar-plugin", "type": "build", "version": "3.2.0", }, Object { "metadata": Object { "configuration": Object { "additionalJOptions": Object { "additionalJOption": Array [ "-J-XX:+TieredCompilation", "-J-XX:TieredStopAtLevel=1", ], }, "detectJavaApiLink": false, "failOnError": false, "show": "protected", }, "executions": Array [ Object { "goals": Array [ "jar", ], "id": "attach-javadocs", }, ], }, "name": "org.apache.maven.plugins/maven-javadoc-plugin", "type": "build", "version": "3.2.0", }, Object { "metadata": Object { "executions": Array [ Object { "goals": Array [ "jar", ], "id": "attach-sources", }, ], }, "name": "org.apache.maven.plugins/maven-source-plugin", "type": "build", "version": "3.2.1", }, Object { "name": "com.amazonaws/aws-lambda-java-core", "type": "runtime", "version": "1.2.1", }, Object { "name": "com.amazonaws/aws-lambda-java-events", "type": "runtime", "version": "3.11.0", }, Object { "name": "com.google.code.findbugs/jsr305", "type": "runtime", "version": "3.0.2", }, Object { "name": "com.google.code.gson/gson", "type": "runtime", "version": "2.9.1", }, Object { "name": "com.squareup.okhttp3/logging-interceptor", "type": "runtime", "version": "4.10.0", }, Object { "name": "com.squareup.okhttp3/okhttp", "type": "runtime", "version": "4.10.0", }, Object { "name": "io.gsonfire/gson-fire", "type": "runtime", "version": "1.8.5", }, Object { "name": "io.swagger/swagger-annotations", "type": "runtime", "version": "1.6.8", }, Object { "name": "jakarta.annotation/jakarta.annotation-api", "type": "runtime", "version": "1.3.5", }, Object { "name": "javax.ws.rs/javax.ws.rs-api", "type": "runtime", "version": "2.1.1", }, Object { "name": "javax.ws.rs/jsr311-api", "type": "runtime", "version": "1.1.1", }, Object { "name": "org.apache.commons/commons-lang3", "type": "runtime", "version": "3.12.0", }, Object { "name": "org.openapitools/jackson-databind-nullable", "type": "runtime", "version": "0.2.4", }, Object { "name": "org.projectlombok/lombok", "type": "runtime", "version": "1.18.24", }, Object { "name": "org.junit.jupiter/junit-jupiter-api", "type": "test", "version": "5.9.1", }, Object { "name": "org.mockito/mockito-core", "type": "test", "version": "3.12.4", }, ], }, "generated/java/.projen/files.json": Object { "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\".", "files": Array [ ".gitattributes", ".gitignore", ".openapi-generator-ignore", ".projen/deps.json", ".projen/files.json", ".projen/tasks.json", "package.json", "pom.xml", ], }, "generated/java/.projen/tasks.json": Object { "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\".", "tasks": Object { "build": Object { "description": "Full release build", "name": "build", "steps": Array [ Object { "spawn": "pre-compile", }, Object { "spawn": "compile", }, Object { "spawn": "post-compile", }, Object { "spawn": "test", }, Object { "spawn": "package", }, ], }, "compile": Object { "description": "Only compile", "name": "compile", "steps": Array [ Object { "exec": "mvn compiler:compile", }, ], }, "default": Object { "description": "Synthesize project files", "name": "default", "steps": Array [ Object { "cwd": "../..", "exec": "npx projen default", }, ], }, "package": Object { "description": "Creates the distribution package", "env": Object { "MAVEN_OPTS": "-XX:+TieredCompilation -XX:TieredStopAtLevel=1", }, "name": "package", "steps": Array [ Object { "exec": "mkdir -p dist/java", }, Object { "exec": "mvn deploy -D=altDeploymentRepository=local::default::file:///$PWD/dist/java", }, ], }, "post-compile": Object { "description": "Runs after successful compilation", "name": "post-compile", }, "pre-compile": Object { "description": "Prepare the project for compilation", "name": "pre-compile", }, "test": Object { "description": "Run tests", "name": "test", }, }, }, "generated/java/.travis.yml": "# # Generated by OpenAPI Generator: https://openapi-generator.tech # # Ref: https://docs.travis-ci.com/user/languages/java/ # language: java jdk: - openjdk12 - openjdk11 - openjdk10 - openjdk9 - openjdk8 before_install: # ensure gradlew has proper permission - chmod a+x ./gradlew script: # test using maven #- mvn test # test using gradle - gradle test # test using sbt # - sbt test ", "generated/java/README.md": "# myapi-java Example API - API version: 1.0.0 No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) *Automatically generated by the [OpenAPI Generator](https://openapi-generator.tech)* ## Requirements Building the API client library requires: 1. Java 1.8+ 2. Maven (3.8.3+)/Gradle (7.2+) ## Installation To install the API client library to your local Maven repository, simply execute: \`\`\`shell mvn clean install \`\`\` To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: \`\`\`shell mvn clean deploy \`\`\` Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information. ### Maven users Add this dependency to your project's POM: \`\`\`xml com.generated.api myapi-java 0.0.0 compile \`\`\` ### Gradle users Add this dependency to your project's build file: \`\`\`groovy repositories { mavenCentral() // Needed if the 'myapi-java' jar has been published to maven central. mavenLocal() // Needed if the 'myapi-java' jar has been published to the local maven repo. } dependencies { implementation \\"com.generated.api:myapi-java:0.0.0\\" } \`\`\` ### Others At first generate the JAR by executing: \`\`\`shell mvn clean package \`\`\` Then manually install the following JARs: * \`target/myapi-java-0.0.0.jar\` * \`target/lib/*.jar\` ## Getting Started Please follow the [installation](#installation) instruction and execute the following Java code: \`\`\`java // Import classes: import com.generated.api.myapijava.client.ApiClient; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.Configuration; import com.generated.api.myapijava.client.models.*; import com.generated.api.myapijava.client.api.DefaultApi; public class Example { public static void main(String[] args) { ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(\\"http://localhost\\"); DefaultApi apiInstance = new DefaultApi(defaultClient); String name = \\"name_example\\"; // String | try { SayHelloResponseContent result = apiInstance.sayHello(name) .execute(); System.out.println(result); } catch (ApiException e) { System.err.println(\\"Exception when calling DefaultApi#sayHello\\"); System.err.println(\\"Status code: \\" + e.getCode()); System.err.println(\\"Reason: \\" + e.getResponseBody()); System.err.println(\\"Response headers: \\" + e.getResponseHeaders()); e.printStackTrace(); } } } \`\`\` ## Documentation for API Endpoints All URIs are relative to *http://localhost* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- *DefaultApi* | [**sayHello**](docs/DefaultApi.md#sayHello) | **GET** /hello | ## Documentation for Models - [ApiErrorResponseContent](docs/ApiErrorResponseContent.md) - [SayHelloResponseContent](docs/SayHelloResponseContent.md) ## Documentation for Authorization All endpoints do not require authorization. Authentication schemes defined for the API: ## Recommendation It's recommended to create an instance of \`ApiClient\` per thread in a multithreaded environment to avoid any potential issues. ## Author ", "generated/java/api/openapi.yaml": "openapi: 3.0.3 info: title: Example API version: 1.0.0 servers: - url: / paths: /hello: get: operationId: sayHello parameters: - explode: true in: query name: name required: true schema: type: string style: form responses: \\"200\\": content: application/json: schema: $ref: '#/components/schemas/SayHelloResponseContent' description: Successful response \\"400\\": content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponseContent' description: Error response x-accepts: application/json components: schemas: ApiErrorResponseContent: properties: errorMessage: type: string required: - errorMessage type: object SayHelloResponseContent: properties: message: type: string required: - message type: object ", "generated/java/build.gradle": "apply plugin: 'idea' apply plugin: 'eclipse' apply plugin: 'java' apply plugin: 'com.diffplug.spotless' group = 'com.generated.api' version = '0.0.0' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.+' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.11.0' } } repositories { mavenCentral() } sourceSets { main.java.srcDirs = ['src/main/java'] } if(hasProperty('target') && target == 'android') { apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' android { compileSdkVersion 25 buildToolsVersion '25.0.2' defaultConfig { minSdkVersion 14 targetSdkVersion 25 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } // Rename the aar correctly libraryVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.aar')) { def fileName = \\"\${project.name}-\${variant.baseName}-\${version}.aar\\" output.outputFile = new File(outputFile.parent, fileName) } } } dependencies { provided \\"jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version\\" } } afterEvaluate { android.libraryVariants.all { variant -> def task = project.tasks.create \\"jar\${variant.name.capitalize()}\\", Jar task.description = \\"Create jar artifact for \${variant.name}\\" task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir task.destinationDir = project.file(\\"\${project.buildDir}/outputs/jar\\") task.archiveName = \\"\${project.name}-\${variant.baseName}-\${version}.jar\\" artifacts.add('archives', task) } } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } artifacts { archives sourcesJar } } else { apply plugin: 'java' apply plugin: 'maven-publish' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 publishing { publications { maven(MavenPublication) { artifactId = 'myapi-java' from components.java } } } task execute(type:JavaExec) { main = System.getProperty('mainClass') classpath = sourceSets.main.runtimeClasspath } } ext { jakarta_annotation_version = \\"1.3.5\\" } dependencies { implementation 'io.swagger:swagger-annotations:1.6.8' implementation \\"com.google.code.findbugs:jsr305:3.0.2\\" implementation 'com.squareup.okhttp3:okhttp:4.10.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.10.0' implementation 'com.google.code.gson:gson:2.9.1' implementation 'io.gsonfire:gson-fire:1.8.5' implementation 'javax.ws.rs:jsr311-api:1.1.1' implementation 'javax.ws.rs:javax.ws.rs-api:2.1.1' implementation 'org.openapitools:jackson-databind-nullable:0.2.4' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' implementation \\"jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version\\" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1' testImplementation 'org.mockito:mockito-core:3.12.4' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.1' } javadoc { options.tags = [ \\"http.response.details:a:Http Response Details\\" ] } // Use spotless plugin to automatically format code, remove unused import, etc // To apply changes directly to the file, run \`gradlew spotlessApply\` // Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle spotless { // comment out below to run spotless as part of the \`check\` task enforceCheck false format 'misc', { // define the files (e.g. '*.gradle', '*.md') to apply \`misc\` to target '.gitignore' // define the steps to apply to those files trimTrailingWhitespace() indentWithSpaces() // Takes an integer argument if you don't like 4 endWithNewline() } java { // don't need to set target, it is inferred from java // apply a specific flavor of google-java-format googleJavaFormat('1.8').aosp().reflowLongStrings() removeUnusedImports() importOrder() } } test { // Enable JUnit 5 (Gradle 4.6+). useJUnitPlatform() // Always run tests, even when nothing changed. dependsOn 'cleanTest' // Show test results. testLogging { events \\"passed\\", \\"skipped\\", \\"failed\\" } } ", "generated/java/build.sbt": "lazy val root = (project in file(\\".\\")). settings( organization := \\"com.generated.api\\", name := \\"myapi-java\\", version := \\"0.0.0\\", scalaVersion := \\"2.11.4\\", scalacOptions ++= Seq(\\"-feature\\"), javacOptions in compile ++= Seq(\\"-Xlint:deprecation\\"), publishArtifact in (Compile, packageDoc) := false, resolvers += Resolver.mavenLocal, libraryDependencies ++= Seq( \\"io.swagger\\" % \\"swagger-annotations\\" % \\"1.6.5\\", \\"com.squareup.okhttp3\\" % \\"okhttp\\" % \\"4.10.0\\", \\"com.squareup.okhttp3\\" % \\"logging-interceptor\\" % \\"4.10.0\\", \\"com.google.code.gson\\" % \\"gson\\" % \\"2.9.1\\", \\"org.apache.commons\\" % \\"commons-lang3\\" % \\"3.12.0\\", \\"javax.ws.rs\\" % \\"jsr311-api\\" % \\"1.1.1\\", \\"javax.ws.rs\\" % \\"javax.ws.rs-api\\" % \\"2.1.1\\", \\"org.openapitools\\" % \\"jackson-databind-nullable\\" % \\"0.2.4\\", \\"io.gsonfire\\" % \\"gson-fire\\" % \\"1.8.5\\" % \\"compile\\", \\"jakarta.annotation\\" % \\"jakarta.annotation-api\\" % \\"1.3.5\\" % \\"compile\\", \\"com.google.code.findbugs\\" % \\"jsr305\\" % \\"3.0.2\\" % \\"compile\\", \\"jakarta.annotation\\" % \\"jakarta.annotation-api\\" % \\"1.3.5\\" % \\"compile\\", \\"org.junit.jupiter\\" % \\"junit-jupiter-api\\" % \\"5.9.1\\" % \\"test\\", \\"com.novocode\\" % \\"junit-interface\\" % \\"0.10\\" % \\"test\\", \\"org.mockito\\" % \\"mockito-core\\" % \\"3.12.4\\" % \\"test\\" ) ) ", "generated/java/docs/ApiErrorResponseContent.md": " # ApiErrorResponseContent ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| |**errorMessage** | **String** | | | ", "generated/java/docs/DefaultApi.md": "# DefaultApi All URIs are relative to *http://localhost* | Method | HTTP request | Description | |------------- | ------------- | -------------| | [**sayHello**](DefaultApi.md#sayHello) | **GET** /hello | | # **sayHello** > SayHelloResponseContent sayHello(name).execute(); ### Example \`\`\`java // Import classes: import com.generated.api.myapijava.client.ApiClient; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.Configuration; import com.generated.api.myapijava.client.models.*; import com.generated.api.myapijava.client.api.DefaultApi; public class Example { public static void main(String[] args) { ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(\\"http://localhost\\"); DefaultApi apiInstance = new DefaultApi(defaultClient); String name = \\"name_example\\"; // String | try { SayHelloResponseContent result = apiInstance.sayHello(name) .execute(); System.out.println(result); } catch (ApiException e) { System.err.println(\\"Exception when calling DefaultApi#sayHello\\"); System.err.println(\\"Status code: \\" + e.getCode()); System.err.println(\\"Reason: \\" + e.getResponseBody()); System.err.println(\\"Response headers: \\" + e.getResponseHeaders()); e.printStackTrace(); } } } \`\`\` ### Parameters | Name | Type | Description | Notes | |------------- | ------------- | ------------- | -------------| | **name** | **String**| | | ### Return type [**SayHelloResponseContent**](SayHelloResponseContent.md) ### Authorization No authorization required ### HTTP request headers - **Content-Type**: Not defined - **Accept**: application/json ### HTTP response details | Status code | Description | Response headers | |-------------|-------------|------------------| | **200** | Successful response | - | | **400** | Error response | - | ", "generated/java/docs/SayHelloResponseContent.md": " # SayHelloResponseContent ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| |**message** | **String** | | | ", "generated/java/git_push.sh": "#!/bin/sh # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ # # Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl \\"minor update\\" \\"gitlab.com\\" git_user_id=$1 git_repo_id=$2 release_note=$3 git_host=$4 if [ \\"$git_host\\" = \\"\\" ]; then git_host=\\"github.com\\" echo \\"[INFO] No command line input provided. Set \\\\$git_host to $git_host\\" fi if [ \\"$git_user_id\\" = \\"\\" ]; then git_user_id=\\"GIT_USER_ID\\" echo \\"[INFO] No command line input provided. Set \\\\$git_user_id to $git_user_id\\" fi if [ \\"$git_repo_id\\" = \\"\\" ]; then git_repo_id=\\"GIT_REPO_ID\\" echo \\"[INFO] No command line input provided. Set \\\\$git_repo_id to $git_repo_id\\" fi if [ \\"$release_note\\" = \\"\\" ]; then release_note=\\"Minor update\\" echo \\"[INFO] No command line input provided. Set \\\\$release_note to $release_note\\" fi # Initialize the local directory as a Git repository git init # Adds the files in the local repository and stages them for commit. git add . # Commits the tracked changes and prepares them to be pushed to a remote repository. git commit -m \\"$release_note\\" # Sets the new remote git_remote=$(git remote) if [ \\"$git_remote\\" = \\"\\" ]; then # git remote not defined if [ \\"$GIT_TOKEN\\" = \\"\\" ]; then echo \\"[INFO] \\\\$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment.\\" git remote add origin https://\${git_host}/\${git_user_id}/\${git_repo_id}.git else git remote add origin https://\${git_user_id}:\\"\${GIT_TOKEN}\\"@\${git_host}/\${git_user_id}/\${git_repo_id}.git fi fi git pull origin master # Pushes (Forces) the changes in the local repository up to the remote repository echo \\"Git pushing to https://\${git_host}/\${git_user_id}/\${git_repo_id}.git\\" git push origin master 2>&1 | grep -v 'To https' ", "generated/java/gradle.properties": "# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator). # To include other gradle properties as part of the code generation process, please use the \`gradleProperties\` option. # # Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties # For example, uncomment below to build for Android #target = android ", "generated/java/gradle/wrapper/gradle-wrapper.jar": "PK A META-INF/PK Am�>=@?META-INF/MANIFEST.MF�M��LK-.� K-*��ϳR0�3����-�I�M�+I, �d��Z)�%��*�%��r�rPK Aorg/PK A org/gradle/PK Aorg/gradle/wrapper/PK A�%Ӧ�/org/gradle/wrapper/BootstrapMainStarter$1.class�R�n�@=Ӹu1���Ey�@_Iik�6�U�@.,Ru��L�!��G� �6 ���(ı ]t1ss�չ���_�x��󸳈��ᾏM|4�i��s�Z�}.���k�ތ�=e�d/c���Υ�ei�0�c� �=<�O���b��+7.P���m�B%����M� �-�wźl�6i<�Z2�93�����#��ұw�ںl h�������x8F��E��v~�ė�9�P%p�w8�.�R3�S� ѵ��Ac�+j�g�QEoN Sz��B�z������j�\\\\�:����� zQ^��oPK Ai,�$ -org/gradle/wrapper/BootstrapMainStarter.class�V�SW�sٰ,�1*���BI/�V�V�(�-m��.�!�nv�f��jﭽ<���� �%�2�ӗv����;�IIb���ٳ���]7�>��1���IF2^� C��0%c���A�0#aVF �d\\\\�{2�Ǽ�d\\\\�Uq�BNP��p]�R2\\"�!c7%|؉^|$A aQ�ʋ� .aI�~ ���ee�4��1�r����tSwN3��+ ��U� �U�䳕�\\"��E�(a��k����{��w�u��T-��.�Z��黶�����9�r���h��u4���8C�,� ���-펖64���:�n�=�n�/�w�hv�<�l#� {.'�a�nVf��ӚM����U� [��'b��0��^�SXB�D�]Î�.I���,[�X��͗ �w��$w7'nm���H��SçI��r��=���btr6���+�n�e ��:K�YP���_�_�%u��P�-q i��g���M�-{�\\\\f����I�jW˔0�\`� N���V8s��K�� �b��� ʇ���2�_t+�c�O����f�\\\\�ɧ�X�C��Cϖ�K����� ���9%�9 ,�H�X� ʩ���; �c��|�O��}�.�w��Tk�)��3|N�*Z�R�RU_�K_�k�z�3�U梾 ��\`\\\\�4�T �[�၂����l����#��+*0�>�i�X ��i�FZ$K�]�h�O&�������Vo����FW���c-�M��D�qh�ƛ�:U�T��T����;#R�Nv���R�zH$['tk=��e��&ś�o����h�8�6�ls�ܕ���P�=��֣ �e�d�,�X��: �׶�\`�Զ�l\\"�z�ϼ���N�E�/��w�ۼ�-j=𒶨���y1/ [�\\\\�f �U�e��v��S/7,��xBY|��͙ZI,<�J��G�x��&����[������ �_� Ct]b :OI ӓa�$E��$��>¶�C��w�\\\\�����o4�� Hn\\"�#RG�w� ��Nb(Utm�{��ۣ�*z����*�c�h ���#9_xW���c�h�yG�}�ը�/��C��C�A����S�s/A݇���~8�#� E�R�7q%��B��# ܤ@-8q;Dv�{K�0�*���G����c�M%�8N����M����UK��;I�1�D�� �%Ğↄ���DvN��ަ�D�����g���y|��px���#U��c���������U��]����@�}���i�P8�T�(�j�@� �1*B��� �qg)�ԗ���_:#Bu�}ә�#�z���qF=�~t 8�ɹ7��s�����'��+��Do4��ҌH�5ɜm�9��f�� W.����&�a�@��[&�x;ra�c\\"� i.�4p��C��*�3t<������̪ϗ���)(g���,Q�\`8���1o�u<^��{_T��W�^�Ŋ�ժ�{�_n����v��<���� �o�!<ꕉks�vŕ�҂�g��C+-�ĝY���}1,�U��1q�ל\`�� Vޥq��ժ��s�:���h�庯�V]�nE�ZS��|�g\\\\d�M�R���e��!���!Z�\\\\J�[ �d'̭�2c�J�&�r]qRru�J�+���8 �S�Xm����ٚ��Mx����o��r\`{.�h��-��g�T^*wS��٢ߡ��d���l�2��gPZ��U m8l�����) �A�X�F�� ���y����k�50'=�ұ�A��Zu��3�57��ĶS\\"�x����n�\\\\7�!C�T�D��M-�%:���ho-%+Ա��B�fuN�I�Q{�E�qM�%���帨v���>E���[��[�NMLݠʧ�77PPb�d�15�/N�nj3����RZl�1�eShK���|^���dS�:83��m���1t��Ȧ�1$���0��p��1��@����:X� ���������M� :��)�4�G��!�Lx���G/���6�p��I�ͩ7�x�#B_\`����8���w0�=m�u�d��C�C-��\`�I���ˡ����d�)V�\`���.�_ �7R�;!����a��إ�3�m��KH)v#�#oH��վ����VZ��N�I�r.n��{��7��!=���IbN����7\`����h a.����yD���}�����2^@�#G��e! ��YY�c�J�\\"#��#K��xY&�-/�D15��4%���%V���k�T��D������%�|� �@�ۥ��l�ܧ�g�h ��Ј��|/�7/]>(�B�_PK A���ۡ~4org/gradle/wrapper/Download$ProxyAuthenticator.class�U�sSE��M�Mn74�J�X�1I�$E��E���\`�a���ۛ�����xsc�?�3:���8>� �8�:>�W����۴���;��9��s���9����~p%G1�ᴁ>���3Q�����q���u�3U�(>�༚/t�\\"&t\\\\������zp�@+o�踪�C��nU�y����seO�l���D�\\"�ܤ��خ(���X�y��TGdz�!\\\\pK���h9r����ĚM+��k {Ix���a��z�͉��.�2��z ���H�\`�jU&����^wY��d��z��=�uN��Ż�k�s���Db�wg[%���)��}�r���wM�f��Ū��c�0��� W�2\\\\��_� Gz�{y5�2�8�\`̻5ϔW,�tlg+�2�x �9��_IE�)���� s�Xбȱ��:np,�&C_{�j�]�� V��n��+�[�q�!�n�p8��+(���!���59N\\"ɐ���pt������L2�R��8uӜ��&�d��YQ����j9$ق��$_�phvn��2é���%Q�8W���h�P�Yg�Ve��{w�m~�KTa��ZM��A����k�e��~�F!r3��{��h�����4U��)U��\\"�άݕ��ⰱD�na]x�'6�aJ�W �����RH/a���>z�Y<�nI!h�RQ'�N��4�����2[}K���<�4�@6po�V����/ia�k�:����7�H�C/f������.o���;�i�#�#k�=SÿblX�6=��G�\\"�<�Z޳��J�DI�8^I �\`�+�Xv�Bx��m%�$��,�%��{X �,�t�����9�@�- {�lt�鴝)3̾vh����'Y��I��|�}��{���s�_��s/�*�Q)��x�?�<���h~���x�Ex�q���~M���c4��Ia���KO�����,�R�,�Л���ռB45 ת\\\\��\\\\�\\"񯂠7z�u�P�^��E�e��+��CW�*�ŗ/ͥ*7��CHjV�2���i���R4�D�*�6��+ܮ�m�f��U*wx(�A�7��I�NA�f���uܣ�f����ܫpH��T�Wy�B'���y@��B���Qx��ת�K��T�U�-t��U6TRyX��#*�Qy�XUxT���Ōd[TO��ӹ�!=5���Ǣq=�9N�Tg$e\`d�t�ິ9b��Ƞn�A,����ݳ�{����P��l�{�}zcT� 7��d$6��T���L=fnգihg��o��޻+����AQ51����sUo{(�����cЮ������;�� v������ vvC�Y���L���u�20����aq�����p�pRG���I=�0���r�*w����F2��Z�i��/&�������b�fD�ܲUڌD���JC��n��P����˦v:�2ܗEb����z�����[��m�!T�Č���n#٧����A=�UOF��&:͑v�L�����}�Bh�I�W�zr�y�4S���A|ۭ��B�%� >O\\"O|Uq�0�� ��cLd��\\\\L~�Szv�1���ᔲ����:)M���+ u�݁���7�����g����<����YZI��� #Ҧ�5��j���mݐ�l?� ���7hˍ�7D�������I���.l��H̖=�p- �~\`�H�I,�����F2�G� �2�� ;���CC\\" ��h�Ʊ�h�!���qS�v�as$O�Βx#B9����i����^����Dʎ�P 26=or:�k�}�Q#�6sʃρq.�p����H�0���b�$�*f���I%�����u��6N+�O�� �1G�Oq̊��?��:3�:���*x�UOE�\\"aEQ�O7���g07x�ׂ�!;m��2֬n� �d���H�-V7+� �Z��2̑8\\\\� �/i E�[�5~͐�Y^�& ����\`fA��'ٮ'��57�+�B�qm�[� �yy+�]�SN�e�ȕH���n�9K�_�[�ǖ���*�& t<��� ��p\`�S]T�Gж����x��]�+'�r4w�+� ��U� ���x��4%�j|��؀�_�$�b����▧�}�k�¯j�����m��D�7������E S@P4�6��� �uS7qcn�n�V 0-�Zq7���P+b�T\`���o�T 7�t\\"�6�h�\`�v��>+4�д�MU!q�]V����m�N4쳫�f��jPn G')J<�\`)zd]֍�KS�KS�ꥩf�E^W��;HWE2Ip}��y�LIr%�e(-ei����>��#�v:�rM���t�o<�9,�Ǟ�: ��7���^Ss�� �'�8 � _����E����7a��Š�� ��SI5�3PU{�p�V:�����|l�]9&���ܕ� ]7��j��N;�;�z|I����)E�o�?{\\\\��cXXaYu�n~��W��&���N\\"i��<)ôo���;b��!�'A�@[����{�=�7I*.3.1���>)>����������������\`�̂����5�O��g����6>��.�Xn˳k8�W�zH�z8G�{�߼<����sb3� ������GW��V1�(Y9U��(l��ߢ�������y��NQ�;@R��8���N��@��>{�cb�F!۵?��F��4Ai3��� �#F]��xJ<��d ����fߞ��� ���53c!�)��J����!j��~G<*�I����tJ��Lh���hj ���n)+���d��$�قvAu�Og��0��-n�Gx/��0l��|e�5;��ɗ2��=���\`�Hl_|/�wic�;�, �zД��,vB�ˠE�m3�N�b�5��'Gus�VE���n�� b��<�[���Q }��m���0Ɵ� �O�?��g �>�TE�'^��{��ŃS~�v�ݒ��п����K�� 79�-����Tr�c�|F2߇փ/�E4�V����X��=(�ZT.�g� �ȞP���x����؁�X�y�\\\\c��ɐr�T����T���K����?I��Z��,�3x�%��z�����ę�c�锚V����ZR�ZJ��&j�nj�Z��RZF_���-�k�u|U�oH�<\\"%��\\\\��5w��\\\\9M>��*��� �B�[#��T\\"�� ,*�pX��K�Y>xBz�I�08� > �������TYS�|5~�q�]�w'��9�uc4�8U�m�p�C�|H%j� ��R�nZGs�(i�崞j�]���#綺���$NJd�t�� :eO��%ͣ��w�(.�,���S���&kϊ�g�}�O������rt���i�@ ���N�9��%7�E����S*mm��V�Q��E^P�M�l���C�,���� ���F*0 \`Kp��-98���� ��ҳXy\\\\nƴ�Lv3�XQ��mws���������t��8-��K�hY�ߝ��MΚZ�s���M�� �*�ryE���o�ߙ��&We5=�6�bt�O�Zo��2�˯fh���Ғ�i� Z���qZ=�x�֜���-=���V��oYU�Z;Zz�C�a�s��h��k����ZЪ�'�R7�WsK3�tt�ALU��3t��u�T�+C�ן��� ���&El8NW\\"l��Z3�&η�׎^�6��1��TSyq!��/?� ,>�ަ��S|��}�g˯�x%� �\\\\�i1�D@�殣U�#�w׃�0�m4��P\\"4_���n�(�f�N�gI�Y >5�{���H����f� �sd��� �#�Mn�Et�G7�2:�5t+7�m��V\`�>\`c��)�9M'� �\\\\Kρ���h=��K�� ��!h�\\"ze8�:����n���GH�b=��Y,� ���r@�׺��^A���@�@��w�;����S�C��z]�7zS��d ;��L\\\\,�.����JQ>�� ��\`��)V芰BoO Uc�����a{�E�*~wig��\`g���ǩc%$�h6�g~DM��O����-���1 ���@�\\\\�mn���;��E�?�~�~$�����+︉u�K��<���� RdK ���?���믅N��i2 �! �|Wg�g1SS?Fۭ�A:�̀� P�(����V��@w9��d�m�%��\\\\�j�?@J���#�ƅ�0֯� ����s5�ޥ[��(6��̶#C�t��vf�Z�.� t]���:�n1tb<���C 69��F���\\\\~�߅Ic�Q����^��1��+VF W��\\\\���)�5*2&�U\\"��8��z ���j\`BH���|��T�K�������-8�H��^�������'�Ѐ��S����G�sxp6�h�����%z�H4���ȑ���H�↉K�O诡��p-�L\`{��1�\\"�L=� IŒ�!�XH�S8�MVǘ���D�Ƴ���t.��BA�rmMJ�[:�],�!�����4�v��9���������O�Ī.r%��J[��M DŽ�,��]���8��kߟ_�PU:�]�3a���G�����\\\\�^�&a�t\\"-�E�eY����˛�8\\\\3��K tЎBN��k؁�PK A!9|�� 3org/gradle/wrapper/ExclusiveFileAccessManager.class�W�sW�Y�ګu|i�V�MNZ*;��J�lB�N�K�Ǝ[��t-���v�j��S�B[(���P\`x� 3�L�$x����0� �}�0��+9�%L=��s��ݿ����O�����t<�gZ��Y��jxNG_�pNGϨ×� �x^mME�SKA-E�H �1�� ::\`��vI�b3lIŞDIG��qu���fxJ_�~O��c�u,�J ������ _��5���ɡ� #��� SgGF�� t�_2/�Y�t�S�g9���C�S�Mǟ1��h�t��DE@�v�]��;��.��\\"�,�� �2�|��@t�-R�m�r�jiNz��-�=�\`�3�g�s��,jɎ��|v�3���.yf�,���]�X��e��BAV*�c�K���̀ 0� �ܬ��OU߲��)T=O:~vȴme��{]ԓs�d�W�䕲�-3�Q�d��E��!�C���q�] 0�E�(��;&f�*2�B5���?��^����}��虫\\\\j�L����C���l��tGuZ��5�[\\" �Mn,�r�Q�������t�1��)�,,N��@L��5|C�75|K@g�dٷ�'�hʚwL��Q���tnk�}�2�ts��ҟ&J',�VXj�t��%syN�nE>]��o3��;6���lK�q�oF3�V�B�����>%l�W �!�8$\`��� ������Dղ��3�\\"�x ���D]A��مE�U ��W����x���c�L�Q��V$��Cn�.��O#�&��A7zx� �N5@��T3��(����z��Y�4�}� ��] ҳ�4�?�E�vqݏ�<̏ ����L����N�p�8>K.���1��Dg�[A|�4n�kh�Lp�����S���ES�v\\\\�c�����~]+蘭�vvR���5dw�������=�#r�<��\\\\K��T�����8���lo�7�\`.��Ր��S� W����ĮT� U4]����~�T��7��6���v����7�BZ ��H� ҫ@'�c ���Klϓ��3�1�����c�����DQDDwp>���P�z�p}���@8B gmγ*& _$W�� ��+�k��r�}�F�A?~��(��AZ��8�����:�ư�q���8� ӛ�\\"��؅Q�c��?� z5)��qj��sDP�h� h��F�9҈����u�>�c��~��iMȈvz5�HM���� ��� ��$?b�)n�I�P�$)S������ݳ��hѠǧB����<���q���0��.Ҷ���x��d�(���WW���w@�M�߉�߭5S<�� �a�<��u�.�˟�3��Gh���G�At�=��dl�٦@]�������ys����:�m��O� � ���8x4�?PK A��,y�-org/gradle/wrapper/GradleUserHomeLookup.class�S�N�@= $v��ԔK J)$���� E�\`@\\"\\\\�@��-�sc-��g��O�N�QM��} (1����#�j�� R�\`�뛿̀i��m���P/�Q��WM:����;\\"��+) Q�g4����+�{�� �>��ek�\\"�T��R���rx����y*J$��Wp����B?^$ /V��ԏs~�L��UTI�*�B.�Rūp^��U�qɯQ�Z�N��[����*���я7��foQ�Vux��Z�]�;T,���;��ǻT��n�����rx����������U|��0R*F1��\\"R0��#*6ᒊ;pُ+r�G�xX�#��cr��*>�O��S����H�G�H�?�����*��/�����+*v�sw�ki ���n�w��kW���==�]����)�1�LJ�m+j��j�����Ѥ!,������no�ȩN����l��P�P 6�l��#���P�~_�9@m�H�؝�3��XԐF��zt�nE� D*�mpn�rg2ⵡ�$��� � M�S�Nk��b�v�I��p�|N�A[-2E卭��Zx��Ǵ0͜�-N7J3s��D��^�����}Q����.oV���Bӊ������JT*&�N�u]��6�6�G��> �&�O0�V�>ۘ��R��#�3��PSX���6�p�m�afx��V��+T�hNa�=�'��[}������{ [G�+���\\"� \\\\��jE�GrSh#n�v\\"�J��m�\\"в ��R5h!R��q+m��d� n�������8�Y5w�f� �k�:˯�L8w�����o�����T��N�JU�M;��dP�(Ka�ݘ�X,';R�f��S�X�t�j1�A�����DWi��Q�C7�fSZM�8vRzU����D�ĕ�� <���PK A����\\"org/gradle/wrapper/IDownload.classE�� �0 ������ ^�b��* A�{���(����l|J�Tf $_����uX���! ������ai'$|T�:�/� ?&��NJ��@��XaXQ�Г7�&���zD��V��ʙ&���6�X����\`��-��6��L͉�v��eL��Cz~@F�@��Y�%�H����'����)�9~��<~��WxL�����߰��\\"N�i� �av�yܲ���'�; �W��Q�����?�/D\\\\���V+mĪM˩N����jJ�jǢN4 ��55e�-$��|��� �¤��i�u�MGOhSB�Wt�����%+i/ƌ����F��KL�\\\\г���va:Pљ^hw4*\\\\���kQ���^\\\\)�6jk��������d��Q�|5\\\\$��5g�ʧ��@�y��Њ�p�6\`�&��ƚew�R��r,oI�ښRe��~�멶�\\\\s�n��g�B�s�\`�2Ҏ�Ku��1j4���ZIWU|�WP�1�P��j�Ym�lj 9�49�U�[:��y�c���c)G��ܧ�v���N���45�g�jּyΚ !���BR�g�yq)�P��1.(�e%�O�W�U��N�qM����m�;֚guh�wX� �pg/�����0��aŧM[˦m��i�9�l�H��vX(65���c��� �(�)��X��,J�|��{v���g>B�T᫪���D����T�v�j��t��7��s1\`�t�.U�z���{�̈́�z�e�%ؒ��K)y9X����튢u�,5N V>]���E�#�+�K�%TӗN �>+*�)P�%�Ӄ���M���,r{z7�7��~;�|�n��� Q]]�D]����� ��� �� ����Q��fj����-�V�I@�wĚ�A�O�#=�[\`=e�Y���DY��B�G�7S2�_��� �ӻ�V}\\\\6���T���/z�&pyg��\\"D]թ�XB���~i�'��>H���6��?�e]�G1<� ˧Lh��YQbWfI+�\\"�� �&� ���kX|���!���]ۗ�x+Z��� �3�N\`�yt���e�%X������tLϚ��pp�}'�;��Ƞ.�z�G?�l�n�yjOඖ@����,d�+��/;m.P�Ƕ�-\\"����>�G=��d�k-��&��ⱶϝ�:�u�<�b7LB��\\"!��1�w1u7�q��Q�Մ�5�����}4$�� �#����; �' ߧ ݏ�#�=I�~�b n�q�؆�]� v����na�G܏=�z�#�'Σ_<����‸�[]L�L��a7��ORN��v?ɮ�^I�~��mFu�5�q�Ӯ����rk?���Y��Ӣ/�A�r ��i���n#O��� ��II�~ ��Hv9B��,��{��%4� ��QA#6? :T���.�\\"n�r8���Jf��dO0%��!�^�a����%\`��F����_7��@�PK A�gh�|-org/gradle/wrapper/Install$InstallCheck.class��]OA��i�]�l ��T)�� Q���hR���ۡ,,-�m�� �H4�x�?�xfv�I m����;�s޳3����\`� đ�a9AaE�2]�Q�㚁�ul0U�W\\\\�~\\"R�#��[N�z��1]8����Į�}^��\`��kUk��9�*���U 櫚�஻s(�c�ք��r�>�v�z�X��V\`�����S�Y!%�M�:�N�BE&�NM�n������]�ns��=G��E��eZ���M �V���Q�ǟ85��a�2���m:Tq� �㗄�8���-�cH�5�}��Oæ �:ɮ +����X��%\`k@��h�6$h{dP� o���jgʤ�Woz��e;lUBL������0�4a\`��m�ѱɰ8�#7qK�� �oo�G�n0L��6�� �Q z�\\"HK4KK;4&('w�J�&4��O��Y���Ju�b\\\\�aS�Fs3X��a�&�la�����C�>eQ'��X~�Z~��/mL�J��BcsH� Rl^!3� Ә�L™��f#��'�yN�������� Z�.D��f��&C�,�c��?c�c���� y1�;��9�ʼna^rH| �d��� gqo�8:��~{�;��\\\\&N*�b{����2q��9�0�v�>Y���PK A^�,�C- org/gradle/wrapper/Install.class�Y |T��?'�����\\"! �#�Jؗ@�I ��Z�%yIFf����E[����Ҋ]l�����ME��Z��nv��}�n_[Z�?��L&�C���/��޽�{��9��;O���cD�����\\\\$�Y�L��X���hJ��&�� ��t�gx���H��� 2�N�o��A*���A�&�7i_�qs�Va; n��E���g�,}K���H���4���)o R=�I�+H?���M���A��/ �F�Xc#H���Fnp��tJ�Rc3H۹K�� �pD�K��SF�i7OpT��4+��D��A���BN�-*�|���\\"P���A�����q�7~�4���]A��fi�-��k|��� �%���{e����UA����G�������&�)���h����أ^��5R)3�Z׸�n{��5�n��T�}[�斋��m��T�|�q�Q5��5���w�fߐ~q{�M����Mtw�ӌ��]�m�Q���2�IӪiV�X�L�ƣ ��i�aӺ̼�4�:�k� �9n ���\`�t��#�NE.3�G�f]G��Jm2→�ƍC�I��M$��2]X�:z��&��|��!�i2Ml��͖t�ݴ��$:��Ê�{f�k�D๙�;;�����4ls]$e3�r�\`��á]��eؑD|u���H�Fl\\"��ȟg*?mVШ�[����o��L�qӮپ� $��$�=��e�[�1��QQ}]ޤ��a�y�0��SZy�U�Y���E��P�:�j�]���Ö����e)���[0ّ�¼y�)ɥ�-z� �����tW���\`w=�����x��R�$�)�#mE���M@'��.�m�l��t �s�6œi;�FL����7l��� �����^I\\"�n���=���™�����ݡ���^fZ���| nM$�� Fi=ViW�dp:7?7A��|0�3SV$�������$�?�5�e���zC\\"�M0��lЄG-\\\\3R쵫5�aX�L�*�R��eec;��l-�8 N0:�UP)L%�V��b�ٗ4;l�S��&�j�O���- ��{$�FOb��Hwܰ�6_x ^c���L��سŀ[L+I�$���A���ܸ*�s�it:�4ew&�v�j�� +fض\\"�F���'َD�g�-VB�r}:u8q�鬱2c��͹�]��Z�ǖV: �瓌w�Ԑ�Ō8�OQ��D���I#���8�1��)+���C�W�iFMI���}@����x��x t�@�����'<��F�����h|�k��{�g�m�?�e\`,�Ak�Ik�@.GH�d�l���(�\\"���_�ί/��KS�Ý 3�'�0�\\\\ۈ��F�d���������.���ه�<�^���_��dX���\`X�����<��Q����'\\"�w [$±7&������e~�i�5��0��vY���a�>C���?��W\`R��!�R�Ce�p��mi�ˀs;�)����nW����1.3����F,)�C�7b�,(��O +�{ �����0?��Xh���G���@�:��y4,eS8��ږX.�%aÂh�<t��2��]V\\"��V:%�p*��X8�*��� ��J�ل��T���/;2�e�� ؄�T�8fB���fE��ښ�ۑ��+^$辊Rb8��Y��/)X���E������<}��HL�#�L ��P:�����진��'�@��Y�l��O#�������t��~�{9�r9��9���� �oI��J��E��#�=%ʾ�%Y���=!������/��}���?��Y26�dLPѐHG;U�6F f��pr�:w%�ڰ�i�c�\\"���q���/�O5~Y���u����z��R�_�u� �u�k�ӫ�;�/�������I�W%��Q�W��y�i��|5��$���㴭�J�:ߌFV3(����G�U�LS�JQ�� �zYS��ns�JA �m�#��TV>�.e�(��ۉ)e���Sٝ�3�;zC1E��VQ9��oe�����\\\\�� ��V;m��+H�����s�@S��� 0�kϮi�p��CN��AA�A�.r�s(?ŝ�(�|��/�k�t�Ӱ��€9_G4�ˆ�3޲r���<2K�;�qvb���QqY�+�����{�eO��|?�(kK��m�:�vn�;��C��cI���.u\\"�/�1�v�������}���or���I�^X�O��X��na_�H�#� �X�mX�x\`��{�F:����h\`d��U�p���Y���E~����KQ�H�+s���~8�Nv�kO%�i۔x�$?^�>'��M�z��j2 8F�Hj]���=�N ��S_6b�I���'�M��4S�\\\\nYT4���\\"n������^#b���a�b3/���%��W���/'d����2Wc2��mV�_k��cn�$En�^9��l8�Tb�ID���ǂ3�Z.������=�@��υNzM!W/�d?�阓��d x�y����,'焖�E.���~�ʛX��Ys�iݐ���#��u h�m�: ����e����]^�,�[#o�&��M �l��1��0.n�ٙ����% �r���=��xhYc.�j�uq�v2�zq��t��r\\"�Q��M��x+��P��9�H. T���Q��t��@{=����v8x�ϭ�Š! ���LO�~��WT!����+��Є�j���N~�s�2LS�\\\\�0�fS)��� ��px��F\\"�$2�z� ԓ������i�R�4�k+h�&4�Z*� x�\\\\� y���'�Y�~����hJ[E��UUVR�M}�J�%g9t��*�ZM3h$_����얓s-�D�D>ZE������1�׃�t3}�̀���O�jͤO��O�b�+?�5�w���0����iG)�i���UҌ�r��I��@���[p+ͬ�h�ro��S'�T�y��䬃'~Q=@��^뗇���:��;D�A:���Y�/����n����D�[�_��4�V it���4.䛴p��� �d�t�U~>x�9�n�=r\\"��� �yT�z�2�*F���At.��������!�Xg�Ja�E��7P�Z��vR�S?%�~z�.��&�B�� &-L>K��8!���S&�|��h-��cV\\\\�?���a��/ҝJ�}t���-t>� .^쾖�D����u)i'�֯�^�J4�W��X���^���5:�/MƻFa>N�4jx�Əp� f�y<}\\"<�k�~��3�)Eeއ���S�z�*�R�=��B�Sգ�<ЂD�G��k Z8�H&ݣd_̣B�WC�}���u�����â�a��B7(}��9�u)��z: �����=���a�K_Ƽ�,+saNl7�<�)�ѱ��i.�7�,C�,OaKqTC�TWQ5H�k���Kn�E@�ҝE�4�\`ek��[�|խm@�(\\\\��m!� �|�p������h�n �[j��_ ��#7����=H�B?�W�W�$�!g�zL�Hy�p-PO_Ua}X%Q�7�k�8=�s|���C� QW+ii�Z�nM �^R-�<�� �b�mt��b'�t������- '�^���;�� ~������U��¬s�d(����I(�r�n�8<���悜s���0\\" W����� �c} ��{r�ŒN���g�Y�؀�J��pl�w���������̓T��[�����5�y����E��9\\\\��u��w���q䠦�~�6� �m���!ϡ\\\\l)q_��߇y��Hc��!��N�%�\\"r�������Jfף0���*�����Y;� ��9 �U���䕣��y]�A�ҥ�\\"�Q��,�Sl�2b�g��ϑf���eZL��E\`)�~�9/���)���/�+r~XA�R~Ɠ�?4A�_����@~/ʔ���DҍC�#�A�G�%�h��0y�2ps�&~�JD�*yI@�J\\"��KHVۈ�AJ ��rI���.���=H��� i�g�f�_k���i�w��n|��ΐO!\\\\�y �#� ���N�v��|5r���-�L�D$��[\\\\���,p�������1�h=O�׀\`ރ/���N�mS��w�砲+�PK A�:�o4org/gradle/wrapper/Logger.class��ko�\`���Unc��@�&s*]7��11$KH�\`�w�ʓ�����_�O�Fg� ?��x�R�5K���r��w.��??h�G �b���1TP����4w��+ͶU���]����.;\`XxfX���!R9���Ӳ��!�1,�j<8�>?4�d�ck��qǐ{�0�#�b�vtUwx�����Q;�� ��6m�!W���\\\\5���]�1,�)��@�F\\\\�s ��˵w/��'.Hq�ϰ3��:�NW�����fu���-Ce\\"��!���l�U�#�;��m\\"x�*�@o���b�w����=C���j[�$�B#�� �%q�c���I![3�̔��Jg���X�&��ov�HIFi� � Q��V�(�Iؔ��)r�� /�,��*�������ꊧP�*qw(�P�&n�_ݖ7ۛPK A�\`���8org/gradle/wrapper/PathAssembler$LocalDistribution.class�Q�J�@=������x�+�P��AA(*(��mۥ���M��RP�?J���*�/3sf�̜�}{y���,R����6�.�]�0�U�J.d�a���7<�q�/C��-�IŐޒ�L�� �M�h���ٍ��!W��8l_��:��2~)����+�q7�$u�b2�=Z�d���8b��H�ݐ�Z�Z6J��5ū�no6� �yRߡ� SK?�� ~M$_S�|a���Y�WЈ�I�V�~ϒ5�����>��p]�1��_ 1*BՂ�rCT��_q�iX�OL��Z��|-�� F��d� �S�M>W|+�<�*�>�~0T���u��h ��Y��&�㙉�B�b��5y]Ka�O���u�F~%���w��-�;� �VZG���0T\\\\�u��e/�<��x<�6�������O;����5�D\\\\�� �[�v�a�8�����>��~�֓\\"n��0��4ψxV�s!<�~��^�@?f�'\\"^ �e6_ ��^ �u�Cěn���ri\\\\5-C�ٖ�k���)�XI6M������兹���ə�����lf�����e���*�Z15G�⨀�1]3-Y�咭�8?;snbl����hȅ��\`*Ƥ^f7���TK ���e%o����q]@𔪩�ic۽�φ���E�R5e�.�c^Ε�˹.ʆ�so�o������nS.��5C�T#u^�Vϐe�4�WgQ��K�k��a�IB��Eې�wt�s�|�,X���(��i ( ��MeZf�C �m�����L�4� jE�L��%�lR�m�&es�,�е�6Ai������\\\\T�բbZ�]'S�ۆj]Oe��&�@�Ņ�r1-@��n�:��W*�>AӁ �9K�_���(: ��_U&�,E3�����@��ЫW�/M�R ��]$\`y�R��7�)x��@�[�7M�����5�?�1m��m#��\\"����F񶄯�> 'q���JH� 񈄇1-aѷ�5����] 2r�vRI�j��~�>��/I���_�l����~�w���1N������=��Ŵ_v���?J��,�/����a]@�îL1Si���,����g�Q��i�C��&e ���:kk�ZV�����R!��Vt��6�jۊ�u3±?��ɸ���nI�'�]c���M�ngo��!6�X��I5��p2J%Uͨ�]��k�:��� �39n�ۖ���Ÿ+~��BĆv��/��\\\\w�i��t�)�� ���g�U71K���p�޿-Т� Qs9z��M4'9K�L�DS^Q U����sCi����~�����K��c���kC qWp{�?6�]-hW �E���iN:X�Ђ����7�iz<�fͽ�2�j�׸ :Z��%�����ل;��jڹ�V�/�i�ˍ�+�q[.�;�<:ta�E�{�1���у�q�Y 4�w�|ntdG���S�w�Oh��fK��gg�!����x�&|�;�O;��4�� ZEA�V��6<�3�c1��X �Bvç0p#���_C O���'jO�7Z�W�5�7жT�D��*:\\"�4��i�����N6}#�|�l�u�dcSp�K=��\` {���\\"H� �#�C�O����kH:9N���9��8&(�V��>H\\"��.g����2�� ���;C (��sdɓ�(�&�X��8��¾*��p�t#���K�A7LO�.=�Ћ�a��*�c1Q�w;�z-����G�x�H��z�x�t���6п�'Rj8�u���zvK��tVG>q\\"���!�א���]>�.J}��6�$�38O�m$��1K{�=�y'��:�,8��Bȉ���c��e��%ם��Y�����A ����U1�����9:��e ���Q��u�n|�A�c ������W� ��1{I�X6�Gs�t?�'ד��KU 5��QƠ��DvQNʡqZ�u�x�F{���Ds�9\\\\Z!���];<:�S�T\\"B��o!�-��p}�[�S��)2Be��Tj�s���/�#�(�ct\`���\\\\�:�S���8t����S� ��'�)��h�PK A����| 0org/gradle/wrapper/SystemPropertiesHandler.class�V�SU�]��!,-� ��-�3��TR����%A(��.a�,�ݸٔ�W�~��L}���Ǚ��2c�W��ڱ��& $��9��s~��s�ޛ���?��\\"� �Q� ��P0�Oc(xSNޒڔ�i3 fh@ԏ99�-ż�T,H�;�X�R=.��r����~��{x_���&��c�����r|!:}mn~v�\\":�B�ԚvC �53�;�a&# 㖙u4�Y��9]���aΘ�'Գ(��Vi=g:Ɔ���V��K9#���]Q۶��͔nv�-m��ν�v^g-�*6\`Ja���#Y��\\" GAN� l�����-|,�����g+[� *�Dŧ�L�縥� |��+|��|+�Xyvy�)��'�1Mn�Bʶ6�w{/(���X,��(~> Wٹ�## I���=���(�D���WF��$v t�$�0;��/���~�*�x�B�D�V�\`� -n��|/�#�����)�����y�e�Ǥ2FIi��&�^�ʫ,=A��5��ٶ����T�m�M�fRص/}6��-Ʒ�bU �$e�g���RevX�|�3%���_ ๡~�cg5h�O�W�� -a�������.����5�T ���c��O��_� �����{�L����������P;� e���3�y��؆:�J�{�3�P�w�@����y42ES��p�~Gw�\\"03��V�;�L�M\`���q��=��4�����/��Z��>�u����\`i��N�]x�G7Y� κc�A=�#7?������ �I4�lv1�4��$ Ĩn��q��R!9K�M�-�z���9�Bԯr���W�)�5�\\"� �,����9z|�~�_=/����!�~�L�0���8�WI�H�-_���{��M F1�W�U>�� �=��������Sp�L<\`��ݖ_b�qW��PK A�=��?-org/gradle/wrapper/WrapperConfiguration.class��mOA�g����JK�|i� \\" HULCߐ-��H����&~*M$&�����3w �e��&3�3�������_���:����a�\`@E�G xL�<�2O�<%������xN�8m��P��k����3��5�� �QO��M��5�)����!�Bw�~�+� ��1��sM�(�/;��0�/�w�^����9���sܰ��� �n����Z�d,8t|�Z�kZM��l��ONl�ڍ�����iv,.�s�m���ns�� =�N��N8�u� ѽ���q$&�L*A��=HL)���BCO*A4dF r_ �� s���� �)%Ƞ 2�)�Ae�E�,�� ��$!���X� ��yw� ��y�%^}9�����3� 2�y~��Oȸ�\`;���)H��^V0�YW��^�а�;98��14���724�3��Ot K��Nj�-;ޞ�-#;�[��N3����}H�t �e��]�rbb��Aqy1yp�Ȗm�G�C���N�$��*=� 8%g�9ݲ =/a��z�62��9����u�Ȑ� N�l�=qԤ��1.aC�i���[Z:������k?�̝��\`i�af�Rݘi���z��oX4�֔���r��!v��S�F\`�N3M�-�1�z_arT��Q�5�c���!�2x��ݮ\\\\�)��&* ����ԉ^-�ޫ�cd {���Z��n�! ]��$E�锞s=�' r|˝��4g�9���yJ��� Y��E� ���n� ts@�f�J�BU�(E�2��DK����2t!cj�'-BF�Y�&�v����\\\\�v�w�����d�L��m�z���^B<��d�� �)G�Go..?�n.�LƗ�a�6��z5�K�l�q h�8Y[�#��0H M�(aɨ�-��W ��vМ$����\`Pm��ެ�?}U�b��4F��s�N����V���\\\\;��/T��,P���(�H�dHW)�(�M��5�yb-٫$E;����\\"6� ���v� o�J�V�;�6w����T �$گ���-�T|ߡ�]�y����I�XjZ]�\\"%��)Y�6�>�6i�5�~��g#�M ��;����{,�5�;����U�kUD� �u=��*���$$�)�-���^Q��I?dIe ͞P�#��1���F/Q�0��'�i?e6�!#��(莄�1��e�L�%�|�%y��,d��Kܢ\\"�|j��¡�S�Rq�m�5��U�;^�G�Q�˚h�&��}#Y܎I��7w<}�E�A��'�L�QQ�W�M��U�����ό�D��2�� }ʉx>���1COG���)7r��a�W��T��N{�R�ӓ�|88a��������AXTY����oe݂zfu����y������tR��{���:���v��:�Z��|\`G�_8檫x�8󨊣����~̕��7�:��+x��@��-I �:b�qJ޻q(�Kq6�۷�b��j &�������};dm�?J�p�E����)�@a ڦ��ŕf�hr%��Q���2&��x�g�lL�->lD�����M6�uF�g����ºߏ� C���!̣B�h�^�G��Ю �h�ϳ_F��~�;=�U����7Ӿ˳_�0�kZ��c��z8��Ivz���v����0ixUñp�,sϢf���a\\\\���s oе(�C��� B�b�j��J�%���%�@����,,V.�Z�X@3#�8����ꚑ�RM�\`:B���B�N�c�X@� x�e,��^F8���8isO�[�\`I�QfQ?��b^�� �Ϣa��� �I��t�V9gw��\\"3X�6;�kc�s��9['��_@c�p�� qvC�,bW/��<�guЁE4n\\"k�����XB���e�(�ۉr�}��NLb�n�����<�� ��pa��Kq��K���0 V�HI�8C��K���?RM��Q%ӿV��tʯ<�Z�0�hn!��{ȣ��9o(g.�nmt��rg���RH�\\"2���� �L��D�r� �.<�7�^�Mҫh���7�.@�#�}���� \\"��l�%�4�-��p��Xn�Ŷ���%�PG �2k����Yu� �2�&\\"[�rۇ����[g��~;/@��M��d�客��T��P, Ia�UOs#�M�\\\\�#\\"t[�f8�80���HyCT�!���Hs�����c��/����օ�T�UY��<��0ý�������������8��*C9����ݻm�ʌ=�HN@N��3XL�̈[�[�\\\\ mRH # SdL9�\\\\����ťl� 9O��C(�.�H']��T� ��!ٞ ތīS����]��h�DL��yW�!p 5 ���k�N�<��X�zZ*%q3a�0LQwx�|q�,8��x����?��cKQ���.-�.��\\"�c#�Lg�d �_EXƙ\`-q�-z3Ai̷�D#�7�6������^��=n*����\\"�-����PK A�e� #gradle-wrapper-classpath.properties+(��JM.)�M/JL�I�M���**�+��M��PK A)gradle-wrapper-parameter-names.propertiesPK Aorg/gradle/cli/PK A��?�<S1org/gradle/cli/AbstractCommandLineConverter.class�T]oA= ���\\"��~C?��R*O��h4!����aY�m\`� C��ߢ/4����2��P���a��9{�s���?�PF�@;:v D�c@���{xY9y�x��\\\\Yc�fs� ڑ߱V�g{m[�x�KH��[�{ʅ�'�&?��b�N��ӵKV�-��)�%��^�{������m!mQaظ������|�j�U��n���l㌟�R�{N�����}f[�� C�� ���-��k��ږ�=,ȍ��؂ak^���߫�^t�� ֔���-J��_,�/]���c��t�ˡ�+;X���r��C�uVQ CW� u�h�Ca�oܠ������1a�6C���2Qľ�L��K�� &�!9��a{ Q�23Qu� {�'�M���~rՐ���3|i153 �mn�Devf���߆J����~-C�H�;\\"d�9�����edc� ��Dq�ָSX��\`I�w/!)��:�Fy�7���_�|�@�8_A� #��F��VX! �K\`���R~�;�x��)�>=�N�Rnp���؜�c�h��⟐��ϔ�4=c/�-e��PK A׃��X� ;org/gradle/cli/AbstractPropertiesCommandLineConverter.class�V[WU�N2��0� H��Ԅ��KK�IQJ�������;L�0f���O��Z��Z_�t������A��}N.i�2Y9��}���;�v���O�6�Q0��e|�\`�|��\`w,�'?�� ��H����\` �=�� V���>�B��x�����&c��.cC� ��i���?]c���З1-c���i8��\\"qB[׊k�cr�Ɣ�m�e����B��h���Ћfb~��M�V�d8�i� �ޞf����'��$ F]�p�䙶�0�fv�}-QԬB\\"�9�U ёѻ���E#�0�f���f�[��-�Pv�T�4��V5�%\\\\���X3L�X����QgIW����W]�p��0�?���:���ĒVJFO���MA\`i Үq�����A�1\\\\W@ ��\\\\�A܊�A)5\\"ɓ�4����8,��F�h�J+g� ^�z��KŽ��a�@7��e<��f͂�y\\"�߾�;D='���+�;��%��,��W��J� /G�d����L�Xg<�m�x# ����x �*&0.�Ko '�+�A�|g��<ߡo�(\`[��b�*��Sa�����������C���%M�U�4�ܹz��%�LEu|t��g�1qBu�)�� �k$1���� 5����xE;i1g��Yu[s밨��D:2�KZM�u6�?Al��T'�[�'\\\\�L�z ��o�B��E�1]^����.���&�z6�K�Z6<��S+Y�h~�u.�V�8X�b��u���2��i�t�e��d��N�۾��H;�4A��?2/y/���j���~���43�1���ˀ$� ��<�g�yWjFK$���j,� � �t��D��� �� �'R��k���$G �}/a�N�ƫ֪�j�~�����DH���AR����� ͹?��� �#�0,_;���iq��9|��)�[A�l �q\\"��0���%�T���q�Զ��9��N����R�7��3�w��o��=\\"\\\\�� � b��j��kD�����Q0����-��#Ku�s�u��Q��Ā�ٿ���c�c�ں)Q��=��[��tx�V�p�2�?�\`�'g[��:��YMᶘ��PK A}��yGK1org/gradle/cli/CommandLineArgumentException.class���J1�O�3���Zm+���U�V \\" ��–��i�Ff�̨������$-U�fq�{r�wO�����34K(\`˄mu � ����=}�^DE��S�E�=.�T}.�m���Q���/ ��&���t��_�� G� \\"�]�8�bl *�b&ҫ�=�\\\\�.��$����rA�^��2�(�d�[�ŀf�&՗V��2S���o�/c�PF� ��?^E��5�.)���-��/��1ttu��yN�N�3y��+:���ԕ;XէƬJ�k�⠌u�0�ʜu�g���;�S�~��tӾ���0w3�*6��M�]�PK A����g)org/gradle/cli/CommandLineConverter.class�QMK�@}���ԯ�'�\\"4 F<6� EQ($xߦ�%��vS��<��Q�6�L ]Xv�;����߯o�8w�upJp�L-�6�~/���S���b�f�%�u<� �*D�<.�id���n$�b&לpW'<(a��R�\`�q��Kx��l�r?I�����OF�l��$�j�ήw����vRm_U�%J��������vJQ��?���_��F�%p}�b.�;o���-7ۉZ�3��fSm���i�M�l�g����pl��~Qqk*[9�a��#��PK ASf �g&org/gradle/cli/CommandLineOption.class�V[wUݓ��4�^��i�\\\\�\\"iB�����Z.�^����dL��0�p�w������ .�UY�����.���d:�ܤˇ��s�����N��~����&�m8'�|�kE�Zqo �މ�.E� .�A��A��w�h/�� iEHzWœ���ª8ɉ�C^ܾ&KFA�-A6�n� :�����T�֍Ԝf�Jh�ӳ9�.Z��ݕ�c���沩9��s��ü��V������[y^���7�B�*�����f$�Җ�8#!Z /!����e��J��D���Y�/�����j�L+��Zj��RiCO����j.3��YLj�o8��--��ZFB˘����bq��I[��eC�_�73�Haf��˚5/΄�fZ5TKkw��t� �+:3���NU�dz-�������k����j�괚w��(ʸ.!�a��pV�g�)�)�_C���{ �����c.[$ �k�ҿ�l��'贡�{�RS|~2�v�?����x+��bi����zkN�u#�Y� j>��2�Z��fY�T���R�Q���xu��Wx8R��� E�1�0o���g�m���74���Ӂr_q9��\\\\�WO�w��/j�h��z\\"#�����z�,Zi��.Z��FkP�*؏$}��i��B+ �c��� na��]b���ᶂ�1��|(��� 2>R�1>a�ʠSz���5 ���xA�$>U�D��P~�.*8�� ����%>Ä��������;���g������+Z��Ekߌ�M' g�6-�0 �:� �NV�ϟ=!!�{��LX\`�e2zF�I���3U�\\\\�%�N��e5CC]�Z]AၺmѸYC�Y�b�Z.+���&%�����b �\`��)�s�4 �\\"((��{�j^��<�����Q�*�>\\\\����{�#�������%��N���׃\\\\��&9�I<��x����hz�\`�G4?DKyGN�!$az�Z%��V a �\\"2�� ��5(,�{����� !�۹��=��V�����$�Ij�H���a�D���/�i;��a� �������xʐ�d��8$���TŘf�+q�Y�����r�*6�:^��]�%�׸wG\\\\�788ˉ�H��ir\`��v?/'��얪�����c�Gaf�;B'��F��|v�v��rȵ#�x=��zC�8Pc.���}�vr�c���� JȐ�i1!�h�����]�n��G��S�����������0��� �.�j�5\\"GO���� �����n��J0���.b4��-��Ν�л�n=��w�\\"\`��~�r<�a�s>��)C���0�9y�mj��V!:��|��k��\\"%����*���5&��@TZ�[AkI )����Zb�=N�ʆr2�j��� �s���噜�(�B\`4JY:TCa��e�c��U���*�b2��v�TzCɘ�gKE�ԷN���R�9�r,m:��BM}�V���{\\"O.6��u1᳠��~�-��g~�hW���Kt/�O�vs���� }�+ ��=�]h��Y��,���l$� ���֊����7�� �4O?�� ��gԻ� ����h;_��!��Ѹwi���P����CEӞEV�h\`l�l �,�[��m'GT&p �DA�n��E����!i�/8<~��[$�\\"���V��8z��b3%���+�>g�*h�/V!r'����e���m3=�:Ir��n w���N�0�!�؊u�2�a����I��PK A�D��&3org/gradle/cli/CommandLineParser$AfterOptions.class��mOA��{-�r-�� >W�+p��\\"�D�!$M�Fxa��g9������.��D%����2�^�rҒc������ffwn��׷fqۀ�Qi�u�4��h �IS�tL�a�T�z��j�6�Pɓ5�&yյ���XO�l�ե}���G8�]���x��2Crɫ<� +��M[>�.YN�� w�\\\\:J�I�i0d��m���xB��B�r�卆M�u0r$f����u�~�^����F����+��[.5k՗��-�o0$�����z<A�e�k�ͨ��S �b���V���g<��?�d��\`�Sm��t\\\\cX>��cg�>�v��@]7|�- ƪ�-+�CG��@�ϔ�0� �j��E7 7�c�k��މW7xؒ�1��f�0�0y�d�8��3��5��?U�Ѷ=� q~ :5�h�h�k�mq�����_�2w��C^�2 �\\\\�� �G@�I]�T�����G�i4gL��,~Ab�T �4�\\"A;�����\`ȑm���:C�٤��3q�����hb�oPK A��M�u <org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.class�V�r�T���串�:�I ��I|�sk��iK�^���r�ը���,Ӿ��[��2����x�Hnb�N�0��Ϲ�ٳ���=���_~0��2Nc� K2��ȑ�!aYF�ø���� ǪP�&C�u�!��%�6>�1�u���(68 w��o�z|�a,oٕL�V��zF��5�VS���a�wU���9�^6Lù�ps�_�u W�ݢ���d�֬m��l4jeݾ���$��-M�n��!�M�$�2 ��-[�a�u��(7m2(�MS�תj���ڢ/�xWCiX;P�BNg, �YtT�)���}����3%l1���T��3,�z�o���Kf�=�H�9� T_1$w�bW5�t�?��f�k��5s$]%���������4C� Y �G��p|�@EYx�.���~H@���]*�[q���r�j��;�;�k�G柮G&��İ�SE��Qɪ���z|q��|�y���p�j���( m�j�a8� �˔Ww[E���^lq��6v����(=��WN#�#�rN�YS���.8��~��rW��ß��������K�*b�; Q��\\"Q�iD@�r0�M�[�Ҭ$�?!�H�v����C�Iq����f�.Ɇ��1J�ᮨ�����oZ� }4�{�J��E�F�G��?�3x/�J#����'�Gtr)I�p���g{(EOJ��T)�.>Gd�/�-�G�WZo=sP�#�\`K3�Q��[F�]F�]��pՅ���ڇ�b�Y��h@�~R ���(�!�ijJ3n�����8B�# g��HW���ܱ���a6�:Nx*��9��g\\\\��.{b�� �׹�ڸ��i^E��\`�� N�$��,���S�D���gq����c)�/h�R��PK A�*�ZM�Forg/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.class�S]OA=w��P�Rˇ�\\"�UhAx1���ML�ԏ������v��n�����/��\`|������Ek�C���9��{Ng?���&6 �Q)\`�,9�5�=K&�l�fc��*!��|m2��]B�t%a��|�|�ߓzG�y�)����v�V�&��+�\\"�M?�~�\\"u$ۑV~���Q� N���nx\\" %��6m܏�#�nԍ�֛uB�_Є���\\"�[�f)����ְ�m�*����ȧ�H�j�f�p��\\\\�p �ߩLb������s� ��E����\\"L��d'h��@Kӟ0}��1/d� MXE�n���qsYX�'>9|r9�\\\\�=�w��P�5o���y�$L�̑��i�ft�cye��������}������l�y:E����1k-�LY�n3q�2����\\\\�u�M&:���c�#����2���Oȭ���㿈(&�J\`�R�����؁�p6k�0��,���X��\\\\����*w��M/��PK A|�R��&=org/gradle/cli/CommandLineParser$KnownOptionParserState.class�X�wU��6ͤ�K�*EqD�t��;VkE��E�+. ɐ�3uf҂�HQpCqP�![�>��u�\\\\|���I�\\\\@-V< ���g�Z�Y͓���5ͨ-4Τ�j�ת� 窬��m͵l�� Z�n����pi S�5꿗�$뻦 �b^�)��S��t��d%f���sT�CP��\`�g^�� ���t ����H�@�'�؄N�r�\\"#��^h���N�oGQ7AUߑ�t$� �YFRk�|����y�aC�@��g���pP����n'�I�<:\\\\(�=�Ě�p�����,���᝛���a����ұ<��V��8�o�ST�=�G����K��Q� ��~�q�;~�Wq��W�|����\\\\����T���۰kqS� ���'��'Q.ᖿQs�w8�Th���DL)� Gc�M�CG!O �+�m>V6�d�����hd� �F��^��w�����މ&� a�ࠑ�W�~q���p�N߽̾2BI� �7���!�?PK A$ľ���<org/gradle/cli/CommandLineParser$MissingOptionArgState.class��mO�P��w��*��LD�� �!� ·'�\`0�W�̚�o;��o���B��~?��ܶ�K˒��s~�퟿�~�Œ�r:��'I*(uZG 7�ٌ��q��eМ-�rD��_��K.]S�z�3��B��js�5]���#ņ�u�,n�V��4�\\\\�k�0��#�%�r��w�����[c�U�:�3� WZ� S��6���9��^��Rzx��Z���s�u-��˲V��;���TJ��?n��I/�GQ��w|�m.�UO��Rn�!�eC�w�&à# ֻ �@��~�+���:0��r��\`��#:L�:՞ͭ�1�𦯉��)�[�PR�2��q\\\\�U�%7�ǖڒ�#63���V��t�20�1,��K�\`<�E�����a�$�e�=y&z��a�� ������io٦ Sʞx[t���)<�L/gd�핤�=Ij$i�� ��0iOH��*���~\\"�Cj��A�Q���{�I�����gI�/),��9������ ��}k�4������ �q��Ж��g�2�\`���(L�B�~���e�6n0�)I')B�e���{a�I�㇡�;rL���v�\\\\ Q_Q�����ӕ;������0��AS�B�e4h��Ρd�v6l�o����_є�� �h8%1�+a��U��' ��PK ATK>��=org/gradle/cli/CommandLineParser$OptionAwareParserState.class�U�n�@=��q�$�6\\\\�%�)M�K�@)�p)E� E*o��Į��O� x�$ �J|��Mݒ*A./ޝ���gf퟿��PĽ8ȩ�0*w�Tz���c\\\\�� �*L+(��cVAQ�u���4�ܮ�,�dȖQ/��5̂Ѱ O�p����C�{i����\\\\����e˶�; ���\`�� CdթQ�I��h5��xƫ � ��7*\\\\X����.C�ɶg9���Z��ŵu�6�j���I���,s���]SM��j�%�} �P����녲',��4��!�E]&���8��c$�\${�]p�G�짍���o�R�NK�%�t��i��!���Ә�ЏSnbX���[XP��a � s�����L�f �+��~�a��[��f�:�~���Z�)9h��O�S������ c�s��m�q�r�� |�������F���dU���ԩ��0L�����-=ƽ���_��qk�ޥvr�l0.��ϥF��|���x��!��J�Ӛ�'v�t�!}r�O�Y�Y��,T6�$�a�|i��Z���� �̋dKTT���ȇC�(���<�C�(.��.#��젯�*�&�>Z�7D�!�eSZ2B���#����o��o+5U���c���Cݢ�{�� B��*^�v�#8G�Ni$�y6���+���1E�8�3$r�]��oPK A�%�̻�7org/gradle/cli/CommandLineParser$OptionComparator.class�TmO�P~���Q:� �� � �2@�.�,Y�d�ďe4��kI��?�/~#���ƨ_�� N6).]��}�s�=��~��� �E�%d0#����0+bN�U�J\\"E,IHs;�'\\"V8|U�Sk\\"�z6L��7�e�A(;í�i;�����-� V��n�����)��L�!�{䛎]v�G����� Wl�p˖�y!����P�~\`j�2U�6u���y����N_���z\`Q�W�k�H-�T�� ��T|�%|���4y�\`�P?�UK�j�wM���k��w����uz��-�֤��$�/0L���[3��xѪ��M�7-�O�7� �I�R�i�u��;?ڑ~�S��b@�����Z�a��B���h�Ο�\\\\��i���a+6eY�����g��љ{\\"!c /&��q� ����v�a�[�h��ǂZ�0�0 }��m j��]{���a�=�eўB�$�>��P���}�4�s2�|=ѧ��Q*t�e躣K�.@ >rd ���d$S3gH|$%�!z�p'��a����!�x���D�\\"�2{��9��� �O蹀�S�p� �Hs�wnL8�tr��I\\"��!�y�3Ⱥ2GY�v�����>i<2����<l�4!�M�{�n�V���� �� ��#f�dY��\\"�5���>�{}FC��NS��#ZO�q�ϣH�INQ�2(R�8��˦�S�<�i��� PK A�fC���8org/gradle/cli/CommandLineParser$OptionParserState.class���JAƿ�Y����4ն֨��JoJ�P����H.��$�:���ى� }�/�}��3����4�ߙ���Μ�����#�B���F��UB�Xie? ���o�}IXl)-O���4碛pf���D�F��8��K��ή�J�a2i�VX�T���4�Dd�d��Vj�(6��Ȩ����B�]�Q]��AXH5�ƞ�[�����O���&��B�T3k8��N�+q#�D�8j[�tܘ��K�Md�T�̋�W^'��ۄ��d���[�w{H������ӡ�ɯ�m���s��+a�;����@(?^�Y�J�x���\\\\a{�(��$�_��ׇ{���L |�X�uf��fs'�'�8.� ��ygX�u+���e��/;�����������0���:^�eor�[n��}�y?�\\"k�����g�PK A���E��3org/gradle/cli/CommandLineParser$OptionString.class�T�NA��z��q�ZDQ��G�Qğ kL�&(�[��rx�k�����/$�&>��qv[l�B�����|��������'�9<�E?L�Ĵ�4�B-�0��, �:4�( 1��m�;�ᮆ{ �����#�<�׬�8t��COЈ���͢���T�ݯ�RXgP+A�aXv}ge���o���L�ͽu�Bo�xˍ�U�� C� �wŠǣȡSk9kV-�Uϱlϵ*A����H񚇑�N�S�?s���?��:幘/t*�-���W�!�h�ϐ��汆 /�Tww~e��Ӭe!�rg�c���DQ�乎�OE��;McBһ���-�!��%��.��\\"�{��N'�M��zz����Y%�B65[�m�~��k�E�T�BZƓq�5�<�]/h����}LѾ�>�����M�c��G��MHx���)����PK A\`M~U�2org/gradle/cli/CommandLineParser$ParserState.class�S�o�P�N) s���97ս�&ML�f����.а.���vF�'_|����(�-�� A���G����������mdQ��C-��6�xba�B��{�I/zI�4����\\\\�jϓ���d�b�s�� ��?���4iF�^H(�*tU?'��tU�a���v/Pcg���w���9�\`2r�;$u�Ty�P��/�#}��@��3�I8��c�)O�;�B� / ��Z� �����&���Wt��i2���qf�YC!�����z�Pڕh&ߗ�P2��e��g�v�nӁ�$�$T@|�*>A��%��W|�):�T Џ3����_qI�_q3!��Ź�t��^= x�c @����C��!��:�Z_ e��Y��q�>8YM��H�E�F��w@�@9\\\\\\"��!�v�C��z��1���v񫮥x��&҃�k�$}ˌf��!�u����Tsj]�p9�9�+��1��:�*�4�*4fE�!�������./1Y��� ���?PK A�=l)&org/gradle/cli/CommandLineParser.class�Yi\`\\\\ő�J��7zz�eٲ=\`l��1���S>K6����Xz�Fψ��8B����\`�\`���d ��M�����Ͳaك=� !l��~�ޛ�����PwOwUuUu���O�{��Y�T:�j�W5�ױ�h��/>��)��s�3 ���O�� >ס� y�R�a#��|��|��1�ׄW��%G���ģc�x��S�5��E��]��%_���fF�eu���֤P�t|e�&cu�����q��8&�&���䞬��JO��|7#�P\\"t��M$(�����L8?�=���cq3֔&LM�s�sO��A0�e�AQC(���j]��Z�-um 3f��5i��f� �≦�m�kG0�JKͶh�̚�dc�u;�13c�M������0�[�1�׬�_ݸ���a��5u�֭X�(�� ^��N���1���U�&��V���QQ[٥=I�Ҩ�]��k �G���-\\\\�����Fګm�WEc����\`kجn ���V�\\"����E�9:Gw6�v������1�|�yqe�41���P<�-l҉��H(�H�[R�s�,���J��ؽc�[����-���\`,�~;��DG���|�������K�g�lloi���5M%� ��9.b�I+v�����\\"�[�FU��R�o;�R��\`��FN��3#��mL=� ��4�P�%$�l���u�� * c�Late+�r\\"n���uUC��iظ̀��J���]B\\\\� k���X5�P�j���:��)B�p(^H�i%����n Z��kn ��ݒ��_�>N���� ��&3A�32g R4��d�� Z�8?l�y�O����m'�ˆf@��h�Ռ%sƞU�u��6��3iʭ ŕ������%�p77���DL�^a�E��9͚V\\\\�EW �p� vX8�)��4iFf(M�a��}��.��l?�F�,�N@6�� 7�w�3���§�E�5�F�p J�-���f�n1�R^��:�t[���B�Y��ԙd��3���R÷���M΄A-�V�vm�ϼ�.(S�Y�n�Z�Q_;�S��[Z�x|ڜ�3�K�F�R^�9�fp�U�g �sPY�1O��/ �}��M��X k#���I�Rr ܊[ ܀ ܬF���D��-� �;��&-���i�{�OP<����1�Mڹ�t���\\\\͐׍ku��;5�nHXv��!]r1%�� � �0��Ґ�t *��1��T]Bح��t��-�씸!��ǐK�2C.�+%���ª2C�!W*�or�\\\\Mx��ղZ�m��U�3W����q�\\\\��lE,�r�Rz���[U���V�3�[r�!7(G�(Wr�|ې��jCn���*��%*��Ų!��wYX�����2�u]�4y��ӇY <'�k�P͝��%w'�t�3��lu�Y9L�ُC�'�d�R�{23$*� ��0d�\\\\/�!{�^C�/�hr��7��ܟŞkCP���Ɉ: ��\\\\lȃ���nяE��b�\`��*�ƹc�&{�>Vi%��=f ٽ�wb��eic�^�Rĉ^�Éw�w�\`��� �O�F�3<,�dn>g?�_�y2��|�����%� ��z�X�>\\"�Nd1�V�f�Y72�pLb�h1s}���6=�Jq����Ŵ�*��9���DuX�U���ǻ?���}e������[�ւeN(��q�%�B=�:��FsW����z��~�-)u+Z v{���p,�|������{���\`8�E�< �r�_n��۷�C�c^�{[܉բ�z�v� �46���<[]�k�t6SN��o��;:������ԃ�C���qֻ��[�c��\`���|ݽ��(~�zv��V�7\\\\e���\\"�z����>��L��P_�k���p�6#�+L��h�1I\`�E�4c��/�]A�in��ع��<��hw׆�ڧ0=�՗g3�Nj'\\"�@#y�Yk>nV�0=t�zi��H_�����r3� %?~u�'�\\\\����v��B�� A� ��7��o}m�h��~�� �ǡ�W���s� ��_&�%�@,y�����ő�<ހ� M��<�k�����֭�0nGRZ՞�A<[1�Q; hK�&§i13|d�7�L�]$7$�J����A�h5㡘ٚz=�����贞�_��.��q*:��'�����F��&k�m��l�oU}���������w�kr9�r�x���m>�3�y�⼃�����N� �w�n�W�})����m^Y�Ah���O �YL+,�l\\"G�����˱�����7<���7hb>�x�������i��!_p��h���� 9�Q��}(� ���a�\`���F���˜Zoe�ۋ��局����v�����}r��8i7N\\"e�K�{1�����\\\\N�IAU�[���k|6e)�������=�Lg�i��t�E��:���Rt����=(\\"�4R�A~?��(N{�,$��)��>�ȡ��)Y>gGK;��Ȯ�,J͡���%TZX֋rE\\\\ދ �O�����܍€?i.U�Mj���[�W��\\\\V� ��*�Rv��\\"uG��Y�xm��;��>,�.�����Ӈ�K�֑�l�wlfe/N��oE���'Q����b����Wb#�\`cm3�<� ��؊_�\\"�K��� ����*#\`�x��)h�btH):�Ll�&�evH'�҅.��M��^��Q�~;�9��˸T��7�C\\\\)�5���?�z9�sr��*��h���p?ۻ0��=�Q֜F� {���tw���t�c1~D�����k����U�a����!��t0�F!SE/��w����X��S��'�M��d_ø8�缁羑g���M�'��9����K �(=SX�-,�3��,-N��=��u�S�9�P�i����� ���Q��c\\"���%��p;°��s��\`q��x<����6V�����~,���z*-w�����F�G|��:%f)�XJ�X���BV4[J^ ϑ�^�l��T{���� ��p�����������g�9܅*�+�/#ߒ�Z�JNxy���*���uìR6+�|*,�&����V�U�V} 5^Ƈbi�ҕbY��Ї5������y����\\\\��$h��:4�\\"i��4��h��p�m�7����H����8���T ^��R��x 0�K%��k��A�g�鵓r7s�~��!��o_������ǜ9�\`9����_K_��$��,�+� �J;~);�܆��%�!��My�xw���#){9�%�q�G���2wR�����0 /r5�{���,�5����q�BH��\\\\����� �d^p�K��PΓ�7x�Y���+��b�܋7X:y���x�Y絲F园ɯS��-1����8g��O��{zSe� y�Nv��a��\`�aZ�x��� 5��m��C�d\\"�QL��tL�q:ɛ� e�c%,3w����]}s����S�}���~e?�2<��_��p媲>lJ��0ݩ�j���A^�i� uoQ��E������pê8�~?��oS�w/��-�Oijw�g��޶K�/����U��G�y�^�}�B�����,�ZJ��,;����;ɢ����x�b��f9�r���K�a�2�J|ߋs�=ijS�8T�PqhQn���sʃ�YQ�U�@��O�~lm.��I=o�A\`�2/-�����'a*o���}�CӑMs��wō��iV���*,�K�:&U�@�c��Hb�{V5�ky��E=�!��#�&�P�==� k�Oц?�r�]�?1�>g�A���y{8u c�a�*^����H�*�R��!�V��g��-y�h��.�#�f�N>��_�{EV43$������f�f�N�8�Ѭ����;��l��d�O�� sN����]w�a������i�� ;{���g<�Oaja� v<s�[��G�%.�X\\"���\\"�Q kGOa�X�g\\\\�p�����>�>����.a���.�=������dz����A�#�_�������;q �e�V)^���?PK A��>�&org/gradle/cli/ParsedCommandLine.class�Wiwg~F���ċ�%v�TMc[����R����8�S���)-L���T�(����.Ph١li�7 ��\`rX���;��Ɵ�����}g$Kָ1G�����}����.3�ǽ?���.�v�*��\`�!��*��΢ .��bu�f��T���,.+*�W�BM0#h�'��\\".��T=^��a�����}:�|F�kt� ����0^�7�����/�㋸$�__V�0�A�V���Ma� q������[ ͼ�1s�#+3��ɥ����/�E;����� �f2�n-C���#�2�����i�Җ�� �����U0R��Ғ�KMfr�)y��(��Q0r��*T>c�4y�Z�q���%s�H���˶��Y���h������M�-�C#�\\\\�U��08a�~.k ��*��)Cx��K� �)�LAt�\\\\г���kWY�p�#�A͙ ���� FA|���W�ݳw�/뀽�)x����V5KԶx����:ԕ|)���#�wOP�c���c�I(�V��^y���U�6K������bѴ��\\\\j������3Tp�UG(���|�V�Q��H1�M� 7S8�� �RΊ|{��Y�#۶���nQ/���5^k�Ko�u�O;=F��m,�R���h�q3�5$�bwc�LO�F�ܙm�� �����L���n\\"�����9m�G7M�h�z*gJw�r�v詔D�ճEc �Y��e�y�K�?�a{���?�՜qZ:��fy���ȌY��c��m5����� � �^Xd�k�����ޏဂ6��Y��\\"��|P�[x[�w�= �����1s�=>4�?R�c��f�U�D�O�3��8�*$c�/GW���*�S�.��5�“~�U�n�� |ɘ�_��=�0�a �4� WU\\\\�0��~��p�WL�HZϖ�:zy�py�����*��r�K�}j��c���븪�����֒[���v.��2}Ri����c9SV�U�P�P�IΝir+���9�������g�S�� ����Q��Z�y��ۇ��OB�MkI'ƠG�>�� �=�7r���W=¶~��̜�gD��1[�f(O :��6y��P=𸟳J8�J�e������2m�sQ��P0����-^^��Ц5[����y?�A�C�2?Tj�H܆����m�o\\"@1H1t��XG1r�}k�L%װC���Р�h���&�4�o!�� ;��]LHҰe(��=���Z��[]����;7d���?��k'W���o����� �A�؅속=x�5��:I�C�a��b!Z�cx�(D��p1�')�1��a���8���!�N��*�*&T���=t�hT�����_�P;�=�'��X����/����� F���Ι���bX�@�u #Bw�v�p��\\\\�}b�9�û��x?}�d����������T�}HH.���o!���s��y�V�����O��C��I�/�a$�q�a�x�A1c���x��)R_J@{�& (�+�}�?Av��3x��G�� f����97���CTE�B��\\"���]t���F��.�'���ޜ軅؜��t<�õ2�i ��1�i����_3�%����6� ;Aؓ����q��6�A-��V4Rg��Z�l�G� ����o��rN�$�g��dy�E:��+����N:$��̕��ų�xU� �'\\\\�5��B%ǻ6 Z�3�]^ᜐ��k��>�l�J� ;�k>��e�'*�6z��E�Ge�)��A�<�],;[���S;\\\\��O��r=l8>Y ��߀��^��9ي� ��NL��vcz�ͭ&@S܇��Қg\\\\�H�VvWc�� .��97�{�X�Ř�㰗G�o�� )�ȑ�,�I8�s��Q�HI 0��$Ab�s��9��{�\`_i�*^QUt� � ���������9%�<'� t�E�B^�K��r�vs?��\`��A�^EAEXP QP �dȹ�PK Ay�t�E,org/gradle/cli/ParsedCommandLineOption.class�S]O�@=ݯ�G�e�Pa�eQ���\\"�hHV1Y���awR������l���I�g��N[\`Y$�ә�{�=����?��“4�(��H#�b ���冊�$�4���-L%q[�器+��r��⾊ [�lpWA��ɶ���������(H��a1��p#-�g���,C/{����9*I� Kxs ���U�E�J�%a��:w^�u�\\"��]a�*s�<����!�I�d;�n8�jr�b �s\\\\^]�k5fU%�J��E��V�݅���=Vy������ j�;*i=z&x�� �V�Q㖧��p6K:�d�)��Kn07T@��U�.� �Ÿ �v��ICzt��]p�-)k�DN�(� �t]6Mn0�,���� ��(#�Wm��-��o�-�g�v޿��Ѱ��f0��?L'��Z��D��A�K��@�϶*���$����)���M^!�O���+v�i���Q,7_�������Z~����]�սm\\\\�(K? L�H�.:EЍ8��rZ/PdQ���>��!\\"k��~E쳟}�V�_�*bT�G;-��%����b�X��o�������������\\"��p�(=@&�_���2�w�%��^*��$�A�P�PS��� =1D:��!䉩��If�%�ޱ��n���0�5W(v��b�RD �$���\\"x�j�2D�ϧ��xr7�k> ��!��V.p�]�.��G��ӱ��D�\\\\��8\\"�y R����PK A\\\\v�B| :org/gradle/cli/ProjectPropertiesCommandLineConverter.class��KO�@��D|?Pâ���u�#Q�+�$�C;�1m�  �JW&.��(��1�D�,��9��v�o�/���[@yl汕G)��v� }FHWkw�LS����!�]�nY�7�ZK:̿cJD�����ZRy����s���V�;�H�+-��)���n�kS�#cruLX��gh|��B���j���F��Y���D��Ώ�%�L��%���񎅎*�_���?�ֈ:(\\"�<�ڄbJՍ� ��؊t�f�^*K��� ߵ� XU��V����i01�k ���p8��wZ��8T0g�?P�a�Λ�m����=���C S�s ����| �1\\\\���Z�q-}C�_�J��Eˉ�j��E+ ��w'��PK A �8=|�9org/gradle/cli/SystemPropertiesCommandLineConverter.class���J�@��ثm���j�E�5BPą�R/P�~�ӑ$&�B�JW� ��'i�A�Y�3���͜�����l� �\\"l�Y��l�E �<&� d���@���H��g�L��{:r�R�s�:C*X4NĬ����Q� ۴;hZ3a ѽ�G!]��G�v�7S\\"�5eb o}ɸG�����tFM�z�9��y���~X{()spL\`7e.�KV, �TXxɢ����fDT�E�G��P�W��Jm�h~���49A�jx��Ѱ ��s�h�� gԙ�n8��5��]�.F�Ԓ�s�9��Q��΢��*�s�/@�Ug J*�c�e+s��+1� ��$p�����6���/t-�,�;�h-�.�Z �>k�Z�PK A �AMETA-INF/PK Am�>=@?��)META-INF/MANIFEST.MFPK A�A�org/PK A �A�org/gradle/PK A�A�org/gradle/wrapper/PK A�%Ӧ�/��org/gradle/wrapper/BootstrapMainStarter$1.classPK Ai,�$ -��#org/gradle/wrapper/BootstrapMainStarter.classPK AhQ�}��#���org/gradle/wrapper/Download$1.classPK Ay�[�4�A��p org/gradle/wrapper/Download$DefaultDownloadProgressListener.classPK A���ۡ~4��org/gradle/wrapper/Download$ProxyAuthenticator.classPK A�pO�)�&!���org/gradle/wrapper/Download.classPK Ay�L���1��^$org/gradle/wrapper/DownloadProgressListener.classPK A!9|�� 3��N%org/gradle/wrapper/ExclusiveFileAccessManager.classPK A��,y�-��U,org/gradle/wrapper/GradleUserHomeLookup.classPK APr��� -*��/org/gradle/wrapper/GradleWrapperMain.classPK A����\\"�� 9org/gradle/wrapper/IDownload.classPK A9l�V�\\"���9org/gradle/wrapper/Install$1.classPK A�gh�|-���Borg/gradle/wrapper/Install$InstallCheck.classPK A^�,�C- ��SEorg/gradle/wrapper/Install.classPK A�:�o4��2Zorg/gradle/wrapper/Logger.classPK A�\`���8���\\\\org/gradle/wrapper/PathAssembler$LocalDistribution.classPK A��;+&���^org/gradle/wrapper/PathAssembler.classPK A����| 0�� forg/gradle/wrapper/SystemPropertiesHandler.classPK A�=��?-��korg/gradle/wrapper/WrapperConfiguration.classPK AG�� (��norg/gradle/wrapper/WrapperExecutor.classPK A�e� #��pwgradle-wrapper-classpath.propertiesPK A)���wgradle-wrapper-parameter-names.propertiesPK A�Axorg/gradle/cli/PK A��?�<S1��Hxorg/gradle/cli/AbstractCommandLineConverter.classPK A׃��X� ;���zorg/gradle/cli/AbstractPropertiesCommandLineConverter.classPK A}��yGK1���org/gradle/cli/CommandLineArgumentException.classPK A����g)���org/gradle/cli/CommandLineConverter.classPK ASf �g&��z�org/gradle/cli/CommandLineOption.classPK A�튯��(����org/gradle/cli/CommandLineParser$1.classPK A$f{K� ;����org/gradle/cli/CommandLineParser$AfterFirstSubCommand.classPK A�D��&3��O�org/gradle/cli/CommandLineParser$AfterOptions.classPK A��M�u <��B�org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classPK A�*�ZM�F����org/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.classPK A|�R��&=��I�org/gradle/cli/CommandLineParser$KnownOptionParserState.classPK A$ľ���<��t�org/gradle/cli/CommandLineParser$MissingOptionArgState.classPK ATK>��=��s�org/gradle/cli/CommandLineParser$OptionAwareParserState.classPK A�%�̻�7��x�org/gradle/cli/CommandLineParser$OptionComparator.classPK A�fC���8����org/gradle/cli/CommandLineParser$OptionParserState.classPK A���E��3����org/gradle/cli/CommandLineParser$OptionString.classPK AgAq��x=����org/gradle/cli/CommandLineParser$OptionStringComparator.classPK A\`M~U�2��p�org/gradle/cli/CommandLineParser$ParserState.classPK Ap�X �k?��ıorg/gradle/cli/CommandLineParser$UnknownOptionParserState.classPK A�=l)&����org/gradle/cli/CommandLineParser.classPK A��>�&��X�org/gradle/cli/ParsedCommandLine.classPK Ay�t�E,��e�org/gradle/cli/ParsedCommandLineOption.classPK A\\\\v�B| :����org/gradle/cli/ProjectPropertiesCommandLineConverter.classPK A �8=|�9��]�org/gradle/cli/SystemPropertiesCommandLineConverter.classPK44J0�", "generated/java/gradle/wrapper/gradle-wrapper.properties": "distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\\\\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists ", "generated/java/gradlew": "#!/bin/sh # # Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the \\"License\\"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an \\"AS IS\\" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ############################################################################## # # Gradle start up script for POSIX generated by Gradle. # # Important for running: # # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is # noncompliant, but you have some other compliant shell such as ksh or # bash, then to run this script, type that shell name before the whole # command line, like: # # ksh Gradle # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: # * functions; # * expansions «$var», «\${var}», «\${var:-default}», «\${var+SET}», # «\${var#prefix}», «\${var%suffix}», and «$( cmd )»; # * compound commands having a testable exit status, especially «case»; # * various built-in commands including «command», «set», and «ulimit». # # Important for patching: # # (2) This script targets any POSIX shell, so it avoids extensions provided # by Bash, Ksh, etc; in particular arrays are avoided. # # The \\"traditional\\" practice of packing multiple parameters into a # space-separated string is a well documented source of bugs and security # problems, so this is (mostly) avoided, by progressively accumulating # options in \\"$@\\", and eventually passing that to Java. # # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; # see the in-line comments for details. # # There are tweaks for specific operating systems such as AIX, CygWin, # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. # ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link app_path=$0 # Need this for daisy-chained symlinks. while APP_HOME=\${app_path%\\"\${app_path##*/}\\"} # leaves a trailing /; empty if no leading path [ -h \\"$app_path\\" ] do ls=$( ls -ld \\"$app_path\\" ) link=\${ls#*' -> '} case $link in #( /*) app_path=$link ;; #( *) app_path=$APP_HOME$link ;; esac done APP_HOME=$( cd \\"\${APP_HOME:-./}\\" && pwd -P ) || exit APP_NAME=\\"Gradle\\" APP_BASE_NAME=\${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 \\"-Xmx64m\\" \\"-Xms64m\\"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum warn () { echo \\"$*\\" } >&2 die () { echo echo \\"$*\\" echo exit 1 } >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case \\"$( uname )\\" in #( CYGWIN* ) cygwin=true ;; #( Darwin* ) darwin=true ;; #( MSYS* | MINGW* ) msys=true ;; #( NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n \\"$JAVA_HOME\\" ] ; then if [ -x \\"$JAVA_HOME/jre/sh/java\\" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD=$JAVA_HOME/jre/sh/java else JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x \\"$JAVACMD\\" ] ; then die \\"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation.\\" fi else JAVACMD=java which java >/dev/null 2>&1 || die \\"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation.\\" fi # Increase the maximum file descriptors if we can. if ! \\"$cygwin\\" && ! \\"$darwin\\" && ! \\"$nonstop\\" ; then case $MAX_FD in #( max*) MAX_FD=$( ulimit -H -n ) || warn \\"Could not query maximum file descriptor limit\\" esac case $MAX_FD in #( '' | soft) :;; #( *) ulimit -n \\"$MAX_FD\\" || warn \\"Could not set maximum file descriptor limit to $MAX_FD\\" esac fi # Collect all arguments for the java command, stacking in reverse order: # * args from the command line # * the main class name # * -classpath # * -D...appname settings # * --module-path (only if needed) # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java if \\"$cygwin\\" || \\"$msys\\" ; then APP_HOME=$( cygpath --path --mixed \\"$APP_HOME\\" ) CLASSPATH=$( cygpath --path --mixed \\"$CLASSPATH\\" ) JAVACMD=$( cygpath --unix \\"$JAVACMD\\" ) # Now convert the arguments - kludge to limit ourselves to /bin/sh for arg do if case $arg in #( -*) false ;; # don't mess with options #( /?*) t=\${arg#/} t=/\${t%%/*} # looks like a POSIX filepath [ -e \\"$t\\" ] ;; #( *) false ;; esac then arg=$( cygpath --path --ignore --mixed \\"$arg\\" ) fi # Roll the args list around exactly as many times as the number of # args, so each arg winds up back in the position where it started, but # possibly modified. # # NB: a \`for\` loop captures its iteration list before it begins, so # changing the positional parameters here affects neither the number of # iterations, nor the values presented in \`arg\`. shift # remove old arg set -- \\"$@\\" \\"$arg\\" # push replacement arg done fi # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in # double quotes to make sure that they get re-expanded; and # * put everything else in single quotes, so that it's not re-expanded. set -- \\\\ \\"-Dorg.gradle.appname=$APP_BASE_NAME\\" \\\\ -classpath \\"$CLASSPATH\\" \\\\ org.gradle.wrapper.GradleWrapperMain \\\\ \\"$@\\" # Use \\"xargs\\" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. # # In Bash we could simply go: # # readarray ARGS < <( xargs -n1 <<<\\"$var\\" ) && # set -- \\"\${ARGS[@]}\\" \\"$@\\" # # but POSIX shell has neither arrays nor command substitution, so instead we # post-process each arg (as a line of input to sed) to backslash-escape any # character that might be a shell metacharacter, then use eval to reverse # that process (while maintaining the separation between arguments), and wrap # the whole thing up as a single \\"set\\" statement. # # This will of course break if any of these variables contains a newline or # an unmatched quote. # eval \\"set -- $( printf '%s\\\\n' \\"$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\\" | xargs -n1 | sed ' s~[^-[:alnum:]+,./:=@_]~\\\\\\\\&~g; ' | tr '\\\\n' ' ' )\\" '\\"$@\\"' exec \\"$JAVACMD\\" \\"$@\\" ", "generated/java/gradlew.bat": "@rem @rem Copyright 2015 the original author or authors. @rem @rem Licensed under the Apache License, Version 2.0 (the \\"License\\"); @rem you may not use this file except in compliance with the License. @rem You may obtain a copy of the License at @rem @rem https://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an \\"AS IS\\" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem @if \\"%DEBUG%\\" == \\"\\" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if \\"%OS%\\"==\\"Windows_NT\\" setlocal set DIRNAME=%~dp0 if \\"%DIRNAME%\\" == \\"\\" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Resolve any \\".\\" and \\"..\\" in APP_HOME to make it shorter. for %%i in (\\"%APP_HOME%\\") do set APP_HOME=%%~fi @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS=-Dfile.encoding=UTF-8 \\"-Xmx64m\\" \\"-Xms64m\\" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if \\"%ERRORLEVEL%\\" == \\"0\\" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:\\"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist \\"%JAVA_EXE%\\" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\\\\gradle\\\\wrapper\\\\gradle-wrapper.jar @rem Execute Gradle \\"%JAVA_EXE%\\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \\"-Dorg.gradle.appname=%APP_BASE_NAME%\\" -classpath \\"%CLASSPATH%\\" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell if \\"%ERRORLEVEL%\\"==\\"0\\" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not \\"\\" == \\"%GRADLE_EXIT_CONSOLE%\\" exit 1 exit /b 1 :mainEnd if \\"%OS%\\"==\\"Windows_NT\\" endlocal :omega ", "generated/java/package.json": Object { "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \\"npx projen\\".", "__pdk__": true, "name": "myapijava", "scripts": Object { "build": "npx projen build", "compile": "npx projen compile", "default": "npx projen default", "package": "npx projen package", "post-compile": "npx projen post-compile", "pre-compile": "npx projen pre-compile", "test": "npx projen test", }, "version": "0.0.0", }, "generated/java/pom.xml": " 4.0.0 com.generated.api myapi-java 0.0.0 jar myapijava UTF-8 org.apache.maven.plugins maven-compiler-plugin 3.8.1 1.8 1.8 org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M3 3.6 enforce-maven enforce org.apache.maven.plugins maven-jar-plugin 3.2.0 true true true org.apache.maven.plugins maven-javadoc-plugin 3.2.0 false protected false -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 attach-javadocs jar org.apache.maven.plugins maven-source-plugin 3.2.1 attach-sources jar com.amazonaws aws-lambda-java-core 1.2.1 com.amazonaws aws-lambda-java-events 3.11.0 com.google.code.findbugs jsr305 3.0.2 com.google.code.gson gson 2.9.1 com.squareup.okhttp3 logging-interceptor 4.10.0 com.squareup.okhttp3 okhttp 4.10.0 io.gsonfire gson-fire 1.8.5 io.swagger swagger-annotations 1.6.8 jakarta.annotation jakarta.annotation-api 1.3.5 javax.ws.rs javax.ws.rs-api 2.1.1 javax.ws.rs jsr311-api 1.1.1 org.apache.commons commons-lang3 3.12.0 org.openapitools jackson-databind-nullable 0.2.4 org.projectlombok lombok 1.18.24 org.junit.jupiter junit-jupiter-api 5.9.1 test org.mockito mockito-core 3.12.4 test ", "generated/java/settings.gradle": "rootProject.name = \\"myapi-java\\"", "generated/java/src/main/AndroidManifest.xml": " ", "generated/java/src/main/java/com/generated/api/myapijava/client/ApiCallback.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import java.io.IOException; import java.util.Map; import java.util.List; /** * Callback for asynchronous API call. * * @param The return type */ public interface ApiCallback { /** * This is called when the API call fails. * * @param e The exception causing the failure * @param statusCode Status code of the response if available, otherwise it would be 0 * @param responseHeaders Headers of the response if available, otherwise it would be null */ void onFailure(ApiException e, int statusCode, Map> responseHeaders); /** * This is called when the API call succeeded. * * @param result The result deserialized from response * @param statusCode Status code of the response * @param responseHeaders Headers of the response */ void onSuccess(T result, int statusCode, Map> responseHeaders); /** * This is called when the API upload processing. * * @param bytesWritten bytes Written * @param contentLength content length of request body * @param done write end */ void onUploadProgress(long bytesWritten, long contentLength, boolean done); /** * This is called when the API download processing. * * @param bytesRead bytes Read * @param contentLength content length of the response * @param done Read end */ void onDownloadProgress(long bytesRead, long contentLength, boolean done); } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ApiClient.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import okhttp3.*; import okhttp3.internal.http.HttpMethod; import okhttp3.internal.tls.OkHostnameVerifier; import okhttp3.logging.HttpLoggingInterceptor; import okhttp3.logging.HttpLoggingInterceptor.Level; import okio.Buffer; import okio.BufferedSink; import okio.Okio; import javax.net.ssl.*; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.net.URI; import java.net.URLConnection; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Paths; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.SecureRandom; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.text.DateFormat; import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.Map.Entry; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.generated.api.myapijava.client.auth.Authentication; import com.generated.api.myapijava.client.auth.HttpBasicAuth; import com.generated.api.myapijava.client.auth.HttpBearerAuth; import com.generated.api.myapijava.client.auth.ApiKeyAuth; /** *

ApiClient class.

*/ public class ApiClient { private String basePath = \\"http://localhost\\"; protected List servers = new ArrayList(Arrays.asList( new ServerConfiguration( \\"\\", \\"No description provided\\", new HashMap() ) )); protected Integer serverIndex = 0; protected Map serverVariables = null; private boolean debugging = false; private Map defaultHeaderMap = new HashMap(); private Map defaultCookieMap = new HashMap(); private String tempFolderPath = null; private Map authentications; private DateFormat dateFormat; private DateFormat datetimeFormat; private boolean lenientDatetimeFormat; private int dateLength; private InputStream sslCaCert; private boolean verifyingSsl; private KeyManager[] keyManagers; private OkHttpClient httpClient; private JSON json; private HttpLoggingInterceptor loggingInterceptor; /** * Basic constructor for ApiClient */ public ApiClient() { init(); initHttpClient(); // Setup authentications (key: authentication name, value: authentication). // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } /** * Basic constructor with custom OkHttpClient * * @param client a {@link okhttp3.OkHttpClient} object */ public ApiClient(OkHttpClient client) { init(); httpClient = client; // Setup authentications (key: authentication name, value: authentication). // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } private void initHttpClient() { initHttpClient(Collections.emptyList()); } private void initHttpClient(List interceptors) { OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.addNetworkInterceptor(getProgressInterceptor()); for (Interceptor interceptor: interceptors) { builder.addInterceptor(interceptor); } httpClient = builder.build(); } private void init() { verifyingSsl = true; json = new JSON(); // Set default User-Agent. setUserAgent(\\"OpenAPI-Generator/0.0.0/java\\"); authentications = new HashMap(); } /** * Get base path * * @return Base path */ public String getBasePath() { return basePath; } /** * Set base path * * @param basePath Base path of the URL (e.g http://localhost * @return An instance of OkHttpClient */ public ApiClient setBasePath(String basePath) { this.basePath = basePath; return this; } public List getServers() { return servers; } public ApiClient setServers(List servers) { this.servers = servers; return this; } public Integer getServerIndex() { return serverIndex; } public ApiClient setServerIndex(Integer serverIndex) { this.serverIndex = serverIndex; return this; } public Map getServerVariables() { return serverVariables; } public ApiClient setServerVariables(Map serverVariables) { this.serverVariables = serverVariables; return this; } /** * Get HTTP client * * @return An instance of OkHttpClient */ public OkHttpClient getHttpClient() { return httpClient; } /** * Set HTTP client, which must never be null. * * @param newHttpClient An instance of OkHttpClient * @return Api Client * @throws java.lang.NullPointerException when newHttpClient is null */ public ApiClient setHttpClient(OkHttpClient newHttpClient) { this.httpClient = Objects.requireNonNull(newHttpClient, \\"HttpClient must not be null!\\"); return this; } /** * Get JSON * * @return JSON object */ public JSON getJSON() { return json; } /** * Set JSON * * @param json JSON object * @return Api client */ public ApiClient setJSON(JSON json) { this.json = json; return this; } /** * True if isVerifyingSsl flag is on * * @return True if isVerifySsl flag is on */ public boolean isVerifyingSsl() { return verifyingSsl; } /** * Configure whether to verify certificate and hostname when making https requests. * Default to true. * NOTE: Do NOT set to false in production code, otherwise you would face multiple types of cryptographic attacks. * * @param verifyingSsl True to verify TLS/SSL connection * @return ApiClient */ public ApiClient setVerifyingSsl(boolean verifyingSsl) { this.verifyingSsl = verifyingSsl; applySslSettings(); return this; } /** * Get SSL CA cert. * * @return Input stream to the SSL CA cert */ public InputStream getSslCaCert() { return sslCaCert; } /** * Configure the CA certificate to be trusted when making https requests. * Use null to reset to default. * * @param sslCaCert input stream for SSL CA cert * @return ApiClient */ public ApiClient setSslCaCert(InputStream sslCaCert) { this.sslCaCert = sslCaCert; applySslSettings(); return this; } /** *

Getter for the field keyManagers.

* * @return an array of {@link javax.net.ssl.KeyManager} objects */ public KeyManager[] getKeyManagers() { return keyManagers; } /** * Configure client keys to use for authorization in an SSL session. * Use null to reset to default. * * @param managers The KeyManagers to use * @return ApiClient */ public ApiClient setKeyManagers(KeyManager[] managers) { this.keyManagers = managers; applySslSettings(); return this; } /** *

Getter for the field dateFormat.

* * @return a {@link java.text.DateFormat} object */ public DateFormat getDateFormat() { return dateFormat; } /** *

Setter for the field dateFormat.

* * @param dateFormat a {@link java.text.DateFormat} object * @return a {@link com.generated.api.myapijava.client.ApiClient} object */ public ApiClient setDateFormat(DateFormat dateFormat) { JSON.setDateFormat(dateFormat); return this; } /** *

Set SqlDateFormat.

* * @param dateFormat a {@link java.text.DateFormat} object * @return a {@link com.generated.api.myapijava.client.ApiClient} object */ public ApiClient setSqlDateFormat(DateFormat dateFormat) { JSON.setSqlDateFormat(dateFormat); return this; } /** *

Set OffsetDateTimeFormat.

* * @param dateFormat a {@link java.time.format.DateTimeFormatter} object * @return a {@link com.generated.api.myapijava.client.ApiClient} object */ public ApiClient setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { JSON.setOffsetDateTimeFormat(dateFormat); return this; } /** *

Set LocalDateFormat.

* * @param dateFormat a {@link java.time.format.DateTimeFormatter} object * @return a {@link com.generated.api.myapijava.client.ApiClient} object */ public ApiClient setLocalDateFormat(DateTimeFormatter dateFormat) { JSON.setLocalDateFormat(dateFormat); return this; } /** *

Set LenientOnJson.

* * @param lenientOnJson a boolean * @return a {@link com.generated.api.myapijava.client.ApiClient} object */ public ApiClient setLenientOnJson(boolean lenientOnJson) { JSON.setLenientOnJson(lenientOnJson); return this; } /** * Get authentications (key: authentication name, value: authentication). * * @return Map of authentication objects */ public Map getAuthentications() { return authentications; } /** * Get authentication for the given name. * * @param authName The authentication name * @return The authentication, null if not found */ public Authentication getAuthentication(String authName) { return authentications.get(authName); } /** * Helper method to set username for the first HTTP basic authentication. * * @param username Username */ public void setUsername(String username) { for (Authentication auth : authentications.values()) { if (auth instanceof HttpBasicAuth) { ((HttpBasicAuth) auth).setUsername(username); return; } } throw new RuntimeException(\\"No HTTP basic authentication configured!\\"); } /** * Helper method to set password for the first HTTP basic authentication. * * @param password Password */ public void setPassword(String password) { for (Authentication auth : authentications.values()) { if (auth instanceof HttpBasicAuth) { ((HttpBasicAuth) auth).setPassword(password); return; } } throw new RuntimeException(\\"No HTTP basic authentication configured!\\"); } /** * Helper method to set API key value for the first API key authentication. * * @param apiKey API key */ public void setApiKey(String apiKey) { for (Authentication auth : authentications.values()) { if (auth instanceof ApiKeyAuth) { ((ApiKeyAuth) auth).setApiKey(apiKey); return; } } throw new RuntimeException(\\"No API key authentication configured!\\"); } /** * Helper method to set API key prefix for the first API key authentication. * * @param apiKeyPrefix API key prefix */ public void setApiKeyPrefix(String apiKeyPrefix) { for (Authentication auth : authentications.values()) { if (auth instanceof ApiKeyAuth) { ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix); return; } } throw new RuntimeException(\\"No API key authentication configured!\\"); } /** * Helper method to set access token for the first OAuth2 authentication. * * @param accessToken Access token */ public void setAccessToken(String accessToken) { throw new RuntimeException(\\"No OAuth2 authentication configured!\\"); } /** * Helper method to set credentials for AWSV4 Signature * * @param accessKey Access Key * @param secretKey Secret Key * @param region Region * @param service Service to access to */ public void setAWS4Configuration(String accessKey, String secretKey, String region, String service) { throw new RuntimeException(\\"No AWS4 authentication configured!\\"); } /** * Set the User-Agent header's value (by adding to the default header map). * * @param userAgent HTTP request's user agent * @return ApiClient */ public ApiClient setUserAgent(String userAgent) { addDefaultHeader(\\"User-Agent\\", userAgent); return this; } /** * Add a default header. * * @param key The header's key * @param value The header's value * @return ApiClient */ public ApiClient addDefaultHeader(String key, String value) { defaultHeaderMap.put(key, value); return this; } /** * Add a default cookie. * * @param key The cookie's key * @param value The cookie's value * @return ApiClient */ public ApiClient addDefaultCookie(String key, String value) { defaultCookieMap.put(key, value); return this; } /** * Check that whether debugging is enabled for this API client. * * @return True if debugging is enabled, false otherwise. */ public boolean isDebugging() { return debugging; } /** * Enable/disable debugging for this API client. * * @param debugging To enable (true) or disable (false) debugging * @return ApiClient */ public ApiClient setDebugging(boolean debugging) { if (debugging != this.debugging) { if (debugging) { loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(Level.BODY); httpClient = httpClient.newBuilder().addInterceptor(loggingInterceptor).build(); } else { final OkHttpClient.Builder builder = httpClient.newBuilder(); builder.interceptors().remove(loggingInterceptor); httpClient = builder.build(); loggingInterceptor = null; } } this.debugging = debugging; return this; } /** * The path of temporary folder used to store downloaded files from endpoints * with file response. The default value is null, i.e. using * the system's default temporary folder. * * @see createTempFile * @return Temporary folder path */ public String getTempFolderPath() { return tempFolderPath; } /** * Set the temporary folder path (for downloading files) * * @param tempFolderPath Temporary folder path * @return ApiClient */ public ApiClient setTempFolderPath(String tempFolderPath) { this.tempFolderPath = tempFolderPath; return this; } /** * Get connection timeout (in milliseconds). * * @return Timeout in milliseconds */ public int getConnectTimeout() { return httpClient.connectTimeoutMillis(); } /** * Sets the connect timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and * {@link java.lang.Integer#MAX_VALUE}. * * @param connectionTimeout connection timeout in milliseconds * @return Api client */ public ApiClient setConnectTimeout(int connectionTimeout) { httpClient = httpClient.newBuilder().connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS).build(); return this; } /** * Get read timeout (in milliseconds). * * @return Timeout in milliseconds */ public int getReadTimeout() { return httpClient.readTimeoutMillis(); } /** * Sets the read timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and * {@link java.lang.Integer#MAX_VALUE}. * * @param readTimeout read timeout in milliseconds * @return Api client */ public ApiClient setReadTimeout(int readTimeout) { httpClient = httpClient.newBuilder().readTimeout(readTimeout, TimeUnit.MILLISECONDS).build(); return this; } /** * Get write timeout (in milliseconds). * * @return Timeout in milliseconds */ public int getWriteTimeout() { return httpClient.writeTimeoutMillis(); } /** * Sets the write timeout (in milliseconds). * A value of 0 means no timeout, otherwise values must be between 1 and * {@link java.lang.Integer#MAX_VALUE}. * * @param writeTimeout connection timeout in milliseconds * @return Api client */ public ApiClient setWriteTimeout(int writeTimeout) { httpClient = httpClient.newBuilder().writeTimeout(writeTimeout, TimeUnit.MILLISECONDS).build(); return this; } /** * Format the given parameter object into string. * * @param param Parameter * @return String representation of the parameter */ public String parameterToString(Object param) { if (param == null) { return \\"\\"; } else if (param instanceof Date || param instanceof OffsetDateTime || param instanceof LocalDate) { //Serialize to json string and remove the \\" enclosing characters String jsonStr = JSON.serialize(param); return jsonStr.substring(1, jsonStr.length() - 1); } else if (param instanceof Collection) { StringBuilder b = new StringBuilder(); for (Object o : (Collection) param) { if (b.length() > 0) { b.append(\\",\\"); } b.append(o); } return b.toString(); } else { return String.valueOf(param); } } /** * Formats the specified query parameter to a list containing a single {@code Pair} object. * * Note that {@code value} must not be a collection. * * @param name The name of the parameter. * @param value The value of the parameter. * @return A list containing a single {@code Pair} object. */ public List parameterToPair(String name, Object value) { List params = new ArrayList(); // preconditions if (name == null || name.isEmpty() || value == null || value instanceof Collection) { return params; } params.add(new Pair(name, parameterToString(value))); return params; } /** * Formats the specified collection query parameters to a list of {@code Pair} objects. * * Note that the values of each of the returned Pair objects are percent-encoded. * * @param collectionFormat The collection format of the parameter. * @param name The name of the parameter. * @param value The value of the parameter. * @return A list of {@code Pair} objects. */ public List parameterToPairs(String collectionFormat, String name, Collection value) { List params = new ArrayList(); // preconditions if (name == null || name.isEmpty() || value == null || value.isEmpty()) { return params; } // create the params based on the collection format if (\\"multi\\".equals(collectionFormat)) { for (Object item : value) { params.add(new Pair(name, escapeString(parameterToString(item)))); } return params; } // collectionFormat is assumed to be \\"csv\\" by default String delimiter = \\",\\"; // escape all delimiters except commas, which are URI reserved // characters if (\\"ssv\\".equals(collectionFormat)) { delimiter = escapeString(\\" \\"); } else if (\\"tsv\\".equals(collectionFormat)) { delimiter = escapeString(\\"\\\\t\\"); } else if (\\"pipes\\".equals(collectionFormat)) { delimiter = escapeString(\\"|\\"); } StringBuilder sb = new StringBuilder(); for (Object item : value) { sb.append(delimiter); sb.append(escapeString(parameterToString(item))); } params.add(new Pair(name, sb.substring(delimiter.length()))); return params; } /** * Formats the specified collection path parameter to a string value. * * @param collectionFormat The collection format of the parameter. * @param value The value of the parameter. * @return String representation of the parameter */ public String collectionPathParameterToString(String collectionFormat, Collection value) { // create the value based on the collection format if (\\"multi\\".equals(collectionFormat)) { // not valid for path params return parameterToString(value); } // collectionFormat is assumed to be \\"csv\\" by default String delimiter = \\",\\"; if (\\"ssv\\".equals(collectionFormat)) { delimiter = \\" \\"; } else if (\\"tsv\\".equals(collectionFormat)) { delimiter = \\"\\\\t\\"; } else if (\\"pipes\\".equals(collectionFormat)) { delimiter = \\"|\\"; } StringBuilder sb = new StringBuilder() ; for (Object item : value) { sb.append(delimiter); sb.append(parameterToString(item)); } return sb.substring(delimiter.length()); } /** * Sanitize filename by removing path. * e.g. ../../sun.gif becomes sun.gif * * @param filename The filename to be sanitized * @return The sanitized filename */ public String sanitizeFilename(String filename) { return filename.replaceAll(\\".*[/\\\\\\\\\\\\\\\\]\\", \\"\\"); } /** * Check if the given MIME is a JSON MIME. * JSON MIME examples: * application/json * application/json; charset=UTF8 * APPLICATION/JSON * application/vnd.company+json * \\"* / *\\" is also default to JSON * @param mime MIME (Multipurpose Internet Mail Extensions) * @return True if the given MIME is JSON, false otherwise. */ public boolean isJsonMime(String mime) { String jsonMime = \\"(?i)^(application/json|[^;/ \\\\t]+/[^;/ \\\\t]+[+]json)[ \\\\t]*(;.*)?$\\"; return mime != null && (mime.matches(jsonMime) || mime.equals(\\"*/*\\")); } /** * Select the Accept header's value from the given accepts array: * if JSON exists in the given array, use it; * otherwise use all of them (joining into a string) * * @param accepts The accepts array to select from * @return The Accept header to use. If the given array is empty, * null will be returned (not to set the Accept header explicitly). */ public String selectHeaderAccept(String[] accepts) { if (accepts.length == 0) { return null; } for (String accept : accepts) { if (isJsonMime(accept)) { return accept; } } return StringUtil.join(accepts, \\",\\"); } /** * Select the Content-Type header's value from the given array: * if JSON exists in the given array, use it; * otherwise use the first one of the array. * * @param contentTypes The Content-Type array to select from * @return The Content-Type header to use. If the given array is empty, * returns null. If it matches \\"any\\", JSON will be used. */ public String selectHeaderContentType(String[] contentTypes) { if (contentTypes.length == 0) { return null; } if (contentTypes[0].equals(\\"*/*\\")) { return \\"application/json\\"; } for (String contentType : contentTypes) { if (isJsonMime(contentType)) { return contentType; } } return contentTypes[0]; } /** * Escape the given string to be used as URL query value. * * @param str String to be escaped * @return Escaped string */ public String escapeString(String str) { try { return URLEncoder.encode(str, \\"utf8\\").replaceAll(\\"\\\\\\\\+\\", \\"%20\\"); } catch (UnsupportedEncodingException e) { return str; } } /** * Deserialize response body to Java object, according to the return type and * the Content-Type response header. * * @param Type * @param response HTTP response * @param returnType The type of the Java object * @return The deserialized Java object * @throws com.generated.api.myapijava.client.ApiException If fail to deserialize response body, i.e. cannot read response body * or the Content-Type of the response is not supported. */ @SuppressWarnings(\\"unchecked\\") public T deserialize(Response response, Type returnType) throws ApiException { if (response == null || returnType == null) { return null; } if (\\"byte[]\\".equals(returnType.toString())) { // Handle binary response (byte array). try { return (T) response.body().bytes(); } catch (IOException e) { throw new ApiException(e); } } else if (returnType.equals(File.class)) { // Handle file downloading. return (T) downloadFileFromResponse(response); } String respBody; try { if (response.body() != null) respBody = response.body().string(); else respBody = null; } catch (IOException e) { throw new ApiException(e); } if (respBody == null || \\"\\".equals(respBody)) { return null; } String contentType = response.headers().get(\\"Content-Type\\"); if (contentType == null) { // ensuring a default content type contentType = \\"application/json\\"; } if (isJsonMime(contentType)) { return JSON.deserialize(respBody, returnType); } else if (returnType.equals(String.class)) { // Expecting string, return the raw response body. return (T) respBody; } else { throw new ApiException( \\"Content type \\\\\\"\\" + contentType + \\"\\\\\\" is not supported for type: \\" + returnType, response.code(), response.headers().toMultimap(), respBody); } } /** * Serialize the given Java object into request body according to the object's * class and the request Content-Type. * * @param obj The Java object * @param contentType The request Content-Type * @return The serialized request body * @throws com.generated.api.myapijava.client.ApiException If fail to serialize the given object */ public RequestBody serialize(Object obj, String contentType) throws ApiException { if (obj instanceof byte[]) { // Binary (byte array) body parameter support. return RequestBody.create((byte[]) obj, MediaType.parse(contentType)); } else if (obj instanceof File) { // File body parameter support. return RequestBody.create((File) obj, MediaType.parse(contentType)); } else if (\\"text/plain\\".equals(contentType) && obj instanceof String) { return RequestBody.create((String) obj, MediaType.parse(contentType)); } else if (isJsonMime(contentType)) { String content; if (obj != null) { content = JSON.serialize(obj); } else { content = null; } return RequestBody.create(content, MediaType.parse(contentType)); } else if (obj instanceof String) { return RequestBody.create((String) obj, MediaType.parse(contentType)); } else { throw new ApiException(\\"Content type \\\\\\"\\" + contentType + \\"\\\\\\" is not supported\\"); } } /** * Download file from the given response. * * @param response An instance of the Response object * @throws com.generated.api.myapijava.client.ApiException If fail to read file content from response and write to disk * @return Downloaded file */ public File downloadFileFromResponse(Response response) throws ApiException { try { File file = prepareDownloadFile(response); BufferedSink sink = Okio.buffer(Okio.sink(file)); sink.writeAll(response.body().source()); sink.close(); return file; } catch (IOException e) { throw new ApiException(e); } } /** * Prepare file for download * * @param response An instance of the Response object * @return Prepared file for the download * @throws java.io.IOException If fail to prepare file for download */ public File prepareDownloadFile(Response response) throws IOException { String filename = null; String contentDisposition = response.header(\\"Content-Disposition\\"); if (contentDisposition != null && !\\"\\".equals(contentDisposition)) { // Get filename from the Content-Disposition header. Pattern pattern = Pattern.compile(\\"filename=['\\\\\\"]?([^'\\\\\\"\\\\\\\\s]+)['\\\\\\"]?\\"); Matcher matcher = pattern.matcher(contentDisposition); if (matcher.find()) { filename = sanitizeFilename(matcher.group(1)); } } String prefix = null; String suffix = null; if (filename == null) { prefix = \\"download-\\"; suffix = \\"\\"; } else { int pos = filename.lastIndexOf(\\".\\"); if (pos == -1) { prefix = filename + \\"-\\"; } else { prefix = filename.substring(0, pos) + \\"-\\"; suffix = filename.substring(pos); } // Files.createTempFile requires the prefix to be at least three characters long if (prefix.length() < 3) prefix = \\"download-\\"; } if (tempFolderPath == null) return Files.createTempFile(prefix, suffix).toFile(); else return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile(); } /** * {@link #execute(Call, Type)} * * @param Type * @param call An instance of the Call object * @return ApiResponse<T> * @throws com.generated.api.myapijava.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call) throws ApiException { return execute(call, null); } /** * Execute HTTP call and deserialize the HTTP response body into the given return type. * * @param returnType The return type used to deserialize HTTP response body * @param The return type corresponding to (same with) returnType * @param call Call * @return ApiResponse object containing response status, headers and * data, which is a Java object deserialized from response body and would be null * when returnType is null. * @throws com.generated.api.myapijava.client.ApiException If fail to execute the call */ public ApiResponse execute(Call call, Type returnType) throws ApiException { try { Response response = call.execute(); T data = handleResponse(response, returnType); return new ApiResponse(response.code(), response.headers().toMultimap(), data); } catch (IOException e) { throw new ApiException(e); } } /** * {@link #executeAsync(Call, Type, ApiCallback)} * * @param Type * @param call An instance of the Call object * @param callback ApiCallback<T> */ public void executeAsync(Call call, ApiCallback callback) { executeAsync(call, null, callback); } /** * Execute HTTP call asynchronously. * * @param Type * @param call The callback to be executed when the API call finishes * @param returnType Return type * @param callback ApiCallback * @see #execute(Call, Type) */ @SuppressWarnings(\\"unchecked\\") public void executeAsync(Call call, final Type returnType, final ApiCallback callback) { call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { callback.onFailure(new ApiException(e), 0, null); } @Override public void onResponse(Call call, Response response) throws IOException { T result; try { result = (T) handleResponse(response, returnType); } catch (ApiException e) { callback.onFailure(e, response.code(), response.headers().toMultimap()); return; } catch (Exception e) { callback.onFailure(new ApiException(e), response.code(), response.headers().toMultimap()); return; } callback.onSuccess(result, response.code(), response.headers().toMultimap()); } }); } /** * Handle the given response, return the deserialized object when the response is successful. * * @param Type * @param response Response * @param returnType Return type * @return Type * @throws com.generated.api.myapijava.client.ApiException If the response has an unsuccessful status code or * fail to deserialize the response body */ public T handleResponse(Response response, Type returnType) throws ApiException { if (response.isSuccessful()) { if (returnType == null || response.code() == 204) { // returning null if the returnType is not defined, // or the status code is 204 (No Content) if (response.body() != null) { try { response.body().close(); } catch (Exception e) { throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); } } return null; } else { return deserialize(response, returnType); } } else { String respBody = null; if (response.body() != null) { try { respBody = response.body().string(); } catch (IOException e) { throw new ApiException(response.message(), e, response.code(), response.headers().toMultimap()); } } throw new ApiException(response.message(), response.code(), response.headers().toMultimap(), respBody); } } /** * Build HTTP call with the given options. * * @param baseUrl The base URL * @param path The sub-path of the HTTP URL * @param method The request method, one of \\"GET\\", \\"HEAD\\", \\"OPTIONS\\", \\"POST\\", \\"PUT\\", \\"PATCH\\" and \\"DELETE\\" * @param queryParams The query parameters * @param collectionQueryParams The collection query parameters * @param body The request body object * @param headerParams The header parameters * @param cookieParams The cookie parameters * @param formParams The form parameters * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP call * @throws com.generated.api.myapijava.client.ApiException If fail to serialize the request body object */ public Call buildCall(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { Request request = buildRequest(baseUrl, path, method, queryParams, collectionQueryParams, body, headerParams, cookieParams, formParams, authNames, callback); return httpClient.newCall(request); } /** * Build an HTTP request with the given options. * * @param baseUrl The base URL * @param path The sub-path of the HTTP URL * @param method The request method, one of \\"GET\\", \\"HEAD\\", \\"OPTIONS\\", \\"POST\\", \\"PUT\\", \\"PATCH\\" and \\"DELETE\\" * @param queryParams The query parameters * @param collectionQueryParams The collection query parameters * @param body The request body object * @param headerParams The header parameters * @param cookieParams The cookie parameters * @param formParams The form parameters * @param authNames The authentications to apply * @param callback Callback for upload/download progress * @return The HTTP request * @throws com.generated.api.myapijava.client.ApiException If fail to serialize the request body object */ public Request buildRequest(String baseUrl, String path, String method, List queryParams, List collectionQueryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String[] authNames, ApiCallback callback) throws ApiException { // aggregate queryParams (non-collection) and collectionQueryParams into allQueryParams List allQueryParams = new ArrayList(queryParams); allQueryParams.addAll(collectionQueryParams); final String url = buildUrl(baseUrl, path, queryParams, collectionQueryParams); // prepare HTTP request body RequestBody reqBody; String contentType = headerParams.get(\\"Content-Type\\"); if (!HttpMethod.permitsRequestBody(method)) { reqBody = null; } else if (\\"application/x-www-form-urlencoded\\".equals(contentType)) { reqBody = buildRequestBodyFormEncoding(formParams); } else if (\\"multipart/form-data\\".equals(contentType)) { reqBody = buildRequestBodyMultipart(formParams); } else if (body == null) { if (\\"DELETE\\".equals(method)) { // allow calling DELETE without sending a request body reqBody = null; } else { // use an empty request body (for POST, PUT and PATCH) reqBody = RequestBody.create(\\"\\", contentType == null ? null : MediaType.parse(contentType)); } } else { reqBody = serialize(body, contentType); } // update parameters with authentication settings updateParamsForAuth(authNames, allQueryParams, headerParams, cookieParams, requestBodyToString(reqBody), method, URI.create(url)); final Request.Builder reqBuilder = new Request.Builder().url(url); processHeaderParams(headerParams, reqBuilder); processCookieParams(cookieParams, reqBuilder); // Associate callback with request (if not null) so interceptor can // access it when creating ProgressResponseBody reqBuilder.tag(callback); Request request = null; if (callback != null && reqBody != null) { ProgressRequestBody progressRequestBody = new ProgressRequestBody(reqBody, callback); request = reqBuilder.method(method, progressRequestBody).build(); } else { request = reqBuilder.method(method, reqBody).build(); } return request; } /** * Build full URL by concatenating base path, the given sub path and query parameters. * * @param baseUrl The base URL * @param path The sub path * @param queryParams The query parameters * @param collectionQueryParams The collection query parameters * @return The full URL */ public String buildUrl(String baseUrl, String path, List queryParams, List collectionQueryParams) { final StringBuilder url = new StringBuilder(); if (baseUrl != null) { url.append(baseUrl).append(path); } else { String baseURL; if (serverIndex != null) { if (serverIndex < 0 || serverIndex >= servers.size()) { throw new ArrayIndexOutOfBoundsException(String.format( \\"Invalid index %d when selecting the host settings. Must be less than %d\\", serverIndex, servers.size() )); } baseURL = servers.get(serverIndex).URL(serverVariables); } else { baseURL = basePath; } url.append(baseURL).append(path); } if (queryParams != null && !queryParams.isEmpty()) { // support (constant) query string in \`path\`, e.g. \\"/posts?draft=1\\" String prefix = path.contains(\\"?\\") ? \\"&\\" : \\"?\\"; for (Pair param : queryParams) { if (param.getValue() != null) { if (prefix != null) { url.append(prefix); prefix = null; } else { url.append(\\"&\\"); } String value = parameterToString(param.getValue()); url.append(escapeString(param.getName())).append(\\"=\\").append(escapeString(value)); } } } if (collectionQueryParams != null && !collectionQueryParams.isEmpty()) { String prefix = url.toString().contains(\\"?\\") ? \\"&\\" : \\"?\\"; for (Pair param : collectionQueryParams) { if (param.getValue() != null) { if (prefix != null) { url.append(prefix); prefix = null; } else { url.append(\\"&\\"); } String value = parameterToString(param.getValue()); // collection query parameter value already escaped as part of parameterToPairs url.append(escapeString(param.getName())).append(\\"=\\").append(value); } } } return url.toString(); } /** * Set header parameters to the request builder, including default headers. * * @param headerParams Header parameters in the form of Map * @param reqBuilder Request.Builder */ public void processHeaderParams(Map headerParams, Request.Builder reqBuilder) { for (Entry param : headerParams.entrySet()) { reqBuilder.header(param.getKey(), parameterToString(param.getValue())); } for (Entry header : defaultHeaderMap.entrySet()) { if (!headerParams.containsKey(header.getKey())) { reqBuilder.header(header.getKey(), parameterToString(header.getValue())); } } } /** * Set cookie parameters to the request builder, including default cookies. * * @param cookieParams Cookie parameters in the form of Map * @param reqBuilder Request.Builder */ public void processCookieParams(Map cookieParams, Request.Builder reqBuilder) { for (Entry param : cookieParams.entrySet()) { reqBuilder.addHeader(\\"Cookie\\", String.format(\\"%s=%s\\", param.getKey(), param.getValue())); } for (Entry param : defaultCookieMap.entrySet()) { if (!cookieParams.containsKey(param.getKey())) { reqBuilder.addHeader(\\"Cookie\\", String.format(\\"%s=%s\\", param.getKey(), param.getValue())); } } } /** * Update query and header parameters based on authentication settings. * * @param authNames The authentications to apply * @param queryParams List of query parameters * @param headerParams Map of header parameters * @param cookieParams Map of cookie parameters * @param payload HTTP request body * @param method HTTP method * @param uri URI * @throws com.generated.api.myapijava.client.ApiException If fails to update the parameters */ public void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) { throw new RuntimeException(\\"Authentication undefined: \\" + authName); } auth.applyToParams(queryParams, headerParams, cookieParams, payload, method, uri); } } /** * Build a form-encoding request body with the given form parameters. * * @param formParams Form parameters in the form of Map * @return RequestBody */ public RequestBody buildRequestBodyFormEncoding(Map formParams) { okhttp3.FormBody.Builder formBuilder = new okhttp3.FormBody.Builder(); for (Entry param : formParams.entrySet()) { formBuilder.add(param.getKey(), parameterToString(param.getValue())); } return formBuilder.build(); } /** * Build a multipart (file uploading) request body with the given form parameters, * which could contain text fields and file fields. * * @param formParams Form parameters in the form of Map * @return RequestBody */ public RequestBody buildRequestBodyMultipart(Map formParams) { MultipartBody.Builder mpBuilder = new MultipartBody.Builder().setType(MultipartBody.FORM); for (Entry param : formParams.entrySet()) { if (param.getValue() instanceof File) { File file = (File) param.getValue(); addPartToMultiPartBuilder(mpBuilder, param.getKey(), file); } else if (param.getValue() instanceof List) { List list = (List) param.getValue(); for (Object item: list) { if (item instanceof File) { addPartToMultiPartBuilder(mpBuilder, param.getKey(), (File) item); } else { addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); } } } else { addPartToMultiPartBuilder(mpBuilder, param.getKey(), param.getValue()); } } return mpBuilder.build(); } /** * Guess Content-Type header from the given file (defaults to \\"application/octet-stream\\"). * * @param file The given file * @return The guessed Content-Type */ public String guessContentTypeFromFile(File file) { String contentType = URLConnection.guessContentTypeFromName(file.getName()); if (contentType == null) { return \\"application/octet-stream\\"; } else { return contentType; } } /** * Add a Content-Disposition Header for the given key and file to the MultipartBody Builder. * * @param mpBuilder MultipartBody.Builder * @param key The key of the Header element * @param file The file to add to the Header */ private void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, File file) { Headers partHeaders = Headers.of(\\"Content-Disposition\\", \\"form-data; name=\\\\\\"\\" + key + \\"\\\\\\"; filename=\\\\\\"\\" + file.getName() + \\"\\\\\\"\\"); MediaType mediaType = MediaType.parse(guessContentTypeFromFile(file)); mpBuilder.addPart(partHeaders, RequestBody.create(file, mediaType)); } /** * Add a Content-Disposition Header for the given key and complex object to the MultipartBody Builder. * * @param mpBuilder MultipartBody.Builder * @param key The key of the Header element * @param obj The complex object to add to the Header */ private void addPartToMultiPartBuilder(MultipartBody.Builder mpBuilder, String key, Object obj) { RequestBody requestBody; if (obj instanceof String) { requestBody = RequestBody.create((String) obj, MediaType.parse(\\"text/plain\\")); } else { String content; if (obj != null) { content = JSON.serialize(obj); } else { content = null; } requestBody = RequestBody.create(content, MediaType.parse(\\"application/json\\")); } Headers partHeaders = Headers.of(\\"Content-Disposition\\", \\"form-data; name=\\\\\\"\\" + key + \\"\\\\\\"\\"); mpBuilder.addPart(partHeaders, requestBody); } /** * Get network interceptor to add it to the httpClient to track download progress for * async requests. */ private Interceptor getProgressInterceptor() { return new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { final Request request = chain.request(); final Response originalResponse = chain.proceed(request); if (request.tag() instanceof ApiCallback) { final ApiCallback callback = (ApiCallback) request.tag(); return originalResponse.newBuilder() .body(new ProgressResponseBody(originalResponse.body(), callback)) .build(); } return originalResponse; } }; } /** * Apply SSL related settings to httpClient according to the current values of * verifyingSsl and sslCaCert. */ private void applySslSettings() { try { TrustManager[] trustManagers; HostnameVerifier hostnameVerifier; if (!verifyingSsl) { trustManagers = new TrustManager[]{ new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]{}; } } }; hostnameVerifier = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; } else { TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); if (sslCaCert == null) { trustManagerFactory.init((KeyStore) null); } else { char[] password = null; // Any password will work. CertificateFactory certificateFactory = CertificateFactory.getInstance(\\"X.509\\"); Collection certificates = certificateFactory.generateCertificates(sslCaCert); if (certificates.isEmpty()) { throw new IllegalArgumentException(\\"expected non-empty set of trusted certificates\\"); } KeyStore caKeyStore = newEmptyKeyStore(password); int index = 0; for (Certificate certificate : certificates) { String certificateAlias = \\"ca\\" + (index++); caKeyStore.setCertificateEntry(certificateAlias, certificate); } trustManagerFactory.init(caKeyStore); } trustManagers = trustManagerFactory.getTrustManagers(); hostnameVerifier = OkHostnameVerifier.INSTANCE; } SSLContext sslContext = SSLContext.getInstance(\\"TLS\\"); sslContext.init(keyManagers, trustManagers, new SecureRandom()); httpClient = httpClient.newBuilder() .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager) trustManagers[0]) .hostnameVerifier(hostnameVerifier) .build(); } catch (GeneralSecurityException e) { throw new RuntimeException(e); } } private KeyStore newEmptyKeyStore(char[] password) throws GeneralSecurityException { try { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(null, password); return keyStore; } catch (IOException e) { throw new AssertionError(e); } } /** * Convert the HTTP request body to a string. * * @param requestBody The HTTP request object * @return The string representation of the HTTP request body * @throws com.generated.api.myapijava.client.ApiException If fail to serialize the request body object into a string */ private String requestBodyToString(RequestBody requestBody) throws ApiException { if (requestBody != null) { try { final Buffer buffer = new Buffer(); requestBody.writeTo(buffer); return buffer.readUtf8(); } catch (final IOException e) { throw new ApiException(e); } } // empty http request body return \\"\\"; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ApiException.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import java.util.Map; import java.util.List; import javax.ws.rs.core.GenericType; /** *

ApiException class.

*/ @SuppressWarnings(\\"serial\\") @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class ApiException extends Exception { private int code = 0; private Map> responseHeaders = null; private String responseBody = null; /** *

Constructor for ApiException.

*/ public ApiException() {} /** *

Constructor for ApiException.

* * @param throwable a {@link java.lang.Throwable} object */ public ApiException(Throwable throwable) { super(throwable); } /** *

Constructor for ApiException.

* * @param message the error message */ public ApiException(String message) { super(message); } /** *

Constructor for ApiException.

* * @param message the error message * @param throwable a {@link java.lang.Throwable} object * @param code HTTP status code * @param responseHeaders a {@link java.util.Map} of HTTP response headers * @param responseBody the response body */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) { super(message, throwable); this.code = code; this.responseHeaders = responseHeaders; this.responseBody = responseBody; } /** *

Constructor for ApiException.

* * @param message the error message * @param code HTTP status code * @param responseHeaders a {@link java.util.Map} of HTTP response headers * @param responseBody the response body */ public ApiException(String message, int code, Map> responseHeaders, String responseBody) { this(message, (Throwable) null, code, responseHeaders, responseBody); } /** *

Constructor for ApiException.

* * @param message the error message * @param throwable a {@link java.lang.Throwable} object * @param code HTTP status code * @param responseHeaders a {@link java.util.Map} of HTTP response headers */ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) { this(message, throwable, code, responseHeaders, null); } /** *

Constructor for ApiException.

* * @param code HTTP status code * @param responseHeaders a {@link java.util.Map} of HTTP response headers * @param responseBody the response body */ public ApiException(int code, Map> responseHeaders, String responseBody) { this(\\"Response Code: \\" + code + \\" Response Body: \\" + responseBody, (Throwable) null, code, responseHeaders, responseBody); } /** *

Constructor for ApiException.

* * @param code HTTP status code * @param message a {@link java.lang.String} object */ public ApiException(int code, String message) { super(message); this.code = code; } /** *

Constructor for ApiException.

* * @param code HTTP status code * @param message the error message * @param responseHeaders a {@link java.util.Map} of HTTP response headers * @param responseBody the response body */ public ApiException(int code, String message, Map> responseHeaders, String responseBody) { this(code, message); this.responseHeaders = responseHeaders; this.responseBody = responseBody; } /** * Get the HTTP status code. * * @return HTTP status code */ public int getCode() { return code; } /** * Get the HTTP response headers. * * @return A map of list of string */ public Map> getResponseHeaders() { return responseHeaders; } /** * Get the HTTP response body. * * @return Response body in the form of string */ public String getResponseBody() { return responseBody; } /** * Get the exception message including HTTP response data. * * @return The exception message */ public String getMessage() { return String.format(\\"Message: %s%nHTTP response code: %s%nHTTP response body: %s%nHTTP response headers: %s\\", super.getMessage(), this.getCode(), this.getResponseBody(), this.getResponseHeaders()); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ApiResponse.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import java.util.List; import java.util.Map; /** * API response returned by API call. */ public class ApiResponse { final private int statusCode; final private Map> headers; final private T data; /** *

Constructor for ApiResponse.

* * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response */ public ApiResponse(int statusCode, Map> headers) { this(statusCode, headers, null); } /** *

Constructor for ApiResponse.

* * @param statusCode The status code of HTTP response * @param headers The headers of HTTP response * @param data The object deserialized from response bod */ public ApiResponse(int statusCode, Map> headers, T data) { this.statusCode = statusCode; this.headers = headers; this.data = data; } /** *

Get the status code.

* * @return the status code */ public int getStatusCode() { return statusCode; } /** *

Get the headers.

* * @return a {@link java.util.Map} of headers */ public Map> getHeaders() { return headers; } /** *

Get the data.

* * @return the data */ public T getData() { return data; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/Configuration.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class Configuration { private static ApiClient defaultApiClient = new ApiClient(); /** * Get the default API client, which would be used when creating API * instances without providing an API client. * * @return Default API client */ public static ApiClient getDefaultApiClient() { return defaultApiClient; } /** * Set the default API client, which would be used when creating API * instances without providing an API client. * * @param apiClient API client */ public static void setDefaultApiClient(ApiClient apiClient) { defaultApiClient = apiClient; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/GzipRequestInterceptor.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import okhttp3.*; import okio.Buffer; import okio.BufferedSink; import okio.GzipSink; import okio.Okio; import java.io.IOException; /** * Encodes request bodies using gzip. * * Taken from https://github.com/square/okhttp/issues/350 */ class GzipRequestInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request originalRequest = chain.request(); if (originalRequest.body() == null || originalRequest.header(\\"Content-Encoding\\") != null) { return chain.proceed(originalRequest); } Request compressedRequest = originalRequest.newBuilder() .header(\\"Content-Encoding\\", \\"gzip\\") .method(originalRequest.method(), forceContentLength(gzip(originalRequest.body()))) .build(); return chain.proceed(compressedRequest); } private RequestBody forceContentLength(final RequestBody requestBody) throws IOException { final Buffer buffer = new Buffer(); requestBody.writeTo(buffer); return new RequestBody() { @Override public MediaType contentType() { return requestBody.contentType(); } @Override public long contentLength() { return buffer.size(); } @Override public void writeTo(BufferedSink sink) throws IOException { sink.write(buffer.snapshot()); } }; } private RequestBody gzip(final RequestBody body) { return new RequestBody() { @Override public MediaType contentType() { return body.contentType(); } @Override public long contentLength() { return -1; // We don't know the compressed length in advance! } @Override public void writeTo(BufferedSink sink) throws IOException { BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); body.writeTo(gzipSink); gzipSink.close(); } }; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/JSON.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonParseException; import com.google.gson.TypeAdapter; import com.google.gson.internal.bind.util.ISO8601Utils; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.google.gson.JsonElement; import io.gsonfire.GsonFireBuilder; import io.gsonfire.TypeSelector; import okio.ByteString; import java.io.IOException; import java.io.StringReader; import java.lang.reflect.Type; import java.text.DateFormat; import java.text.ParseException; import java.text.ParsePosition; import java.time.LocalDate; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.Locale; import java.util.Map; import java.util.HashMap; /* * A JSON utility class * * NOTE: in the future, this class may be converted to static, which may break * backward-compatibility */ public class JSON { private static Gson gson; private static boolean isLenientOnJson = false; private static DateTypeAdapter dateTypeAdapter = new DateTypeAdapter(); private static SqlDateTypeAdapter sqlDateTypeAdapter = new SqlDateTypeAdapter(); private static OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); private static LocalDateTypeAdapter localDateTypeAdapter = new LocalDateTypeAdapter(); private static ByteArrayAdapter byteArrayAdapter = new ByteArrayAdapter(); @SuppressWarnings(\\"unchecked\\") public static GsonBuilder createGson() { GsonFireBuilder fireBuilder = new GsonFireBuilder() ; GsonBuilder builder = fireBuilder.createGsonBuilder(); return builder; } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { JsonElement element = readElement.getAsJsonObject().get(discriminatorField); if (null == element) { throw new IllegalArgumentException(\\"missing discriminator field: <\\" + discriminatorField + \\">\\"); } return element.getAsString(); } /** * Returns the Java class that implements the OpenAPI schema for the specified discriminator value. * * @param classByDiscriminatorValue The map of discriminator values to Java classes. * @param discriminatorValue The value of the OpenAPI discriminator in the input data. * @return The Java class that implements the OpenAPI schema */ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, String discriminatorValue) { Class clazz = (Class) classByDiscriminatorValue.get(discriminatorValue); if (null == clazz) { throw new IllegalArgumentException(\\"cannot determine model class of name: <\\" + discriminatorValue + \\">\\"); } return clazz; } { GsonBuilder gsonBuilder = createGson(); gsonBuilder.registerTypeAdapter(Date.class, dateTypeAdapter); gsonBuilder.registerTypeAdapter(java.sql.Date.class, sqlDateTypeAdapter); gsonBuilder.registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter); gsonBuilder.registerTypeAdapter(LocalDate.class, localDateTypeAdapter); gsonBuilder.registerTypeAdapter(byte[].class, byteArrayAdapter); gsonBuilder.registerTypeAdapterFactory(new com.generated.api.myapijava.client.model.ApiErrorResponseContent.CustomTypeAdapterFactory()); gsonBuilder.registerTypeAdapterFactory(new com.generated.api.myapijava.client.model.SayHelloResponseContent.CustomTypeAdapterFactory()); gson = gsonBuilder.create(); } /** * Get Gson. * * @return Gson */ public static Gson getGson() { return gson; } /** * Set Gson. * * @param gson Gson */ public static void setGson(Gson gson) { JSON.gson = gson; } public static void setLenientOnJson(boolean lenientOnJson) { isLenientOnJson = lenientOnJson; } /** * Serialize the given Java object into JSON string. * * @param obj Object * @return String representation of the JSON */ public static String serialize(Object obj) { return gson.toJson(obj); } /** * Deserialize the given JSON string to Java object. * * @param Type * @param body The JSON string * @param returnType The type to deserialize into * @return The deserialized Java object */ @SuppressWarnings(\\"unchecked\\") public static T deserialize(String body, Type returnType) { try { if (isLenientOnJson) { JsonReader jsonReader = new JsonReader(new StringReader(body)); // see https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html#setLenient(boolean) jsonReader.setLenient(true); return gson.fromJson(jsonReader, returnType); } else { return gson.fromJson(body, returnType); } } catch (JsonParseException e) { // Fallback processing when failed to parse JSON form response body: // return the response body string directly for the String return type; if (returnType.equals(String.class)) { return (T) body; } else { throw (e); } } } /** * Gson TypeAdapter for Byte Array type */ public static class ByteArrayAdapter extends TypeAdapter { @Override public void write(JsonWriter out, byte[] value) throws IOException { if (value == null) { out.nullValue(); } else { out.value(ByteString.of(value).base64()); } } @Override public byte[] read(JsonReader in) throws IOException { switch (in.peek()) { case NULL: in.nextNull(); return null; default: String bytesAsBase64 = in.nextString(); ByteString byteString = ByteString.decodeBase64(bytesAsBase64); return byteString.toByteArray(); } } } /** * Gson TypeAdapter for JSR310 OffsetDateTime type */ public static class OffsetDateTimeTypeAdapter extends TypeAdapter { private DateTimeFormatter formatter; public OffsetDateTimeTypeAdapter() { this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); } public OffsetDateTimeTypeAdapter(DateTimeFormatter formatter) { this.formatter = formatter; } public void setFormat(DateTimeFormatter dateFormat) { this.formatter = dateFormat; } @Override public void write(JsonWriter out, OffsetDateTime date) throws IOException { if (date == null) { out.nullValue(); } else { out.value(formatter.format(date)); } } @Override public OffsetDateTime read(JsonReader in) throws IOException { switch (in.peek()) { case NULL: in.nextNull(); return null; default: String date = in.nextString(); if (date.endsWith(\\"+0000\\")) { date = date.substring(0, date.length()-5) + \\"Z\\"; } return OffsetDateTime.parse(date, formatter); } } } /** * Gson TypeAdapter for JSR310 LocalDate type */ public static class LocalDateTypeAdapter extends TypeAdapter { private DateTimeFormatter formatter; public LocalDateTypeAdapter() { this(DateTimeFormatter.ISO_LOCAL_DATE); } public LocalDateTypeAdapter(DateTimeFormatter formatter) { this.formatter = formatter; } public void setFormat(DateTimeFormatter dateFormat) { this.formatter = dateFormat; } @Override public void write(JsonWriter out, LocalDate date) throws IOException { if (date == null) { out.nullValue(); } else { out.value(formatter.format(date)); } } @Override public LocalDate read(JsonReader in) throws IOException { switch (in.peek()) { case NULL: in.nextNull(); return null; default: String date = in.nextString(); return LocalDate.parse(date, formatter); } } } public static void setOffsetDateTimeFormat(DateTimeFormatter dateFormat) { offsetDateTimeTypeAdapter.setFormat(dateFormat); } public static void setLocalDateFormat(DateTimeFormatter dateFormat) { localDateTypeAdapter.setFormat(dateFormat); } /** * Gson TypeAdapter for java.sql.Date type * If the dateFormat is null, a simple \\"yyyy-MM-dd\\" format will be used * (more efficient than SimpleDateFormat). */ public static class SqlDateTypeAdapter extends TypeAdapter { private DateFormat dateFormat; public SqlDateTypeAdapter() {} public SqlDateTypeAdapter(DateFormat dateFormat) { this.dateFormat = dateFormat; } public void setFormat(DateFormat dateFormat) { this.dateFormat = dateFormat; } @Override public void write(JsonWriter out, java.sql.Date date) throws IOException { if (date == null) { out.nullValue(); } else { String value; if (dateFormat != null) { value = dateFormat.format(date); } else { value = date.toString(); } out.value(value); } } @Override public java.sql.Date read(JsonReader in) throws IOException { switch (in.peek()) { case NULL: in.nextNull(); return null; default: String date = in.nextString(); try { if (dateFormat != null) { return new java.sql.Date(dateFormat.parse(date).getTime()); } return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); } catch (ParseException e) { throw new JsonParseException(e); } } } } /** * Gson TypeAdapter for java.util.Date type * If the dateFormat is null, ISO8601Utils will be used. */ public static class DateTypeAdapter extends TypeAdapter { private DateFormat dateFormat; public DateTypeAdapter() {} public DateTypeAdapter(DateFormat dateFormat) { this.dateFormat = dateFormat; } public void setFormat(DateFormat dateFormat) { this.dateFormat = dateFormat; } @Override public void write(JsonWriter out, Date date) throws IOException { if (date == null) { out.nullValue(); } else { String value; if (dateFormat != null) { value = dateFormat.format(date); } else { value = ISO8601Utils.format(date, true); } out.value(value); } } @Override public Date read(JsonReader in) throws IOException { try { switch (in.peek()) { case NULL: in.nextNull(); return null; default: String date = in.nextString(); try { if (dateFormat != null) { return dateFormat.parse(date); } return ISO8601Utils.parse(date, new ParsePosition(0)); } catch (ParseException e) { throw new JsonParseException(e); } } } catch (IllegalArgumentException e) { throw new JsonParseException(e); } } } public static void setDateFormat(DateFormat dateFormat) { dateTypeAdapter.setFormat(dateFormat); } public static void setSqlDateFormat(DateFormat dateFormat) { sqlDateTypeAdapter.setFormat(dateFormat); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/Pair.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class Pair { private String name = \\"\\"; private String value = \\"\\"; public Pair (String name, String value) { setName(name); setValue(value); } private void setName(String name) { if (!isValidString(name)) { return; } this.name = name; } private void setValue(String value) { if (!isValidString(value)) { return; } this.value = value; } public String getName() { return this.name; } public String getValue() { return this.value; } private boolean isValidString(String arg) { if (arg == null) { return false; } return true; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ProgressRequestBody.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import okhttp3.MediaType; import okhttp3.RequestBody; import java.io.IOException; import okio.Buffer; import okio.BufferedSink; import okio.ForwardingSink; import okio.Okio; import okio.Sink; public class ProgressRequestBody extends RequestBody { private final RequestBody requestBody; private final ApiCallback callback; public ProgressRequestBody(RequestBody requestBody, ApiCallback callback) { this.requestBody = requestBody; this.callback = callback; } @Override public MediaType contentType() { return requestBody.contentType(); } @Override public long contentLength() throws IOException { return requestBody.contentLength(); } @Override public void writeTo(BufferedSink sink) throws IOException { BufferedSink bufferedSink = Okio.buffer(sink(sink)); requestBody.writeTo(bufferedSink); bufferedSink.flush(); } private Sink sink(Sink sink) { return new ForwardingSink(sink) { long bytesWritten = 0L; long contentLength = 0L; @Override public void write(Buffer source, long byteCount) throws IOException { super.write(source, byteCount); if (contentLength == 0) { contentLength = contentLength(); } bytesWritten += byteCount; callback.onUploadProgress(bytesWritten, contentLength, bytesWritten == contentLength); } }; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ProgressResponseBody.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import okhttp3.MediaType; import okhttp3.ResponseBody; import java.io.IOException; import okio.Buffer; import okio.BufferedSource; import okio.ForwardingSource; import okio.Okio; import okio.Source; public class ProgressResponseBody extends ResponseBody { private final ResponseBody responseBody; private final ApiCallback callback; private BufferedSource bufferedSource; public ProgressResponseBody(ResponseBody responseBody, ApiCallback callback) { this.responseBody = responseBody; this.callback = callback; } @Override public MediaType contentType() { return responseBody.contentType(); } @Override public long contentLength() { return responseBody.contentLength(); } @Override public BufferedSource source() { if (bufferedSource == null) { bufferedSource = Okio.buffer(source(responseBody.source())); } return bufferedSource; } private Source source(Source source) { return new ForwardingSource(source) { long totalBytesRead = 0L; @Override public long read(Buffer sink, long byteCount) throws IOException { long bytesRead = super.read(sink, byteCount); // read() returns the number of bytes read, or -1 if this source is exhausted. totalBytesRead += bytesRead != -1 ? bytesRead : 0; callback.onDownloadProgress(totalBytesRead, responseBody.contentLength(), bytesRead == -1); return bytesRead; } }; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ServerConfiguration.java": "package com.generated.api.myapijava.client; import java.util.Map; /** * Representing a Server configuration. */ public class ServerConfiguration { public String URL; public String description; public Map variables; /** * @param URL A URL to the target host. * @param description A description of the host designated by the URL. * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template. */ public ServerConfiguration(String URL, String description, Map variables) { this.URL = URL; this.description = description; this.variables = variables; } /** * Format URL template using given variables. * * @param variables A map between a variable name and its value. * @return Formatted URL. */ public String URL(Map variables) { String url = this.URL; // go through variables and replace placeholders for (Map.Entry variable: this.variables.entrySet()) { String name = variable.getKey(); ServerVariable serverVariable = variable.getValue(); String value = serverVariable.defaultValue; if (variables != null && variables.containsKey(name)) { value = variables.get(name); if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) { throw new IllegalArgumentException(\\"The variable \\" + name + \\" in the server URL has invalid value \\" + value + \\".\\"); } } url = url.replace(\\"{\\" + name + \\"}\\", value); } return url; } /** * Format URL template using default server variables. * * @return Formatted URL. */ public String URL() { return URL(null); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/ServerVariable.java": "package com.generated.api.myapijava.client; import java.util.HashSet; /** * Representing a Server Variable for server URL template substitution. */ public class ServerVariable { public String description; public String defaultValue; public HashSet enumValues = null; /** * @param description A description for the server variable. * @param defaultValue The default value to use for substitution. * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set. */ public ServerVariable(String description, String defaultValue, HashSet enumValues) { this.description = description; this.defaultValue = defaultValue; this.enumValues = enumValues; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/StringUtil.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client; import java.util.Collection; import java.util.Iterator; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). * * @param array The array * @param value The value to search * @return true if the array contains the value */ public static boolean containsIgnoreCase(String[] array, String value) { for (String str : array) { if (value == null && str == null) { return true; } if (value != null && value.equalsIgnoreCase(str)) { return true; } } return false; } /** * Join an array of strings with the given separator. *

* Note: This might be replaced by utility method from commons-lang or guava someday * if one of those libraries is added as dependency. *

* * @param array The array of strings * @param separator The separator * @return the resulting string */ public static String join(String[] array, String separator) { int len = array.length; if (len == 0) { return \\"\\"; } StringBuilder out = new StringBuilder(); out.append(array[0]); for (int i = 1; i < len; i++) { out.append(separator).append(array[i]); } return out.toString(); } /** * Join a list of strings with the given separator. * * @param list The list of strings * @param separator The separator * @return the resulting string */ public static String join(Collection list, String separator) { Iterator iterator = list.iterator(); StringBuilder out = new StringBuilder(); if (iterator.hasNext()) { out.append(iterator.next()); } while (iterator.hasNext()) { out.append(separator).append(iterator.next()); } return out.toString(); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/api/DefaultApi.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.api; import com.generated.api.myapijava.client.ApiCallback; import com.generated.api.myapijava.client.ApiClient; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.ApiResponse; import com.generated.api.myapijava.client.Configuration; import com.generated.api.myapijava.client.Pair; import com.generated.api.myapijava.client.ProgressRequestBody; import com.generated.api.myapijava.client.ProgressResponseBody; import com.google.gson.reflect.TypeToken; import java.io.IOException; import com.generated.api.myapijava.client.model.ApiErrorResponseContent; import com.generated.api.myapijava.client.model.SayHelloResponseContent; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.core.GenericType; public class DefaultApi { private ApiClient localVarApiClient; private int localHostIndex; private String localCustomBaseUrl; public DefaultApi() { this(Configuration.getDefaultApiClient()); } public DefaultApi(ApiClient apiClient) { this.localVarApiClient = apiClient; } public ApiClient getApiClient() { return localVarApiClient; } public void setApiClient(ApiClient apiClient) { this.localVarApiClient = apiClient; } public int getHostIndex() { return localHostIndex; } public void setHostIndex(int hostIndex) { this.localHostIndex = hostIndex; } public String getCustomBaseUrl() { return localCustomBaseUrl; } public void setCustomBaseUrl(String customBaseUrl) { this.localCustomBaseUrl = customBaseUrl; } private okhttp3.Call sayHelloCall(String name, final ApiCallback _callback) throws ApiException { String basePath = null; // Operation Servers String[] localBasePaths = new String[] { }; // Determine Base Path to Use if (localCustomBaseUrl != null){ basePath = localCustomBaseUrl; } else if ( localBasePaths.length > 0 ) { basePath = localBasePaths[localHostIndex]; } else { basePath = null; } Object localVarPostBody = null; // create path and map variables String localVarPath = \\"/hello\\"; List localVarQueryParams = new ArrayList(); List localVarCollectionQueryParams = new ArrayList(); Map localVarHeaderParams = new HashMap(); Map localVarCookieParams = new HashMap(); Map localVarFormParams = new HashMap(); if (name != null) { localVarQueryParams.addAll(localVarApiClient.parameterToPair(\\"name\\", name)); } final String[] localVarAccepts = { \\"application/json\\" }; final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts); if (localVarAccept != null) { localVarHeaderParams.put(\\"Accept\\", localVarAccept); } final String[] localVarContentTypes = { }; final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes); if (localVarContentType != null) { localVarHeaderParams.put(\\"Content-Type\\", localVarContentType); } String[] localVarAuthNames = new String[] { }; return localVarApiClient.buildCall(basePath, localVarPath, \\"GET\\", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @SuppressWarnings(\\"rawtypes\\") private okhttp3.Call sayHelloValidateBeforeCall(String name, final ApiCallback _callback) throws ApiException { // verify the required parameter 'name' is set if (name == null) { throw new ApiException(\\"Missing the required parameter 'name' when calling sayHello(Async)\\"); } return sayHelloCall(name, _callback); } private ApiResponse sayHelloWithHttpInfo(String name) throws ApiException { okhttp3.Call localVarCall = sayHelloValidateBeforeCall(name, null); Type localVarReturnType = new TypeToken(){}.getType(); return localVarApiClient.execute(localVarCall, localVarReturnType); } private okhttp3.Call sayHelloAsync(String name, final ApiCallback _callback) throws ApiException { okhttp3.Call localVarCall = sayHelloValidateBeforeCall(name, _callback); Type localVarReturnType = new TypeToken(){}.getType(); localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback); return localVarCall; } public class APIsayHelloRequest { private final String name; private APIsayHelloRequest(String name) { this.name = name; } /** * Build call for sayHello * @param _callback ApiCallback API callback * @return Call to execute * @throws ApiException If fail to serialize the request body object * @http.response.details
Status Code Description Response Headers
200 Successful response -
400 Error response -
*/ public okhttp3.Call buildCall(final ApiCallback _callback) throws ApiException { return sayHelloCall(name, _callback); } /** * Execute sayHello request * @return SayHelloResponseContent * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body * @http.response.details
Status Code Description Response Headers
200 Successful response -
400 Error response -
*/ public SayHelloResponseContent execute() throws ApiException { ApiResponse localVarResp = sayHelloWithHttpInfo(name); return localVarResp.getData(); } /** * Execute sayHello request with HTTP info returned * @return ApiResponse<SayHelloResponseContent> * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body * @http.response.details
Status Code Description Response Headers
200 Successful response -
400 Error response -
*/ public ApiResponse executeWithHttpInfo() throws ApiException { return sayHelloWithHttpInfo(name); } /** * Execute sayHello request (asynchronously) * @param _callback The callback to be executed when the API call finishes * @return The request call * @throws ApiException If fail to process the API call, e.g. serializing the request body object * @http.response.details
Status Code Description Response Headers
200 Successful response -
400 Error response -
*/ public okhttp3.Call executeAsync(final ApiCallback _callback) throws ApiException { return sayHelloAsync(name, _callback); } } /** * * * @param name (required) * @return APIsayHelloRequest * @http.response.details
Status Code Description Response Headers
200 Successful response -
400 Error response -
*/ public APIsayHelloRequest sayHello(String name) { return new APIsayHelloRequest(name); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/api/DefaultApi/Handlers.java": "package com.generated.api.myapijava.client.api; import com.generated.api.myapijava.client.model.*; import java.util.Arrays; import java.util.Optional; import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.stream.Collectors; import java.io.UnsupportedEncodingException; import java.io.IOException; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import com.generated.api.myapijava.client.model.ApiErrorResponseContent; import com.generated.api.myapijava.client.model.SayHelloResponseContent; import com.generated.api.myapijava.client.JSON; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class Handlers { static { // JSON has a static instance of Gson which is instantiated lazily the first time it is initialised. // Create an instance here to ensure that the static Gson instance is always available. new JSON(); } private static String decodeParameter(final String parameter) { try { return URLDecoder.decode(parameter, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } } private static Map decodeRequestParameters(Map parameters) { Map decodedParameters = new HashMap<>(); for(Map.Entry parameter : parameters.entrySet()) { decodedParameters.put(parameter.getKey(), decodeParameter(parameter.getValue())); } return decodedParameters; } private static Map> decodeRequestArrayParameters(Map> parameters) { Map> decodedParameters = new HashMap<>(); for(Map.Entry> parameter : parameters.entrySet()) { decodedParameters.put(parameter.getKey(), parameter.getValue().stream().map(Handlers::decodeParameter).collect(Collectors.toList())); } return decodedParameters; } private static void putAllFromNullableMap(Map source, Map destination) { if (source != null) { destination.putAll(source); } } private static String concatMethodAndPath(final String method, final String path) { return String.format(\\"%s||%s\\", method.toLowerCase(), path); } private static List> getAnnotationInterceptors(Class clazz) { // Support specifying simple interceptors via the @Interceptors({ MyInterceptor.class, MyOtherInterceptor.class }) format return clazz.isAnnotationPresent(Interceptors.class) ? Arrays.stream(clazz.getAnnotation(Interceptors.class).value()).map(c -> { try { return (Interceptor) c.getDeclaredConstructor().newInstance(); } catch (Exception e) { throw new RuntimeException(String.format( \\"Cannot create instance of interceptor %s. Please ensure it has a public constructor \\" + \\"with no arguments, or override the getInterceptors method instead of using the annotation\\", c.getSimpleName()), e); } }).collect(Collectors.toList()) : new ArrayList<>(); } /** * Represents an HTTP response from an api operation */ public static interface Response { /** * Returns the response body */ String getBody(); /** * Returns the response status code */ int getStatusCode(); /** * Returns the response headers */ Map getHeaders(); } @lombok.experimental.SuperBuilder @lombok.AllArgsConstructor @lombok.Getter public static class ApiResponse implements Response { private String body; private int statusCode; private Map headers; } /** * Interceptors can perform generic operations on requests and/or responses, optionally delegating to the remainder * of the request chain. */ public static interface Interceptor { /** * Handle a request. Usually the response from \`input.getChain().next(input)\` is returned to delegate to the * remainder of the chain, however you may wish to return an alternative Response. */ Response handle(ChainedRequestInput input); } /** * Use this annotation to add interceptors to the request handler. Interceptors used in the annotation must have a * constructor with no arguments. */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public static @interface Interceptors { public Class[] value() default {}; } /** * A handler chain represents a series of interceptors, which may or may not delegate to following interceptors. * The lambda handler is always the last method in the chain. */ public static interface HandlerChain { /** * Delegate to the remainder of the handler chain */ Response next(ChainedRequestInput input); } /** * Defines the input for a request. */ public static interface RequestInput { /** * The raw event from API Gateway */ APIGatewayProxyRequestEvent getEvent(); /** * Lambda execution context */ Context getContext(); /** * Demarshalled request input */ TInput getInput(); /** * Storage for arbitrary interceptor context for the lifetime of the request. Set and get values to pass state * between interceptors or to the final handler. */ Map getInterceptorContext(); } /** * Reqeust input with a handler chain */ public static interface ChainedRequestInput extends RequestInput { /** * The chain for handling requests */ HandlerChain getChain(); } private static HandlerChain buildHandlerChain(final List> interceptors, final HandlerChain baseChain) { if (interceptors.isEmpty()) { return baseChain; } else { Interceptor interceptor = interceptors.get(0); HandlerChain remainingChain = buildHandlerChain(interceptors.subList(1, interceptors.size()), baseChain); return new HandlerChain() { @Override public Response next(ChainedRequestInput input) { return interceptor.handle(new ChainedRequestInput() { @Override public APIGatewayProxyRequestEvent getEvent() { return input.getEvent(); } @Override public Context getContext() { return input.getContext(); } @Override public TInput getInput() { return input.getInput(); } @Override public HandlerChain getChain() { return remainingChain; } @Override public Map getInterceptorContext() { return input.getInterceptorContext(); } }); } }; } } /** * Response for the sayHello operation */ public static interface SayHelloResponse extends Response {} /** * Response with status code 200 for the sayHello operation */ public static class SayHello200Response implements SayHelloResponse { private String body; private Map headers; private SayHello200Response(final SayHelloResponseContent body, final Map headers) { this.body = body.toJson(); this.headers = headers; } @Override public int getStatusCode() { return 200; } @Override public String getBody() { return this.body; } @Override public Map getHeaders() { return this.headers; } /** * Create a SayHello200Response with a body */ public static SayHello200Response of(final SayHelloResponseContent body) { return new SayHello200Response(body, new HashMap<>()); } /** * Create a SayHello200Response with a body and headers */ public static SayHello200Response of(final SayHelloResponseContent body, final Map headers) { return new SayHello200Response(body, headers); } } /** * Response with status code 400 for the sayHello operation */ public static class SayHello400Response implements SayHelloResponse { private String body; private Map headers; private SayHello400Response(final ApiErrorResponseContent body, final Map headers) { this.body = body.toJson(); this.headers = headers; } @Override public int getStatusCode() { return 400; } @Override public String getBody() { return this.body; } @Override public Map getHeaders() { return this.headers; } /** * Create a SayHello400Response with a body */ public static SayHello400Response of(final ApiErrorResponseContent body) { return new SayHello400Response(body, new HashMap<>()); } /** * Create a SayHello400Response with a body and headers */ public static SayHello400Response of(final ApiErrorResponseContent body, final Map headers) { return new SayHello400Response(body, headers); } } /** * Single-value query and path parameters for the sayHello operation */ public static class SayHelloRequestParameters { private String name; public SayHelloRequestParameters(final APIGatewayProxyRequestEvent event) { Map parameters = new HashMap<>(); putAllFromNullableMap(event.getPathParameters(), parameters); putAllFromNullableMap(event.getQueryStringParameters(), parameters); Map decodedParameters = decodeRequestParameters(parameters); this.name = decodedParameters.get(\\"name\\"); } public String getName() { return this.name; } } /** * Multi-value query parameters for the sayHello operation */ public static class SayHelloRequestArrayParameters { public SayHelloRequestArrayParameters(final APIGatewayProxyRequestEvent event) { Map> parameters = new HashMap<>(); putAllFromNullableMap(event.getMultiValueQueryStringParameters(), parameters); Map> decodedParameters = decodeRequestArrayParameters(parameters); } } /** * Input for the sayHello operation */ public static class SayHelloInput { private SayHelloRequestParameters requestParameters; private SayHelloRequestArrayParameters requestArrayParameters; public SayHelloInput(final APIGatewayProxyRequestEvent event) { this.requestParameters = new SayHelloRequestParameters(event); this.requestArrayParameters = new SayHelloRequestArrayParameters(event); } public SayHelloRequestParameters getRequestParameters() { return this.requestParameters; } public SayHelloRequestArrayParameters getRequestArrayParameters() { return this.requestArrayParameters; } } /** * Full request input for the sayHello operation, including the raw API Gateway event */ public static class SayHelloRequestInput implements RequestInput { private APIGatewayProxyRequestEvent event; private Context context; private Map interceptorContext; private SayHelloInput input; public SayHelloRequestInput(final APIGatewayProxyRequestEvent event, final Context context, final Map interceptorContext, final SayHelloInput input) { this.event = event; this.context = context; this.interceptorContext = interceptorContext; this.input = input; } /** * Returns the typed request input, with path, query and body parameters */ public SayHelloInput getInput() { return this.input; } /** * Returns the raw API Gateway event */ public APIGatewayProxyRequestEvent getEvent() { return this.event; } /** * Returns the lambda context */ public Context getContext() { return this.context; } /** * Returns the interceptor context, which may contain values set by request interceptors */ public Map getInterceptorContext() { return this.interceptorContext; } } /** * Lambda handler wrapper for the sayHello operation */ public static abstract class SayHello implements RequestHandler { /** * Handle the request for the sayHello operation */ public abstract SayHelloResponse handle(final SayHelloRequestInput request); /** * For more complex interceptors that require instantiation with parameters, you may override this method to * return a list of instantiated interceptors. For simple interceptors with no need for constructor arguments, * prefer the @Interceptors annotation. */ public List> getInterceptors() { return Collections.emptyList(); } @Override public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent event, final Context context) { return this.handleRequestWithAdditionalInterceptors(event, context, new ArrayList<>()); } public APIGatewayProxyResponseEvent handleRequestWithAdditionalInterceptors(final APIGatewayProxyRequestEvent event, final Context context, final List> additionalInterceptors) { final Map interceptorContext = new HashMap<>(); List> interceptors = new ArrayList<>(); interceptors.addAll(additionalInterceptors); List> annotationInterceptors = getAnnotationInterceptors(this.getClass()); interceptors.addAll(annotationInterceptors); interceptors.addAll(this.getInterceptors()); final HandlerChain chain = buildHandlerChain(interceptors, new HandlerChain() { @Override public Response next(ChainedRequestInput input) { return handle(new SayHelloRequestInput(input.getEvent(), input.getContext(), input.getInterceptorContext(), input.getInput())); } }); final Response response = chain.next(new ChainedRequestInput() { @Override public HandlerChain getChain() { // The chain's next method ignores the chain given as input, and is pre-built to follow the remaining // chain. return null; } @Override public APIGatewayProxyRequestEvent getEvent() { return event; } @Override public Context getContext() { return context; } @Override public SayHelloInput getInput() { return new SayHelloInput(event); } @Override public Map getInterceptorContext() { return interceptorContext; } }); return new APIGatewayProxyResponseEvent() .withStatusCode(response.getStatusCode()) .withHeaders(response.getHeaders()) .withBody(response.getBody()); } } public static abstract class HandlerRouter implements RequestHandler { private static final String sayHelloMethodAndPath = concatMethodAndPath(\\"GET\\", \\"/hello\\"); private final SayHello constructedSayHello; /** * This method must return your implementation of the SayHello operation */ public abstract SayHello sayHello(); private static enum Route { sayHelloRoute, } /** * Map of method and path to the route to map to */ private final Map routes = new HashMap<>(); public HandlerRouter() { this.routes.put(sayHelloMethodAndPath, Route.sayHelloRoute); // Handlers are all constructed in the router's constructor such that lambda behaviour remains consistent; // ie resources created in the constructor remain in memory between invocations. // https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html this.constructedSayHello = this.sayHello(); } /** * For more complex interceptors that require instantiation with parameters, you may override this method to * return a list of instantiated interceptors. For simple interceptors with no need for constructor arguments, * prefer the @Interceptors annotation. */ public List> getInterceptors() { return Collections.emptyList(); } @Override public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent event, final Context context) { String method = event.getRequestContext().getHttpMethod(); String path = event.getRequestContext().getResourcePath(); String methodAndPath = concatMethodAndPath(method, path); Route route = this.routes.get(methodAndPath); switch (route) { case sayHelloRoute: List> sayHelloInterceptors = getAnnotationInterceptors(this.getClass()); sayHelloInterceptors.addAll(this.getInterceptors()); return this.constructedSayHello.handleRequestWithAdditionalInterceptors(event, context, sayHelloInterceptors); default: throw new RuntimeException(String.format(\\"No registered handler for method {} and path {}\\", method, path)); } } } }", "generated/java/src/main/java/com/generated/api/myapijava/client/api/DefaultApi/OperationConfig.java": "package com.generated.api.myapijava.client.api; import com.generated.api.myapijava.client.model.*; import com.generated.api.myapijava.client.model.ApiErrorResponseContent; import com.generated.api.myapijava.client.model.SayHelloResponseContent; import java.util.HashMap; import java.util.Map; // Generic type for object \\"keyed\\" by operation names @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") @lombok.Builder @lombok.Getter public class OperationConfig { private T sayHello; public Map asMap() { Map map = new HashMap<>(); map.put(\\"sayHello\\", this.sayHello); return map; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/api/DefaultApi/OperationLookup.java": "package com.generated.api.myapijava.client.api; import com.generated.api.myapijava.client.model.*; import com.generated.api.myapijava.client.model.ApiErrorResponseContent; import com.generated.api.myapijava.client.model.SayHelloResponseContent; import java.util.HashMap; import java.util.Map; // Look up path and http method for a given operation name @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class OperationLookup { /** * Returns the operation lookup information for the OpenApiGatewayLambdaApi construct */ public static Map> getOperationLookup() { final Map> config = new HashMap<>(); config.put(\\"sayHello\\", new HashMap() { { put(\\"path\\", \\"/hello\\"); put(\\"method\\", \\"GET\\"); } }); return config; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/api/DefaultApi/Operations.java": "package com.generated.api.myapijava.client.api; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class Operations { /** * Returns an OperationConfig Builder with all values populated with the given value. * You can override specific values on the builder if you like. * Make sure you call \`.build()\` at the end to construct the OperationConfig. */ public static OperationConfig.OperationConfigBuilder all(final T value) { return OperationConfig.builder() .sayHello(value) ; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/auth/ApiKeyAuth.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.auth; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.Pair; import java.net.URI; import java.util.Map; import java.util.List; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; private String apiKey; private String apiKeyPrefix; public ApiKeyAuth(String location, String paramName) { this.location = location; this.paramName = paramName; } public String getLocation() { return location; } public String getParamName() { return paramName; } public String getApiKey() { return apiKey; } public void setApiKey(String apiKey) { this.apiKey = apiKey; } public String getApiKeyPrefix() { return apiKeyPrefix; } public void setApiKeyPrefix(String apiKeyPrefix) { this.apiKeyPrefix = apiKeyPrefix; } @Override public void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException { if (apiKey == null) { return; } String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + \\" \\" + apiKey; } else { value = apiKey; } if (\\"query\\".equals(location)) { queryParams.add(new Pair(paramName, value)); } else if (\\"header\\".equals(location)) { headerParams.put(paramName, value); } else if (\\"cookie\\".equals(location)) { cookieParams.put(paramName, value); } } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/auth/Authentication.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.auth; import com.generated.api.myapijava.client.Pair; import com.generated.api.myapijava.client.ApiException; import java.net.URI; import java.util.Map; import java.util.List; public interface Authentication { /** * Apply authentication settings to header and query params. * * @param queryParams List of query parameters * @param headerParams Map of header parameters * @param cookieParams Map of cookie parameters * @param payload HTTP request body * @param method HTTP method * @param uri URI * @throws ApiException if failed to update the parameters */ void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException; } ", "generated/java/src/main/java/com/generated/api/myapijava/client/auth/HttpBasicAuth.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.auth; import com.generated.api.myapijava.client.Pair; import com.generated.api.myapijava.client.ApiException; import okhttp3.Credentials; import java.net.URI; import java.util.Map; import java.util.List; import java.io.UnsupportedEncodingException; public class HttpBasicAuth implements Authentication { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException { if (username == null && password == null) { return; } headerParams.put(\\"Authorization\\", Credentials.basic( username == null ? \\"\\" : username, password == null ? \\"\\" : password)); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/auth/HttpBearerAuth.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.auth; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.Pair; import java.net.URI; import java.util.Map; import java.util.List; @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class HttpBearerAuth implements Authentication { private final String scheme; private String bearerToken; public HttpBearerAuth(String scheme) { this.scheme = scheme; } /** * Gets the token, which together with the scheme, will be sent as the value of the Authorization header. * * @return The bearer token */ public String getBearerToken() { return bearerToken; } /** * Sets the token, which together with the scheme, will be sent as the value of the Authorization header. * * @param bearerToken The bearer token to send in the Authorization header */ public void setBearerToken(String bearerToken) { this.bearerToken = bearerToken; } @Override public void applyToParams(List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException { if (bearerToken == null) { return; } headerParams.put(\\"Authorization\\", (scheme != null ? upperCaseBearer(scheme) + \\" \\" : \\"\\") + bearerToken); } private static String upperCaseBearer(String scheme) { return (\\"bearer\\".equalsIgnoreCase(scheme)) ? \\"Bearer\\" : scheme; } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/model/AbstractOpenApiSchema.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.model; import com.generated.api.myapijava.client.ApiException; import java.util.Objects; import java.lang.reflect.Type; import java.util.Map; import javax.ws.rs.core.GenericType; //import com.fasterxml.jackson.annotation.JsonValue; /** * Abstract class for oneOf,anyOf schemas defined in OpenAPI spec */ @lombok.AllArgsConstructor @lombok.experimental.SuperBuilder @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public abstract class AbstractOpenApiSchema { // store the actual instance of the schema/object private Object instance; // is nullable private Boolean isNullable; // schema type (e.g. oneOf, anyOf) private final String schemaType; public AbstractOpenApiSchema(String schemaType, Boolean isNullable) { this.schemaType = schemaType; this.isNullable = isNullable; } /** * Get the list of oneOf/anyOf composed schemas allowed to be stored in this object * * @return an instance of the actual schema/object */ public abstract Map getSchemas(); /** * Get the actual instance * * @return an instance of the actual schema/object */ //@JsonValue public Object getActualInstance() {return instance;} /** * Set the actual instance * * @param instance the actual instance of the schema/object */ public void setActualInstance(Object instance) {this.instance = instance;} /** * Get the instant recursively when the schemas defined in oneOf/anyof happen to be oneOf/anyOf schema as well * * @return an instance of the actual schema/object */ public Object getActualInstanceRecursively() { return getActualInstanceRecursively(this); } private Object getActualInstanceRecursively(AbstractOpenApiSchema object) { if (object.getActualInstance() == null) { return null; } else if (object.getActualInstance() instanceof AbstractOpenApiSchema) { return getActualInstanceRecursively((AbstractOpenApiSchema)object.getActualInstance()); } else { return object.getActualInstance(); } } /** * Get the schema type (e.g. anyOf, oneOf) * * @return the schema type */ public String getSchemaType() { return schemaType; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(\\"class \\").append(getClass()).append(\\" {\\\\n\\"); sb.append(\\" instance: \\").append(toIndentedString(instance)).append(\\"\\\\n\\"); sb.append(\\" isNullable: \\").append(toIndentedString(isNullable)).append(\\"\\\\n\\"); sb.append(\\" schemaType: \\").append(toIndentedString(schemaType)).append(\\"\\\\n\\"); sb.append(\\"}\\"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(Object o) { if (o == null) { return \\"null\\"; } return o.toString().replace(\\"\\\\n\\", \\"\\\\n \\"); } public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } AbstractOpenApiSchema a = (AbstractOpenApiSchema) o; return Objects.equals(this.instance, a.instance) && Objects.equals(this.isNullable, a.isNullable) && Objects.equals(this.schemaType, a.schemaType); } @Override public int hashCode() { return Objects.hash(instance, isNullable, schemaType); } /** * Is nullable * * @return true if it's nullable */ public Boolean isNullable() { if (Boolean.TRUE.equals(isNullable)) { return Boolean.TRUE; } else { return Boolean.FALSE; } } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/model/ApiErrorResponseContent.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.model; import java.util.Objects; import java.util.Arrays; import com.google.gson.TypeAdapter; import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.SerializedName; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.TypeAdapterFactory; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.generated.api.myapijava.client.JSON; /** * ApiErrorResponseContent */ @lombok.AllArgsConstructor @lombok.experimental.SuperBuilder @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class ApiErrorResponseContent { public static final String SERIALIZED_NAME_ERROR_MESSAGE = \\"errorMessage\\"; @SerializedName(SERIALIZED_NAME_ERROR_MESSAGE) private String errorMessage; public ApiErrorResponseContent() { } public ApiErrorResponseContent errorMessage(String errorMessage) { this.errorMessage = errorMessage; return this; } /** * Get errorMessage * @return errorMessage **/ @javax.annotation.Nonnull public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ApiErrorResponseContent apiErrorResponseContent = (ApiErrorResponseContent) o; return Objects.equals(this.errorMessage, apiErrorResponseContent.errorMessage); } @Override public int hashCode() { return Objects.hash(errorMessage); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(\\"class ApiErrorResponseContent {\\\\n\\"); sb.append(\\" errorMessage: \\").append(toIndentedString(errorMessage)).append(\\"\\\\n\\"); sb.append(\\"}\\"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(Object o) { if (o == null) { return \\"null\\"; } return o.toString().replace(\\"\\\\n\\", \\"\\\\n \\"); } public static HashSet openapiFields; public static HashSet openapiRequiredFields; static { // a set of all properties/fields (JSON key names) openapiFields = new HashSet(); openapiFields.add(\\"errorMessage\\"); // a set of required properties/fields (JSON key names) openapiRequiredFields = new HashSet(); openapiRequiredFields.add(\\"errorMessage\\"); } /** * Validates the JSON Object and throws an exception if issues found * * @param jsonObj JSON Object * @throws IOException if the JSON Object is invalid with respect to ApiErrorResponseContent */ public static void validateJsonObject(JsonObject jsonObj) throws IOException { if (jsonObj == null) { if (!ApiErrorResponseContent.openapiRequiredFields.isEmpty()) { // has required fields but JSON object is null throw new IllegalArgumentException(String.format(\\"The required field(s) %s in ApiErrorResponseContent is not found in the empty JSON string\\", ApiErrorResponseContent.openapiRequiredFields.toString())); } } Set> entries = jsonObj.entrySet(); // check to see if the JSON string contains additional fields for (Entry entry : entries) { if (!ApiErrorResponseContent.openapiFields.contains(entry.getKey())) { throw new IllegalArgumentException(String.format(\\"The field \`%s\` in the JSON string is not defined in the \`ApiErrorResponseContent\` properties. JSON: %s\\", entry.getKey(), jsonObj.toString())); } } // check to make sure all required properties/fields are present in the JSON string for (String requiredField : ApiErrorResponseContent.openapiRequiredFields) { if (jsonObj.get(requiredField) == null) { throw new IllegalArgumentException(String.format(\\"The required field \`%s\` is not found in the JSON string: %s\\", requiredField, jsonObj.toString())); } } if (!jsonObj.get(\\"errorMessage\\").isJsonPrimitive()) { throw new IllegalArgumentException(String.format(\\"Expected the field \`errorMessage\` to be a primitive type in the JSON string but got \`%s\`\\", jsonObj.get(\\"errorMessage\\").toString())); } } public static class CustomTypeAdapterFactory implements TypeAdapterFactory { @SuppressWarnings(\\"unchecked\\") @Override public TypeAdapter create(Gson gson, TypeToken type) { if (!ApiErrorResponseContent.class.isAssignableFrom(type.getRawType())) { return null; // this class only serializes 'ApiErrorResponseContent' and its subtypes } final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); final TypeAdapter thisAdapter = gson.getDelegateAdapter(this, TypeToken.get(ApiErrorResponseContent.class)); return (TypeAdapter) new TypeAdapter() { @Override public void write(JsonWriter out, ApiErrorResponseContent value) throws IOException { JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); elementAdapter.write(out, obj); } @Override public ApiErrorResponseContent read(JsonReader in) throws IOException { JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject(); validateJsonObject(jsonObj); return thisAdapter.fromJsonTree(jsonObj); } }.nullSafe(); } } /** * Create an instance of ApiErrorResponseContent given an JSON string * * @param jsonString JSON string * @return An instance of ApiErrorResponseContent * @throws IOException if the JSON string is invalid with respect to ApiErrorResponseContent */ public static ApiErrorResponseContent fromJson(String jsonString) throws IOException { return JSON.getGson().fromJson(jsonString, ApiErrorResponseContent.class); } /** * Convert an instance of ApiErrorResponseContent to an JSON string * * @return JSON string */ public String toJson() { return JSON.getGson().toJson(this); } } ", "generated/java/src/main/java/com/generated/api/myapijava/client/model/SayHelloResponseContent.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.model; import java.util.Objects; import java.util.Arrays; import com.google.gson.TypeAdapter; import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.SerializedName; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.google.gson.TypeAdapterFactory; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import com.generated.api.myapijava.client.JSON; /** * SayHelloResponseContent */ @lombok.AllArgsConstructor @lombok.experimental.SuperBuilder @javax.annotation.Generated(value = \\"org.openapitools.codegen.languages.JavaClientCodegen\\") public class SayHelloResponseContent { public static final String SERIALIZED_NAME_MESSAGE = \\"message\\"; @SerializedName(SERIALIZED_NAME_MESSAGE) private String message; public SayHelloResponseContent() { } public SayHelloResponseContent message(String message) { this.message = message; return this; } /** * Get message * @return message **/ @javax.annotation.Nonnull public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } SayHelloResponseContent sayHelloResponseContent = (SayHelloResponseContent) o; return Objects.equals(this.message, sayHelloResponseContent.message); } @Override public int hashCode() { return Objects.hash(message); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(\\"class SayHelloResponseContent {\\\\n\\"); sb.append(\\" message: \\").append(toIndentedString(message)).append(\\"\\\\n\\"); sb.append(\\"}\\"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(Object o) { if (o == null) { return \\"null\\"; } return o.toString().replace(\\"\\\\n\\", \\"\\\\n \\"); } public static HashSet openapiFields; public static HashSet openapiRequiredFields; static { // a set of all properties/fields (JSON key names) openapiFields = new HashSet(); openapiFields.add(\\"message\\"); // a set of required properties/fields (JSON key names) openapiRequiredFields = new HashSet(); openapiRequiredFields.add(\\"message\\"); } /** * Validates the JSON Object and throws an exception if issues found * * @param jsonObj JSON Object * @throws IOException if the JSON Object is invalid with respect to SayHelloResponseContent */ public static void validateJsonObject(JsonObject jsonObj) throws IOException { if (jsonObj == null) { if (!SayHelloResponseContent.openapiRequiredFields.isEmpty()) { // has required fields but JSON object is null throw new IllegalArgumentException(String.format(\\"The required field(s) %s in SayHelloResponseContent is not found in the empty JSON string\\", SayHelloResponseContent.openapiRequiredFields.toString())); } } Set> entries = jsonObj.entrySet(); // check to see if the JSON string contains additional fields for (Entry entry : entries) { if (!SayHelloResponseContent.openapiFields.contains(entry.getKey())) { throw new IllegalArgumentException(String.format(\\"The field \`%s\` in the JSON string is not defined in the \`SayHelloResponseContent\` properties. JSON: %s\\", entry.getKey(), jsonObj.toString())); } } // check to make sure all required properties/fields are present in the JSON string for (String requiredField : SayHelloResponseContent.openapiRequiredFields) { if (jsonObj.get(requiredField) == null) { throw new IllegalArgumentException(String.format(\\"The required field \`%s\` is not found in the JSON string: %s\\", requiredField, jsonObj.toString())); } } if (!jsonObj.get(\\"message\\").isJsonPrimitive()) { throw new IllegalArgumentException(String.format(\\"Expected the field \`message\` to be a primitive type in the JSON string but got \`%s\`\\", jsonObj.get(\\"message\\").toString())); } } public static class CustomTypeAdapterFactory implements TypeAdapterFactory { @SuppressWarnings(\\"unchecked\\") @Override public TypeAdapter create(Gson gson, TypeToken type) { if (!SayHelloResponseContent.class.isAssignableFrom(type.getRawType())) { return null; // this class only serializes 'SayHelloResponseContent' and its subtypes } final TypeAdapter elementAdapter = gson.getAdapter(JsonElement.class); final TypeAdapter thisAdapter = gson.getDelegateAdapter(this, TypeToken.get(SayHelloResponseContent.class)); return (TypeAdapter) new TypeAdapter() { @Override public void write(JsonWriter out, SayHelloResponseContent value) throws IOException { JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject(); elementAdapter.write(out, obj); } @Override public SayHelloResponseContent read(JsonReader in) throws IOException { JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject(); validateJsonObject(jsonObj); return thisAdapter.fromJsonTree(jsonObj); } }.nullSafe(); } } /** * Create an instance of SayHelloResponseContent given an JSON string * * @param jsonString JSON string * @return An instance of SayHelloResponseContent * @throws IOException if the JSON string is invalid with respect to SayHelloResponseContent */ public static SayHelloResponseContent fromJson(String jsonString) throws IOException { return JSON.getGson().fromJson(jsonString, SayHelloResponseContent.class); } /** * Convert an instance of SayHelloResponseContent to an JSON string * * @return JSON string */ public String toJson() { return JSON.getGson().toJson(this); } } ", "generated/java/src/test/java/com/generated/api/myapijava/client/api/DefaultApiTest.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.api; import com.generated.api.myapijava.client.ApiException; import com.generated.api.myapijava.client.model.ApiErrorResponseContent; import com.generated.api.myapijava.client.model.SayHelloResponseContent; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * API tests for DefaultApi */ @Disabled public class DefaultApiTest { private final DefaultApi api = new DefaultApi(); /** * @throws ApiException if the Api call fails */ @Test public void sayHelloTest() throws ApiException { String name = null; SayHelloResponseContent response = api.sayHello(name) .execute(); // TODO: test validations } } ", "generated/java/src/test/java/com/generated/api/myapijava/client/model/ApiErrorResponseContentTest.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.model; import com.google.gson.TypeAdapter; import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.SerializedName; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; /** * Model tests for ApiErrorResponseContent */ public class ApiErrorResponseContentTest { private final ApiErrorResponseContent model = new ApiErrorResponseContent(); /** * Model tests for ApiErrorResponseContent */ @Test public void testApiErrorResponseContent() { // TODO: test ApiErrorResponseContent } /** * Test the property 'errorMessage' */ @Test public void errorMessageTest() { // TODO: test errorMessage } } ", "generated/java/src/test/java/com/generated/api/myapijava/client/model/SayHelloResponseContentTest.java": "/* * Example API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.0.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.generated.api.myapijava.client.model; import com.google.gson.TypeAdapter; import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.SerializedName; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; /** * Model tests for SayHelloResponseContent */ public class SayHelloResponseContentTest { private final SayHelloResponseContent model = new SayHelloResponseContent(); /** * Model tests for SayHelloResponseContent */ @Test public void testSayHelloResponseContent() { // TODO: test SayHelloResponseContent } /** * Test the property 'message' */ @Test public void messageTest() { // TODO: test message } } ", "pom.xml": " 4.0.0 software.aws.test my-api 1.0.0 jar myapi UTF-8 file://./generated/java/dist/java generated-java-api-client org.apache.maven.plugins maven-compiler-plugin 3.8.1 1.8 1.8 org.apache.maven.plugins maven-enforcer-plugin 3.0.0-M3 3.6 enforce-maven enforce org.apache.maven.plugins maven-jar-plugin 3.2.0 true true true org.apache.maven.plugins maven-javadoc-plugin 3.2.0 false protected false -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 attach-javadocs jar org.apache.maven.plugins maven-shade-plugin 3.3.0 false myapi-1.0.0 shade-task shade package org.apache.maven.plugins maven-source-plugin 3.2.1 attach-sources jar org.codehaus.mojo exec-maven-plugin 3.0.0 com.fasterxml.jackson.core jackson-databind [2.0.0,3.0.0) com.generated.api myapi-java 0.0.0 io.github.cdklabs cdknag [2.0.0,3.0.0) io.github.cdklabs projen (,1.0.0) org.projectlombok lombok [1.0.0,2.0.0) software.amazon.awscdk aws-cdk-lib [2.0.0,3.0.0) software.aws.awsprototypingsdk open-api-gateway (,1.0.0) software.constructs constructs [10.0.0,11.0.0) org.junit.jupiter junit-jupiter-api 5.7.0 test org.junit.jupiter junit-jupiter-engine 5.7.0 test ", "src/main/java/api/Api.java": "package api; import com.fasterxml.jackson.databind.ObjectMapper; import software.aws.awsprototypingsdk.openapigateway.MethodAndPath; import software.aws.awsprototypingsdk.openapigateway.OpenApiGatewayRestApi; import software.aws.awsprototypingsdk.openapigateway.OpenApiGatewayRestApiProps; import software.constructs.Construct; import com.generated.api.myapijava.client.api.OperationLookup; import java.io.IOException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; import java.util.stream.Collectors; /** * Type-safe construct for the API Gateway resources defined by the spec. * You will likely not need to modify this file, and can instead extend it and define your integrations. */ public class Api extends OpenApiGatewayRestApi { private static class SpecDetails { static String specPath; static Object spec; static { try { // The parsed spec is included as a packaged resource URL specUrl = SpecDetails.class.getClassLoader().getResource(\\"spec/.parsed-spec.json\\"); // We'll write the parsed spec to a temporary file outside of the jar to ensure CDK can package it as an asset Path parsedSpecPath = Files.createTempFile(\\"parsed-spec\\", \\".json\\"); specPath = parsedSpecPath.toString(); ObjectMapper json = new ObjectMapper(); spec = json.readValue(specUrl, Object.class); json.writeValue(parsedSpecPath.toFile(), spec); } catch (IOException e) { throw new RuntimeException(e); } } } public Api(Construct scope, String id, ApiProps props) { super(scope, id, OpenApiGatewayRestApiProps.builder() .defaultAuthorizer(props.getDefaultAuthorizer()) .corsOptions(props.getCorsOptions()) .operationLookup(OperationLookup.getOperationLookup() .entrySet() .stream() .collect(Collectors.toMap(Map.Entry::getKey, e -> MethodAndPath.builder() .method(e.getValue().get(\\"method\\")) .path(e.getValue().get(\\"path\\")) .build()))) .spec(SpecDetails.spec) .specPath(SpecDetails.specPath) .integrations(props.getIntegrations().asMap()) // Rest API Base Props .cloudWatchRole(props.getCloudWatchRole()) .deploy(props.getDeploy()) .deployOptions(props.getDeployOptions()) .description(props.getDescription()) .disableExecuteApiEndpoint(props.getDisableExecuteApiEndpoint()) .domainName(props.getDomainName()) .endpointExportName(props.getEndpointExportName()) .endpointTypes(props.getEndpointTypes()) .failOnWarnings(props.getFailOnWarnings()) .parameters(props.getParameters()) .policy(props.getPolicy()) .restApiName(props.getRestApiName()) .retainDeployments(props.getRetainDeployments()) .build()); } } ", "src/main/java/api/ApiProps.java": "package api; import software.amazon.awscdk.services.apigateway.CorsOptions; import software.amazon.awscdk.services.apigateway.StageOptions; import software.amazon.awscdk.services.apigateway.RestApiBaseProps; import software.amazon.awscdk.services.apigateway.DomainNameOptions; import software.amazon.awscdk.services.apigateway.EndpointType; import software.amazon.awscdk.services.iam.PolicyDocument; import software.aws.awsprototypingsdk.openapigateway.Authorizer; import software.aws.awsprototypingsdk.openapigateway.OpenApiIntegration; import com.generated.api.myapijava.client.api.OperationConfig; import java.util.List; import java.util.Map; /** * Properties for the Api construct */ @lombok.Builder @lombok.Getter public class ApiProps implements RestApiBaseProps { public OperationConfig integrations; public Authorizer defaultAuthorizer; public CorsOptions corsOptions; // Rest API Props public Boolean cloudWatchRole; public Boolean deploy; public StageOptions deployOptions; public String description; public Boolean disableExecuteApiEndpoint; public DomainNameOptions domainName; public String endpointExportName; public List endpointTypes; public Boolean failOnWarnings; public Map parameters; public PolicyDocument policy; public String restApiName; public Boolean retainDeployments; } ", "src/main/java/api/SampleApi.java": "package api; import software.amazon.awscdk.Duration; import software.amazon.awscdk.services.apigateway.CorsOptions; import software.amazon.awscdk.services.lambda.Code; import software.amazon.awscdk.services.lambda.Function; import software.amazon.awscdk.services.lambda.FunctionProps; import software.amazon.awscdk.services.lambda.Runtime; import software.aws.awsprototypingsdk.openapigateway.Authorizers; import software.aws.awsprototypingsdk.openapigateway.Integrations; import software.aws.awsprototypingsdk.openapigateway.OpenApiIntegration; import com.generated.api.myapijava.client.api.OperationConfig; import software.constructs.Construct; import java.net.URISyntaxException; import java.util.Arrays; /** * An example of how to wire lambda handler functions to API operations */ public class SampleApi extends Api { public SampleApi(Construct scope, String id) { super(scope, id, ApiProps.builder() .defaultAuthorizer(Authorizers.iam()) .corsOptions(CorsOptions.builder() .allowOrigins(Arrays.asList(\\"*\\")) .allowMethods(Arrays.asList(\\"*\\")) .build()) .integrations(OperationConfig.builder() .sayHello(OpenApiIntegration.builder() .integration(Integrations.lambda( new Function(scope, \\"say-hello\\", FunctionProps.builder() // Use the entire project jar for the lambda code in order to provide a simple, // \\"one-click\\" way to build the api. However this jar is much larger than necessary // since it includes cdk infrastructure, dependencies etc. // It is recommended to follow the instructions in the \\"Java API Lambda Handlers\\" // section of the open-api-gateway README to define your lambda handlers as a // separate project. .code(Code.fromAsset(SampleApi.getJarPath())) .handler(\\"api.SayHelloHandler\\") .runtime(Runtime.JAVA_11) .timeout(Duration.seconds(30)) .build()))) .build()) .build()) .build()); } private static String getJarPath() { try { // Retrieve the path of the jar in which this class resides return SampleApi.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); } catch (URISyntaxException e) { throw new RuntimeException(e); } } } ", "src/main/java/api/SayHelloHandler.java": "package api; import com.generated.api.myapijava.client.api.Handlers.SayHello; import com.generated.api.myapijava.client.api.Handlers.SayHello200Response; import com.generated.api.myapijava.client.api.Handlers.SayHelloRequestInput; import com.generated.api.myapijava.client.api.Handlers.SayHelloResponse; import com.generated.api.myapijava.client.model.SayHelloResponseContent; /** * An example lambda handler which uses the generated handler wrapper class (Handlers.SayHello) to manage marshalling * inputs and outputs. */ public class SayHelloHandler extends SayHello { @Override public SayHelloResponse handle(SayHelloRequestInput sayHelloRequestInput) { return SayHello200Response.of(SayHelloResponseContent.builder() .message(String.format(\\"Hello %s\\", sayHelloRequestInput.getInput().getRequestParameters().getName())) .build()); } } ", "src/main/resources/spec/.parsed-spec.json": Object { "components": Object { "schemas": Object { "ApiErrorResponseContent": Object { "properties": Object { "errorMessage": Object { "type": "string", }, }, "required": Array [ "errorMessage", ], "type": "object", }, "SayHelloResponseContent": Object { "properties": Object { "message": Object { "type": "string", }, }, "required": Array [ "message", ], "type": "object", }, }, }, "info": Object { "title": "Example API", "version": "1.0.0", }, "openapi": "3.0.3", "paths": Object { "/hello": Object { "get": Object { "operationId": "sayHello", "parameters": Array [ Object { "in": "query", "name": "name", "required": true, "schema": Object { "type": "string", }, }, ], "responses": Object { "200": Object { "content": Object { "application/json": Object { "schema": Object { "$ref": "#/components/schemas/SayHelloResponseContent", }, }, }, "description": "Successful response", }, "400": Object { "content": Object { "application/json": Object { "schema": Object { "$ref": "#/components/schemas/ApiErrorResponseContent", }, }, }, "description": "Error response", }, }, }, }, }, }, "src/spec/spec.yaml": "openapi: 3.0.3 info: version: 1.0.0 title: Example API paths: /hello: get: operationId: sayHello parameters: - in: query name: name schema: type: string required: true responses: '200': description: Successful response content: 'application/json': schema: $ref: '#/components/schemas/SayHelloResponseContent' '400': description: Error response content: 'application/json': schema: $ref: '#/components/schemas/ApiErrorResponseContent' components: schemas: ApiErrorResponseContent: type: object properties: errorMessage: type: string required: - errorMessage SayHelloResponseContent: type: object properties: message: type: string required: - message ", "src/test/java/org/acme/MyTest.java": "package org.acme; import org.junit.jupiter.api.Test; public class MyTest { @Test public void testHello() { System.out.println(\\"Hello, world!\\"); } }", } `;