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

org.jolokia.json.parser.Yytoken Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2009-2024 Roland Huss
 *
 * 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 org.jolokia.json.parser;

import java.math.BigDecimal;
import java.math.BigInteger;

public class Yytoken {

    /**
     * 

Token types according to * JSON Grammar.

* *

The set of tokens includes six structural characters, strings, numbers, and three literal names

* *

These are the six structural characters: left square bracket, left curly bracket, right square bracket, * right curly bracket, colon, comma.

* *

A JSON value MUST be an object, array, number, or string, or one of the following three literal * names: {@code true}, {@code false}, {@code null}.

*/ public enum Kind { VALUE_INTEGER(true), VALUE_DECIMAL(true), VALUE_STRING(true), VALUE_BOOLEAN(true), VALUE_NULL(true), SYMBOL_LEFT_BRACE(false), SYMBOL_RIGHT_BRACE(false), SYMBOL_LEFT_SQUARE(false), SYMBOL_RIGHT_SQUARE(false), SYMBOL_COMMA(false), SYMBOL_COLON(false); private final boolean valueToken; Kind(boolean value) { this.valueToken = value; } public boolean isValueToken() { return valueToken; } } private final Kind kind; private boolean booleanValue; private String stringValue; private Number numberValue; public Yytoken(Kind kind) { this.kind = kind; } public Yytoken(Kind kind, String value) { this.kind = kind; this.stringValue = value; } public Yytoken(Kind kind, BigInteger value) { this.kind = kind; this.numberValue = value; } public Yytoken(Kind kind, BigDecimal value) { this.kind = kind; this.numberValue = value; } public Yytoken(Kind kind, boolean value) { this.kind = kind; this.booleanValue = value; } public Kind getKind() { return kind; } public String getStringValue() { return stringValue; } public BigInteger getIntegerValue() { return kind == Kind.VALUE_INTEGER ? (BigInteger) numberValue : null; } public BigDecimal getDecimalValue() { return kind == Kind.VALUE_DECIMAL ? (BigDecimal) numberValue : null; } public boolean getBooleanValue() { return booleanValue; } @Override public String toString() { switch (kind) { case VALUE_STRING: return "{" + kind + ": [" + stringValue + "]}"; case VALUE_INTEGER: case VALUE_DECIMAL: return "{" + kind + ": [" + numberValue + "]}"; default: return "{unknown}"; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy