com.google.dart.server.internal.remote.processor.JsonProcessor.java Source code

Java tutorial

Introduction

Here is the source code for com.google.dart.server.internal.remote.processor.JsonProcessor.java

Source

/*
 * Copyright (c) 2014, the Dart project authors.
 * 
 * Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
 * 
 * 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.google.dart.server.internal.remote.processor;

import com.google.common.collect.Lists;
import com.google.dart.server.utilities.general.StringUtilities;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import java.util.Iterator;
import java.util.List;

/**
 * Abstract processor class with common behavior for {@link NotificationProcessor} and
 * {@link ResultProcessor}.
 * 
 * @coverage dart.server.remote
 */
public abstract class JsonProcessor {

    /**
     * Given some {@link JsonArray} and of {@code int} primitives, return the {@code int[]}.
     * 
     * @param intJsonArray some {@link JsonArray} of {@code int}s
     * @return the {@code int[]}
     */
    protected int[] constructIntArray(JsonArray intJsonArray) {
        if (intJsonArray == null) {
            return new int[] {};
        }
        int i = 0;
        int[] ints = new int[intJsonArray.size()];
        Iterator<JsonElement> iterator = intJsonArray.iterator();
        while (iterator.hasNext()) {
            ints[i] = iterator.next().getAsInt();
            i++;
        }
        return ints;
    }

    /**
     * Given some {@link JsonArray} and of string primitives, return the {@link String} array.
     * 
     * @param strJsonArray some {@link JsonArray} of {@link String}s
     * @return the {@link String} array
     */
    protected String[] constructStringArray(JsonArray strJsonArray) {
        if (strJsonArray == null) {
            return StringUtilities.EMPTY_ARRAY;
        }
        List<String> strings = Lists.newArrayList();
        Iterator<JsonElement> iterator = strJsonArray.iterator();
        while (iterator.hasNext()) {
            strings.add(iterator.next().getAsString());
        }
        return strings.toArray(new String[strings.size()]);
    }

    /**
     * Safely get some member off of the passed {@link JsonObject} and return the {@code int}. Instead
     * of calling {@link JsonObject#has(String)} before {@link JsonObject#get(String)}, only one call
     * to the {@link JsonObject} is made in order to be faster. The result will be the passed default
     * value if the member is not on the {@link JsonObject}. This is used for optional json
     * parameters.
     * 
     * @param jsonObject the {@link JsonObject}
     * @param memberName the member name
     * @param defaultValue the default value if the member is not in the {@link JsonObject}
     * @return the looked up {@link JsonArray}, or the default value
     */
    protected int safelyGetAsInt(JsonObject jsonObject, String memberName, int defaultValue) {
        JsonElement jsonElement = jsonObject.get(memberName);
        if (jsonElement == null) {
            return defaultValue;
        } else {
            return jsonElement.getAsInt();
        }
    }

    /**
     * Safely get some member off of the passed {@link JsonObject} and return the {@link JsonArray}.
     * Instead of calling {@link JsonObject#has(String)} before {@link JsonObject#get(String)}, only
     * one call to the {@link JsonObject} is made in order to be faster. The result will be
     * {@code null} if the member is not on the {@link JsonObject}. This is used for optional json
     * parameters.
     * 
     * @param jsonObject the {@link JsonObject}
     * @param memberName the member name
     * @return the looked up {@link JsonArray}, or {@code null}
     */
    protected JsonArray safelyGetAsJsonArray(JsonObject jsonObject, String memberName) {
        JsonElement jsonElement = jsonObject.get(memberName);
        if (jsonElement == null) {
            return null;
        } else {
            return jsonElement.getAsJsonArray();
        }
    }

    /**
     * Safely get some member off of the passed {@link JsonObject} and return the {@code JsonObject}.
     * Instead of calling {@link JsonObject#has(String)} before {@link JsonObject#get(String)}, only
     * one call to the {@link JsonObject} is made in order to be faster. The result will be the passed
     * default value if the member is not on the {@link JsonObject}. This is used for optional json
     * parameters.
     * 
     * @param jsonObject the {@link JsonObject}
     * @param memberName the member name
     * @return the looked up {@link JsonObject}, or {@code null}
     */
    protected JsonObject safelyGetAsJsonObject(JsonObject jsonObject, String memberName) {
        JsonElement jsonElement = jsonObject.get(memberName);
        if (jsonElement == null) {
            return null;
        } else {
            return jsonElement.getAsJsonObject();
        }
    }

    /**
     * Safely get some member off of the passed {@link JsonObject} and return the {@link String}.
     * Instead of calling {@link JsonObject#has(String)} before {@link JsonObject#get(String)}, only
     * one call to the {@link JsonObject} is made in order to be faster. The result will be
     * {@code null} if the member is not on the {@link JsonObject}. This is used for optional json
     * parameters.
     * 
     * @param jsonObject the {@link JsonObject}
     * @param memberName the member name
     * @return the looked up {@link String}, or {@code null}
     */
    protected String safelyGetAsString(JsonObject jsonObject, String memberName) {
        JsonElement jsonElement = jsonObject.get(memberName);
        if (jsonElement == null) {
            return null;
        } else {
            return jsonElement.getAsString();
        }
    }
}