com.gistlabs.mechanize.document.json.node.impl.ArrayNodeImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.gistlabs.mechanize.document.json.node.impl.ArrayNodeImpl.java

Source

/**
 * Copyright (C) 2012-2014 Gist Labs, LLC. (http://gistlabs.com)
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package com.gistlabs.mechanize.document.json.node.impl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;

import com.gistlabs.mechanize.document.json.exceptions.JsonException;
import com.gistlabs.mechanize.document.json.node.JsonNode;

/**
 * Support for nested arrays
 */
public class ArrayNodeImpl extends AbstractJsonNode {
    private final JSONArray array;
    private List<JsonNode> children;

    public ArrayNodeImpl(final JSONArray array) {
        this(null, "", array);
    }

    public ArrayNodeImpl(final JsonNode parent, final String key, final JSONArray array) {
        super(parent, key);
        if (array == null)
            throw new NullPointerException("JSONArray can't be null");
        this.array = array;
    }

    @Override
    public String toString() {
        return array.toString();
    }

    @Override
    public String getAttribute(final String key) {
        return null;
    }

    @Override
    public void setAttribute(final String key, final String value) {
    }

    @Override
    public boolean hasAttribute(final String key) {
        return false;
    }

    @Override
    public List<String> getAttributeNames() {
        return new ArrayList<String>();
    }

    @Override
    public String getValue() {
        return null;
    }

    @Override
    public void setValue(final String value) {
    }

    @Override
    public <T extends JsonNode> T getChild(final String key) {
        return null;
    }

    @Override
    public List<JsonNode> getChildren() {
        return getChildren("*");
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<JsonNode> getChildren(final String... names) {
        if (names.length > 2)
            return Collections.EMPTY_LIST;
        if (names.length == 1 && !"*".equalsIgnoreCase(names[0]))
            return Collections.EMPTY_LIST;

        try {
            if (children == null) {
                children = new ArrayList<JsonNode>();
                for (int i = 0; i < array.length(); i++) {
                    Object obj = array.get(i);
                    children.add(factory("array", obj, array, i));
                }
            }
            return children;
        } catch (JSONException e) {
            throw new JsonException(e);
        }
    }
}