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

io.gs2.script.Gs2ScriptRestClient Maven / Gradle / Ivy

The newest version!
/*
 * 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.script;

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.script.request.*;
import io.gs2.script.result.*;
import io.gs2.script.model.*;

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

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

    class DescribeNamespacesTask extends Gs2RestSessionTask {
        private DescribeNamespacesRequest request;

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

        @Override
        protected void executeImpl() {

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

            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 describeNamespacesAsync( DescribeNamespacesRequest request, AsyncAction> callback ) { DescribeNamespacesTask task = new DescribeNamespacesTask(request, callback, DescribeNamespacesResult.class); session.execute(task); } /** * ネームスペースの一覧を取得
* * @param request リクエストパラメータ */ public DescribeNamespacesResult describeNamespaces( DescribeNamespacesRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeNamespacesAsync( 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 CreateNamespaceTask extends Gs2RestSessionTask { private CreateNamespaceRequest request; public CreateNamespaceTask( CreateNamespaceRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/"; 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.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 createNamespaceAsync( CreateNamespaceRequest request, AsyncAction> callback ) { CreateNamespaceTask task = new CreateNamespaceTask(request, callback, CreateNamespaceResult.class); session.execute(task); } /** * ネームスペースを新規作成
* * @param request リクエストパラメータ */ public CreateNamespaceResult createNamespace( CreateNamespaceRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; createNamespaceAsync( 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 GetNamespaceStatusTask extends Gs2RestSessionTask { private GetNamespaceStatusRequest request; public GetNamespaceStatusTask( GetNamespaceStatusRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/status"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); 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 getNamespaceStatusAsync( GetNamespaceStatusRequest request, AsyncAction> callback ) { GetNamespaceStatusTask task = new GetNamespaceStatusTask(request, callback, GetNamespaceStatusResult.class); session.execute(task); } /** * ネームスペースを取得
* * @param request リクエストパラメータ */ public GetNamespaceStatusResult getNamespaceStatus( GetNamespaceStatusRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getNamespaceStatusAsync( 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 GetNamespaceTask extends Gs2RestSessionTask { private GetNamespaceRequest request; public GetNamespaceTask( GetNamespaceRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); 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 getNamespaceAsync( GetNamespaceRequest request, AsyncAction> callback ) { GetNamespaceTask task = new GetNamespaceTask(request, callback, GetNamespaceResult.class); session.execute(task); } /** * ネームスペースを取得
* * @param request リクエストパラメータ */ public GetNamespaceResult getNamespace( GetNamespaceRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getNamespaceAsync( 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 UpdateNamespaceTask extends Gs2RestSessionTask { private UpdateNamespaceRequest request; public UpdateNamespaceTask( UpdateNamespaceRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); ObjectMapper mapper = new ObjectMapper(); JSONObject json = new JSONObject(); if (this.request.getDescription() != null) { json.put("description", this.request.getDescription()); } 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 updateNamespaceAsync( UpdateNamespaceRequest request, AsyncAction> callback ) { UpdateNamespaceTask task = new UpdateNamespaceTask(request, callback, UpdateNamespaceResult.class); session.execute(task); } /** * ネームスペースを更新
* * @param request リクエストパラメータ */ public UpdateNamespaceResult updateNamespace( UpdateNamespaceRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; updateNamespaceAsync( 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 DeleteNamespaceTask extends Gs2RestSessionTask { private DeleteNamespaceRequest request; public DeleteNamespaceTask( DeleteNamespaceRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); 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 deleteNamespaceAsync( DeleteNamespaceRequest request, AsyncAction> callback ) { DeleteNamespaceTask task = new DeleteNamespaceTask(request, callback, DeleteNamespaceResult.class); session.execute(task); } /** * ネームスペースを削除
* * @param request リクエストパラメータ */ public DeleteNamespaceResult deleteNamespace( DeleteNamespaceRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; deleteNamespaceAsync( 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 DescribeScriptsTask extends Gs2RestSessionTask { private DescribeScriptsRequest request; public DescribeScriptsTask( DescribeScriptsRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); 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 describeScriptsAsync( DescribeScriptsRequest request, AsyncAction> callback ) { DescribeScriptsTask task = new DescribeScriptsTask(request, callback, DescribeScriptsResult.class); session.execute(task); } /** * スクリプトの一覧を取得します
* * @param request リクエストパラメータ */ public DescribeScriptsResult describeScripts( DescribeScriptsRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; describeScriptsAsync( 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 CreateScriptTask extends Gs2RestSessionTask { private CreateScriptRequest request; public CreateScriptTask( CreateScriptRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); 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.getScript() != null) { json.put("script", this.request.getScript()); } 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 createScriptAsync( CreateScriptRequest request, AsyncAction> callback ) { CreateScriptTask task = new CreateScriptTask(request, callback, CreateScriptResult.class); session.execute(task); } /** * スクリプトを新規作成します
* * @param request リクエストパラメータ */ public CreateScriptResult createScript( CreateScriptRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; createScriptAsync( 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 GetScriptTask extends Gs2RestSessionTask { private GetScriptRequest request; public GetScriptTask( GetScriptRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script/{scriptName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); url = url.replace("{scriptName}", this.request.getScriptName() == null|| this.request.getScriptName().length() == 0 ? "null" : String.valueOf(this.request.getScriptName())); 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 getScriptAsync( GetScriptRequest request, AsyncAction> callback ) { GetScriptTask task = new GetScriptTask(request, callback, GetScriptResult.class); session.execute(task); } /** * スクリプトを取得します
* * @param request リクエストパラメータ */ public GetScriptResult getScript( GetScriptRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; getScriptAsync( 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 UpdateScriptTask extends Gs2RestSessionTask { private UpdateScriptRequest request; public UpdateScriptTask( UpdateScriptRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script/{scriptName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); url = url.replace("{scriptName}", this.request.getScriptName() == null|| this.request.getScriptName().length() == 0 ? "null" : String.valueOf(this.request.getScriptName())); ObjectMapper mapper = new ObjectMapper(); JSONObject json = new JSONObject(); if (this.request.getDescription() != null) { json.put("description", this.request.getDescription()); } if (this.request.getScript() != null) { json.put("script", this.request.getScript()); } 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 updateScriptAsync( UpdateScriptRequest request, AsyncAction> callback ) { UpdateScriptTask task = new UpdateScriptTask(request, callback, UpdateScriptResult.class); session.execute(task); } /** * スクリプトを更新します
* * @param request リクエストパラメータ */ public UpdateScriptResult updateScript( UpdateScriptRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; updateScriptAsync( 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 DeleteScriptTask extends Gs2RestSessionTask { private DeleteScriptRequest request; public DeleteScriptTask( DeleteScriptRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script/{scriptName}"; url = url.replace("{namespaceName}", this.request.getNamespaceName() == null|| this.request.getNamespaceName().length() == 0 ? "null" : String.valueOf(this.request.getNamespaceName())); url = url.replace("{scriptName}", this.request.getScriptName() == null|| this.request.getScriptName().length() == 0 ? "null" : String.valueOf(this.request.getScriptName())); 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 deleteScriptAsync( DeleteScriptRequest request, AsyncAction> callback ) { DeleteScriptTask task = new DeleteScriptTask(request, callback, DeleteScriptResult.class); session.execute(task); } /** * スクリプトを削除します
* * @param request リクエストパラメータ */ public DeleteScriptResult deleteScript( DeleteScriptRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; deleteScriptAsync( 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 DebugInvokeTask extends Gs2RestSessionTask { private DebugInvokeRequest request; public DebugInvokeTask( DebugInvokeRequest request, AsyncAction> userCallback, Class clazz ) { super( (Gs2RestSession) session, userCallback, clazz ); this.request = request; } @Override protected void executeImpl() { String url = Gs2RestSession.EndpointHost .replace("{service}", "script") .replace("{region}", session.getRegion().getName()) + "/{namespaceName}/script/debug/invoke"; ObjectMapper mapper = new ObjectMapper(); JSONObject json = new JSONObject(); if (this.request.getScript() != null) { json.put("script", this.request.getScript()); } if (this.request.getArgs() != null) { json.put("args", this.request.getArgs()); } 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 debugInvokeAsync( DebugInvokeRequest request, AsyncAction> callback ) { DebugInvokeTask task = new DebugInvokeTask(request, callback, DebugInvokeResult.class); session.execute(task); } /** * スクリプトを実行します
* * @param request リクエストパラメータ */ public DebugInvokeResult debugInvoke( DebugInvokeRequest request ) { final AsyncResult[] resultAsyncResult = new AsyncResult[]{null}; debugInvokeAsync( 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 - 2024 Weber Informatics LLC | Privacy Policy