All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.gs2.deploy.Gs2DeployRestClient Maven / Gradle / Ivy

/*
 * Copyright 2016 Game Server Services, Inc. or its affiliates. All Rights
 * Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * or in the "license" file accompanying this file. This file 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.
 */

package io.gs2.deploy;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.json.JSONObject;
import org.json.JSONArray;

import io.gs2.model.AsyncAction;
import io.gs2.model.AsyncResult;
import io.gs2.exception.*;
import io.gs2.net.*;
import io.gs2.util.EncodingUtil;

import io.gs2.AbstractGs2Client;
import io.gs2.deploy.request.*;
import io.gs2.deploy.result.*;
import io.gs2.deploy.model.*;

/**
 * GS2 Deploy API クライアント
 *
 * @author Game Server Services, Inc.
 *
 */
public class Gs2DeployRestClient extends AbstractGs2Client {

	/**
	 * コンストラクタ。
	 *
	 * @param gs2RestSession セッション
	 */
	public Gs2DeployRestClient(Gs2RestSession gs2RestSession) {
		super(gs2RestSession);
	}

    class DescribeStacksTask extends Gs2RestSessionTask {
        private DescribeStacksRequest request;

        public DescribeStacksTask(
            DescribeStacksRequest request,
            AsyncAction> userCallback,
            Class clazz
        ) {
            super(
                    (Gs2RestSession) session,
                    userCallback,
                    clazz
            );
            this.request = request;
        }

        @Override
        protected void executeImpl() {

            String url = Gs2RestSession.EndpointHost
                .replace("{service}", "deploy")
                .replace("{region}", session.getRegion().getName())
                + "/stack";

            List queryStrings = new ArrayList<> ();
            if (this.request.getContextStack() != null) {
                queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack()));
            }
            if (this.request.getPageToken() != null) {
                queryStrings.add("pageToken=" + EncodingUtil.urlEncode((String.valueOf(this.request.getPageToken()))));
            }
            if (this.request.getLimit() != null) {
                queryStrings.add("limit=" + String.valueOf(this.request.getLimit()));
            }
            url += "?" + String.join("&", queryStrings);

            builder
                .setMethod(HttpTask.Method.GET)
                .setUrl(url)
                .setHeader("Content-Type", "application/json")
                .setHttpResponseHandler(this);

