mirror of
https://github.com/yushijinhun/authlib-injector.git
synced 2024-11-15 06:11:09 +01:00
[json-simple]crop
This commit is contained in:
parent
11086df465
commit
cb9ce1794b
6 changed files with 0 additions and 415 deletions
|
@ -48,7 +48,6 @@ import java.util.Iterator;
|
||||||
* @author FangYidong<fangyidong@yahoo.com.cn>
|
* @author FangYidong<fangyidong@yahoo.com.cn>
|
||||||
*/
|
*/
|
||||||
public class JSONArray extends ArrayList<Object> implements JSONAware, JSONStreamAware {
|
public class JSONArray extends ArrayList<Object> implements JSONAware, JSONStreamAware {
|
||||||
private static final long serialVersionUID = 3957988303675231981L;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an empty JSONArray.
|
* Constructs an empty JSONArray.
|
||||||
|
|
|
@ -49,8 +49,6 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
public class JSONObject extends LinkedHashMap<String, Object> implements JSONAware, JSONStreamAware {
|
public class JSONObject extends LinkedHashMap<String, Object> implements JSONAware, JSONStreamAware {
|
||||||
|
|
||||||
private static final long serialVersionUID = -503443796854799292L;
|
|
||||||
|
|
||||||
public JSONObject() {
|
public JSONObject() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2019 Haowei Wen <yushijinhun@gmail.com> and contributors
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Copyright 2014 FangYidong<fangyidong@yahoo.com.cn>
|
|
||||||
*
|
|
||||||
* 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 moe.yushi.authlibinjector.internal.org.json.simple.parser;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A simplified and stoppable SAX-like content handler for stream processing of JSON text.
|
|
||||||
*
|
|
||||||
* @see org.xml.sax.ContentHandler
|
|
||||||
* @see moe.yushi.authlibinjector.internal.org.json.simple.parser.JSONParser#parse(java.io.Reader, ContentHandler, boolean)
|
|
||||||
*
|
|
||||||
* @author FangYidong<fangyidong@yahoo.com.cn>
|
|
||||||
*/
|
|
||||||
public interface ContentHandler {
|
|
||||||
/**
|
|
||||||
* Receive notification of the beginning of JSON processing.
|
|
||||||
* The parser will invoke this method only once.
|
|
||||||
*
|
|
||||||
* @throws ParseException
|
|
||||||
* - JSONParser will stop and throw the same exception to the caller when receiving this exception.
|
|
||||||
*/
|
|
||||||
void startJSON() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the end of JSON processing.
|
|
||||||
*
|
|
||||||
* @throws ParseException
|
|
||||||
*/
|
|
||||||
void endJSON() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the beginning of a JSON object.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
* - JSONParser will stop and throw the same exception to the caller when receiving this exception.
|
|
||||||
* @see #endJSON
|
|
||||||
*/
|
|
||||||
boolean startObject() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the end of a JSON object.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*
|
|
||||||
* @see #startObject
|
|
||||||
*/
|
|
||||||
boolean endObject() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the beginning of a JSON object entry.
|
|
||||||
*
|
|
||||||
* @param key
|
|
||||||
* - Key of a JSON object entry.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*
|
|
||||||
* @see #endObjectEntry
|
|
||||||
*/
|
|
||||||
boolean startObjectEntry(String key) throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the end of the value of previous object entry.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*
|
|
||||||
* @see #startObjectEntry
|
|
||||||
*/
|
|
||||||
boolean endObjectEntry() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the beginning of a JSON array.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*
|
|
||||||
* @see #endArray
|
|
||||||
*/
|
|
||||||
boolean startArray() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the end of a JSON array.
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*
|
|
||||||
* @see #startArray
|
|
||||||
*/
|
|
||||||
boolean endArray() throws ParseException, IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Receive notification of the JSON primitive values:
|
|
||||||
* java.lang.String,
|
|
||||||
* java.lang.Number,
|
|
||||||
* java.lang.Boolean
|
|
||||||
* null
|
|
||||||
*
|
|
||||||
* @param value
|
|
||||||
* - Instance of the following:
|
|
||||||
* java.lang.String,
|
|
||||||
* java.lang.Number,
|
|
||||||
* java.lang.Boolean
|
|
||||||
* null
|
|
||||||
*
|
|
||||||
* @return false if the handler wants to stop parsing after return.
|
|
||||||
* @throws ParseException
|
|
||||||
*/
|
|
||||||
boolean primitive(Object value) throws ParseException, IOException;
|
|
||||||
|
|
||||||
}
|
|
|
@ -55,11 +55,8 @@ public class JSONParser {
|
||||||
public static final int S_IN_OBJECT = 2;
|
public static final int S_IN_OBJECT = 2;
|
||||||
public static final int S_IN_ARRAY = 3;
|
public static final int S_IN_ARRAY = 3;
|
||||||
public static final int S_PASSED_PAIR_KEY = 4;
|
public static final int S_PASSED_PAIR_KEY = 4;
|
||||||
public static final int S_IN_PAIR_VALUE = 5;
|
|
||||||
public static final int S_END = 6;
|
|
||||||
public static final int S_IN_ERROR = -1;
|
public static final int S_IN_ERROR = -1;
|
||||||
|
|
||||||
private LinkedList<Integer> handlerStatusStack;
|
|
||||||
private Yylex lexer = new Yylex((Reader) null);
|
private Yylex lexer = new Yylex((Reader) null);
|
||||||
private Yytoken token = null;
|
private Yytoken token = null;
|
||||||
private int status = S_INIT;
|
private int status = S_INIT;
|
||||||
|
@ -78,7 +75,6 @@ public class JSONParser {
|
||||||
public void reset() {
|
public void reset() {
|
||||||
token = null;
|
token = null;
|
||||||
status = S_INIT;
|
status = S_INIT;
|
||||||
handlerStatusStack = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -339,226 +335,4 @@ public class JSONParser {
|
||||||
return new JSONArray();
|
return new JSONArray();
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void parse(String s, ContentHandler contentHandler) throws ParseException {
|
|
||||||
parse(s, contentHandler, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void parse(String s, ContentHandler contentHandler, boolean isResume) throws ParseException {
|
|
||||||
StringReader in = new StringReader(s);
|
|
||||||
try {
|
|
||||||
parse(in, contentHandler, isResume);
|
|
||||||
} catch (IOException ie) {
|
|
||||||
/*
|
|
||||||
* Actually it will never happen.
|
|
||||||
*/
|
|
||||||
throw new ParseException(-1, ParseException.ERROR_UNEXPECTED_EXCEPTION, ie);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void parse(Reader in, ContentHandler contentHandler) throws IOException, ParseException {
|
|
||||||
parse(in, contentHandler, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stream processing of JSON text.
|
|
||||||
*
|
|
||||||
* @see ContentHandler
|
|
||||||
*
|
|
||||||
* @param in
|
|
||||||
* @param contentHandler
|
|
||||||
* @param isResume
|
|
||||||
* - Indicates if it continues previous parsing operation.
|
|
||||||
* If set to true, resume parsing the old stream, and parameter 'in' will be ignored.
|
|
||||||
* If this method is called for the first time in this instance, isResume will be ignored.
|
|
||||||
*
|
|
||||||
* @throws IOException
|
|
||||||
* @throws ParseException
|
|
||||||
*/
|
|
||||||
public void parse(Reader in, ContentHandler contentHandler, boolean isResume) throws IOException, ParseException {
|
|
||||||
if (!isResume) {
|
|
||||||
reset(in);
|
|
||||||
handlerStatusStack = new LinkedList<>();
|
|
||||||
} else {
|
|
||||||
if (handlerStatusStack == null) {
|
|
||||||
isResume = false;
|
|
||||||
reset(in);
|
|
||||||
handlerStatusStack = new LinkedList<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LinkedList<Integer> statusStack = handlerStatusStack;
|
|
||||||
|
|
||||||
try {
|
|
||||||
do {
|
|
||||||
switch (status) {
|
|
||||||
case S_INIT:
|
|
||||||
contentHandler.startJSON();
|
|
||||||
nextToken();
|
|
||||||
switch (token.type) {
|
|
||||||
case Yytoken.TYPE_VALUE:
|
|
||||||
status = S_IN_FINISHED_VALUE;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.primitive(token.value))
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_BRACE:
|
|
||||||
status = S_IN_OBJECT;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startObject())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_SQUARE:
|
|
||||||
status = S_IN_ARRAY;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startArray())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
}// inner switch
|
|
||||||
break;
|
|
||||||
|
|
||||||
case S_IN_FINISHED_VALUE:
|
|
||||||
nextToken();
|
|
||||||
if (token.type == Yytoken.TYPE_EOF) {
|
|
||||||
contentHandler.endJSON();
|
|
||||||
status = S_END;
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
throw new ParseException(getPosition(), ParseException.ERROR_UNEXPECTED_TOKEN, token);
|
|
||||||
}
|
|
||||||
|
|
||||||
case S_IN_OBJECT:
|
|
||||||
nextToken();
|
|
||||||
switch (token.type) {
|
|
||||||
case Yytoken.TYPE_COMMA:
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_VALUE:
|
|
||||||
if (token.value instanceof String) {
|
|
||||||
String key = (String) token.value;
|
|
||||||
status = S_PASSED_PAIR_KEY;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startObjectEntry(key))
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_RIGHT_BRACE:
|
|
||||||
if (statusStack.size() > 1) {
|
|
||||||
statusStack.removeFirst();
|
|
||||||
status = peekStatus(statusStack);
|
|
||||||
} else {
|
|
||||||
status = S_IN_FINISHED_VALUE;
|
|
||||||
}
|
|
||||||
if (!contentHandler.endObject())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
break;
|
|
||||||
}// inner switch
|
|
||||||
break;
|
|
||||||
|
|
||||||
case S_PASSED_PAIR_KEY:
|
|
||||||
nextToken();
|
|
||||||
switch (token.type) {
|
|
||||||
case Yytoken.TYPE_COLON:
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_VALUE:
|
|
||||||
statusStack.removeFirst();
|
|
||||||
status = peekStatus(statusStack);
|
|
||||||
if (!contentHandler.primitive(token.value))
|
|
||||||
return;
|
|
||||||
if (!contentHandler.endObjectEntry())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_SQUARE:
|
|
||||||
statusStack.removeFirst();
|
|
||||||
statusStack.addFirst(S_IN_PAIR_VALUE);
|
|
||||||
status = S_IN_ARRAY;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startArray())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_BRACE:
|
|
||||||
statusStack.removeFirst();
|
|
||||||
statusStack.addFirst(S_IN_PAIR_VALUE);
|
|
||||||
status = S_IN_OBJECT;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startObject())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case S_IN_PAIR_VALUE:
|
|
||||||
/*
|
|
||||||
* S_IN_PAIR_VALUE is just a marker to indicate the end of an object entry, it doesn't proccess any token,
|
|
||||||
* therefore delay consuming token until next round.
|
|
||||||
*/
|
|
||||||
statusStack.removeFirst();
|
|
||||||
status = peekStatus(statusStack);
|
|
||||||
if (!contentHandler.endObjectEntry())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case S_IN_ARRAY:
|
|
||||||
nextToken();
|
|
||||||
switch (token.type) {
|
|
||||||
case Yytoken.TYPE_COMMA:
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_VALUE:
|
|
||||||
if (!contentHandler.primitive(token.value))
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_RIGHT_SQUARE:
|
|
||||||
if (statusStack.size() > 1) {
|
|
||||||
statusStack.removeFirst();
|
|
||||||
status = peekStatus(statusStack);
|
|
||||||
} else {
|
|
||||||
status = S_IN_FINISHED_VALUE;
|
|
||||||
}
|
|
||||||
if (!contentHandler.endArray())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_BRACE:
|
|
||||||
status = S_IN_OBJECT;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startObject())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case Yytoken.TYPE_LEFT_SQUARE:
|
|
||||||
status = S_IN_ARRAY;
|
|
||||||
statusStack.addFirst(status);
|
|
||||||
if (!contentHandler.startArray())
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
}// inner switch
|
|
||||||
break;
|
|
||||||
|
|
||||||
case S_END:
|
|
||||||
return;
|
|
||||||
|
|
||||||
case S_IN_ERROR:
|
|
||||||
throw new ParseException(getPosition(), ParseException.ERROR_UNEXPECTED_TOKEN, token);
|
|
||||||
}// switch
|
|
||||||
if (status == S_IN_ERROR) {
|
|
||||||
throw new ParseException(getPosition(), ParseException.ERROR_UNEXPECTED_TOKEN, token);
|
|
||||||
}
|
|
||||||
} while (token.type != Yytoken.TYPE_EOF);
|
|
||||||
} catch (IOException | ParseException e) {
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
status = S_IN_ERROR;
|
|
||||||
throw new ParseException(getPosition(), ParseException.ERROR_UNEXPECTED_TOKEN, token);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ package moe.yushi.authlibinjector.internal.org.json.simple.parser;
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class ParseException extends Exception {
|
public class ParseException extends Exception {
|
||||||
private static final long serialVersionUID = -7880698968187728547L;
|
|
||||||
|
|
||||||
public static final int ERROR_UNEXPECTED_CHAR = 0;
|
public static final int ERROR_UNEXPECTED_CHAR = 0;
|
||||||
public static final int ERROR_UNEXPECTED_TOKEN = 1;
|
public static final int ERROR_UNEXPECTED_TOKEN = 1;
|
||||||
|
|
|
@ -214,7 +214,6 @@ class Yylex {
|
||||||
/* error codes */
|
/* error codes */
|
||||||
private static final int ZZ_UNKNOWN_ERROR = 0;
|
private static final int ZZ_UNKNOWN_ERROR = 0;
|
||||||
private static final int ZZ_NO_MATCH = 1;
|
private static final int ZZ_NO_MATCH = 1;
|
||||||
private static final int ZZ_PUSHBACK_2BIG = 2;
|
|
||||||
|
|
||||||
/* error messages for the codes above */
|
/* error messages for the codes above */
|
||||||
private static final String ZZ_ERROR_MSG[] = {
|
private static final String ZZ_ERROR_MSG[] = {
|
||||||
|
@ -383,17 +382,6 @@ class Yylex {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Closes the input stream.
|
|
||||||
*/
|
|
||||||
public final void yyclose() throws IOException {
|
|
||||||
zzAtEOF = true; /* indicate end of file */
|
|
||||||
zzEndRead = zzStartRead; /* invalidate buffer */
|
|
||||||
|
|
||||||
if (zzReader != null)
|
|
||||||
zzReader.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets the scanner to read from a new input stream.
|
* Resets the scanner to read from a new input stream.
|
||||||
* Does not close the old reader.
|
* Does not close the old reader.
|
||||||
|
@ -414,13 +402,6 @@ class Yylex {
|
||||||
zzLexicalState = YYINITIAL;
|
zzLexicalState = YYINITIAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the current lexical state.
|
|
||||||
*/
|
|
||||||
public final int yystate() {
|
|
||||||
return zzLexicalState;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enters a new lexical state
|
* Enters a new lexical state
|
||||||
*
|
*
|
||||||
|
@ -454,13 +435,6 @@ class Yylex {
|
||||||
return zzBuffer[zzStartRead + pos];
|
return zzBuffer[zzStartRead + pos];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the length of the matched text region.
|
|
||||||
*/
|
|
||||||
public final int yylength() {
|
|
||||||
return zzMarkedPos - zzStartRead;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reports an error that occured while scanning.
|
* Reports an error that occured while scanning.
|
||||||
*
|
*
|
||||||
|
@ -487,22 +461,6 @@ class Yylex {
|
||||||
throw new IllegalStateException(message);
|
throw new IllegalStateException(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Pushes the specified amount of characters back into the input stream.
|
|
||||||
*
|
|
||||||
* They will be read again by then next call of the scanning method
|
|
||||||
*
|
|
||||||
* @param number
|
|
||||||
* the number of characters to be read again.
|
|
||||||
* This number must not be greater than yylength()!
|
|
||||||
*/
|
|
||||||
public void yypushback(int number) {
|
|
||||||
if (number > yylength())
|
|
||||||
zzScanError(ZZ_PUSHBACK_2BIG);
|
|
||||||
|
|
||||||
zzMarkedPos -= number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resumes scanning until the next regular expression is matched,
|
* Resumes scanning until the next regular expression is matched,
|
||||||
* the end of input is encountered or an I/O-Error occurs.
|
* the end of input is encountered or an I/O-Error occurs.
|
||||||
|
|
Loading…
Reference in a new issue