Package com.baasbox.commands

Source Code of com.baasbox.commands.ScriptCommand

/*
* Copyright (c) 2014.
*
* BaasBox - info@baasbox.com
*
* 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
*
* http://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.
*/

package com.baasbox.commands;

import com.baasbox.commands.exceptions.CommandException;
import com.baasbox.commands.exceptions.CommandParsingException;
import com.baasbox.service.scripting.base.JsonCallback;
import com.baasbox.service.scripting.js.Json;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

/**
* Interface for commands executed from scripting languages.
* Any command should return a JsonNode response or null.
*
* The request format of a command follows the following pattern:
*
* {name: "name of the command",
*  resource: optional resource name,
*  params: {}*,}
*
* Created by Andrea Tortorella on 30/06/14.
*/
public abstract interface ScriptCommand {
    public static final String NAME= "name";
    public static final String PARAMS="params";
    public static final String RESOURCE = "resource";
    public static final String ID = "mod";
    public static final String MAIN="main";

    public default void validate(JsonNode command,boolean hasParams) throws CommandParsingException {
        boolean isObj = command.isObject();
        if (!isObj)throw new CommandParsingException(command,"command is not an object");
        JsonNode res = command.get(RESOURCE);
        if (res==null||!res.isTextual())throw new CommandParsingException(command,"missing required resource");
        JsonNode name = command.get(NAME);
        if (name == null||!name.isTextual())throw new CommandParsingException(command,"missing required name");

        if (hasParams){
            JsonNode p = command.get(PARAMS);
            if (p==null||!(p.isObject())){
                throw new CommandParsingException(command,"missing required parameters");
            }
        }
    }

    public default void validate(JsonNode command) throws CommandParsingException{
        validate(command,false);
    }




    public abstract JsonNode execute(JsonNode command, JsonCallback callback) throws CommandException;
}
TOP

Related Classes of com.baasbox.commands.ScriptCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.