            if (this.request.getRequestId() != null) {
                builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId());
            }

            builder
                .build()
                .send();
        }
    }

    /**
     * スタックの一覧を取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void describeStacksAsync( DescribeStacksRequest request, AsyncAction> callback ) { DescribeStacksTask task = new DescribeStacksTask(request, callback, DescribeStacksResult.class); session.execute(task); } /** * スタックの一覧を取得
* * @param request リクエストパラメータ */ public DescribeStacksResult describeStacks( DescribeStacksRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeStacksAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class CreateStackTask extends Gs2RestSessionTask { private CreateStackRequest request; public CreateStackTask( CreateStackRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack"; ObjectMapper mapper = new ObjectMapper(); JSONObject json = new JSONObject(); if (this.request.getName() != null) { json.put("name", this.request.getName()); } if (this.request.getDescription() != null) { json.put("description", this.request.getDescription()); } if (this.request.getTemplate() != null) { json.put("template", this.request.getTemplate()); } if (this.request.getContextStack() != null) { json.put("contextStack", this.request.getContextStack()); } builder.setBody(json.toString().getBytes()); builder .setMethod(HttpTask.Method.POST) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを新規作成
* * @param callback コールバック * @param request リクエストパラメータ */ public void createStackAsync( CreateStackRequest request, AsyncAction> callback ) { CreateStackTask task = new CreateStackTask(request, callback, CreateStackResult.class); session.execute(task); } /** * スタックを新規作成
* * @param request リクエストパラメータ */ public CreateStackResult createStack( CreateStackRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; createStackAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class GetStackStatusTask extends Gs2RestSessionTask { private GetStackStatusRequest request; public GetStackStatusTask( GetStackStatusRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/status"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void getStackStatusAsync( GetStackStatusRequest request, AsyncAction> callback ) { GetStackStatusTask task = new GetStackStatusTask(request, callback, GetStackStatusResult.class); session.execute(task); } /** * スタックを取得
* * @param request リクエストパラメータ */ public GetStackStatusResult getStackStatus( GetStackStatusRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getStackStatusAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class GetStackTask extends Gs2RestSessionTask { private GetStackRequest request; public GetStackTask( GetStackRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void getStackAsync( GetStackRequest request, AsyncAction> callback ) { GetStackTask task = new GetStackTask(request, callback, GetStackResult.class); session.execute(task); } /** * スタックを取得
* * @param request リクエストパラメータ */ public GetStackResult getStack( GetStackRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getStackAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class UpdateStackTask extends Gs2RestSessionTask { private UpdateStackRequest request; public UpdateStackTask( UpdateStackRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); ObjectMapper mapper = new ObjectMapper(); JSONObject json = new JSONObject(); if (this.request.getDescription() != null) { json.put("description", this.request.getDescription()); } if (this.request.getTemplate() != null) { json.put("template", this.request.getTemplate()); } if (this.request.getContextStack() != null) { json.put("contextStack", this.request.getContextStack()); } builder.setBody(json.toString().getBytes()); builder .setMethod(HttpTask.Method.PUT) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを更新
* * @param callback コールバック * @param request リクエストパラメータ */ public void updateStackAsync( UpdateStackRequest request, AsyncAction> callback ) { UpdateStackTask task = new UpdateStackTask(request, callback, UpdateStackResult.class); session.execute(task); } /** * スタックを更新
* * @param request リクエストパラメータ */ public UpdateStackResult updateStack( UpdateStackRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; updateStackAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class DeleteStackTask extends Gs2RestSessionTask { private DeleteStackRequest request; public DeleteStackTask( DeleteStackRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.DELETE) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを削除
*
* スタックの削除は2段階で行われます。
* DELETE_COMPLETED ステータスではないスタックを削除すると、まずはスタックによって作成されたリソースの削除を行います。
* DELETE_COMPLETED ステータスのスタックを削除すると、完全にエンティティを削除します。
* * @param callback コールバック * @param request リクエストパラメータ */ public void deleteStackAsync( DeleteStackRequest request, AsyncAction> callback ) { DeleteStackTask task = new DeleteStackTask(request, callback, DeleteStackResult.class); session.execute(task); } /** * スタックを削除
*
* スタックの削除は2段階で行われます。
* DELETE_COMPLETED ステータスではないスタックを削除すると、まずはスタックによって作成されたリソースの削除を行います。
* DELETE_COMPLETED ステータスのスタックを削除すると、完全にエンティティを削除します。
* * @param request リクエストパラメータ */ public DeleteStackResult deleteStack( DeleteStackRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; deleteStackAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class ForceDeleteStackTask extends Gs2RestSessionTask { private ForceDeleteStackRequest request; public ForceDeleteStackTask( ForceDeleteStackRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/force"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.DELETE) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * スタックを削除
* * @param callback コールバック * @param request リクエストパラメータ */ public void forceDeleteStackAsync( ForceDeleteStackRequest request, AsyncAction> callback ) { ForceDeleteStackTask task = new ForceDeleteStackTask(request, callback, ForceDeleteStackResult.class); session.execute(task); } /** * スタックを削除
* * @param request リクエストパラメータ */ public ForceDeleteStackResult forceDeleteStack( ForceDeleteStackRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; forceDeleteStackAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class DescribeResourcesTask extends Gs2RestSessionTask { private DescribeResourcesRequest request; public DescribeResourcesTask( DescribeResourcesRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/resource"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } if (this.request.getPageToken() != null) { queryStrings.add("pageToken=" + EncodingUtil.urlEncode((String.valueOf(this.request.getPageToken())))); } if (this.request.getLimit() != null) { queryStrings.add("limit=" + String.valueOf(this.request.getLimit())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * 作成されたのリソースの一覧を取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void describeResourcesAsync( DescribeResourcesRequest request, AsyncAction> callback ) { DescribeResourcesTask task = new DescribeResourcesTask(request, callback, DescribeResourcesResult.class); session.execute(task); } /** * 作成されたのリソースの一覧を取得
* * @param request リクエストパラメータ */ public DescribeResourcesResult describeResources( DescribeResourcesRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeResourcesAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class GetResourceTask extends Gs2RestSessionTask { private GetResourceRequest request; public GetResourceTask( GetResourceRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/resource/{resourceName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); url = url.replace("{resourceName}", this.request.getResourceName() == null|| this.request.getResourceName().length() == 0 ? "null" : String.valueOf(this.request.getResourceName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * 作成されたのリソースを取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void getResourceAsync( GetResourceRequest request, AsyncAction> callback ) { GetResourceTask task = new GetResourceTask(request, callback, GetResourceResult.class); session.execute(task); } /** * 作成されたのリソースを取得
* * @param request リクエストパラメータ */ public GetResourceResult getResource( GetResourceRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getResourceAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class DescribeEventsTask extends Gs2RestSessionTask { private DescribeEventsRequest request; public DescribeEventsTask( DescribeEventsRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/event"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } if (this.request.getPageToken() != null) { queryStrings.add("pageToken=" + EncodingUtil.urlEncode((String.valueOf(this.request.getPageToken())))); } if (this.request.getLimit() != null) { queryStrings.add("limit=" + String.valueOf(this.request.getLimit())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * 発生したイベントの一覧を取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void describeEventsAsync( DescribeEventsRequest request, AsyncAction> callback ) { DescribeEventsTask task = new DescribeEventsTask(request, callback, DescribeEventsResult.class); session.execute(task); } /** * 発生したイベントの一覧を取得
* * @param request リクエストパラメータ */ public DescribeEventsResult describeEvents( DescribeEventsRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeEventsAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class GetEventTask extends Gs2RestSessionTask { private GetEventRequest request; public GetEventTask( GetEventRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/event/{eventName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); url = url.replace("{eventName}", this.request.getEventName() == null|| this.request.getEventName().length() == 0 ? "null" : String.valueOf(this.request.getEventName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * 発生したイベントを取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void getEventAsync( GetEventRequest request, AsyncAction> callback ) { GetEventTask task = new GetEventTask(request, callback, GetEventResult.class); session.execute(task); } /** * 発生したイベントを取得
* * @param request リクエストパラメータ */ public GetEventResult getEvent( GetEventRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getEventAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class DescribeOutputsTask extends Gs2RestSessionTask { private DescribeOutputsRequest request; public DescribeOutputsTask( DescribeOutputsRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/output"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } if (this.request.getPageToken() != null) { queryStrings.add("pageToken=" + EncodingUtil.urlEncode((String.valueOf(this.request.getPageToken())))); } if (this.request.getLimit() != null) { queryStrings.add("limit=" + String.valueOf(this.request.getLimit())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * アウトプットの一覧を取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void describeOutputsAsync( DescribeOutputsRequest request, AsyncAction> callback ) { DescribeOutputsTask task = new DescribeOutputsTask(request, callback, DescribeOutputsResult.class); session.execute(task); } /** * アウトプットの一覧を取得
* * @param request リクエストパラメータ */ public DescribeOutputsResult describeOutputs( DescribeOutputsRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeOutputsAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } class GetOutputTask extends Gs2RestSessionTask { private GetOutputRequest request; public GetOutputTask( GetOutputRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "deploy") .replace("{region}", session.getRegion().getName()) + "/stack/{stackName}/output/{outputName}"; url = url.replace("{stackName}", this.request.getStackName() == null|| this.request.getStackName().length() == 0 ? "null" : String.valueOf(this.request.getStackName())); url = url.replace("{outputName}", this.request.getOutputName() == null|| this.request.getOutputName().length() == 0 ? "null" : String.valueOf(this.request.getOutputName())); List queryStrings = new ArrayList<> (); if (this.request.getContextStack() != null) { queryStrings.add("contextStack=" + EncodingUtil.urlEncode(this.request.getContextStack())); } url += "?" + String.join("&", queryStrings); builder .setMethod(HttpTask.Method.GET) .setUrl(url) .setHeader("Content-Type", "application/json") .setHttpResponseHandler(this); if (this.request.getRequestId() != null) { builder.setHeader("X-GS2-REQUEST-ID", this.request.getRequestId()); } builder .build() .send(); } } /** * アウトプットを取得
* * @param callback コールバック * @param request リクエストパラメータ */ public void getOutputAsync( GetOutputRequest request, AsyncAction> callback ) { GetOutputTask task = new GetOutputTask(request, callback, GetOutputResult.class); session.execute(task); } /** * アウトプットを取得
* * @param request リクエストパラメータ */ public GetOutputResult getOutput( GetOutputRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getOutputAsync( request, result -> resultAsyncResult[0] = result ); while (resultAsyncResult[0] == null) { try { Thread.sleep(100); } catch (InterruptedException e) {} } if(resultAsyncResult[0].getError() != null) { throw resultAsyncResult[0].getError(); } return resultAsyncResult[0].getResult(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy