public void testAppending() throws IOException { final String INPUT = "\"quo\\ted\""; final String QUOTED = "\\\"quo\\\\ted\\\""; SerializableString sstr = new SerializedString(INPUT); // sanity checks first: assertEquals(sstr.getValue(), INPUT); assertEquals(QUOTED, new String(sstr.asQuotedChars())); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); assertEquals(QUOTED.length(), sstr.writeQuotedUTF8(bytes)); assertEquals(QUOTED, bytes.toString("UTF-8")); bytes.reset(); assertEquals(INPUT.length(), sstr.writeUnquotedUTF8(bytes)); assertEquals(INPUT, bytes.toString("UTF-8")); byte[] buffer = new byte[100]; assertEquals(QUOTED.length(), sstr.appendQuotedUTF8(buffer, 3)); assertEquals(QUOTED, new String(buffer, 3, QUOTED.length())); Arrays.fill(buffer, (byte) 0); assertEquals(INPUT.length(), sstr.appendUnquotedUTF8(buffer, 5)); assertEquals(INPUT, new String(buffer, 5, INPUT.length())); }
public void testFailedAccess() throws IOException { final String INPUT = "Bit longer text"; SerializableString sstr = new SerializedString(INPUT); final byte[] buffer = new byte[INPUT.length() - 2]; final char[] ch = new char[INPUT.length() - 2]; final ByteBuffer bbuf = ByteBuffer.allocate(INPUT.length() - 2); assertEquals(-1, sstr.appendQuotedUTF8(buffer, 0)); assertEquals(-1, sstr.appendQuoted(ch, 0)); assertEquals(-1, sstr.putQuotedUTF8(bbuf)); bbuf.rewind(); assertEquals(-1, sstr.appendUnquotedUTF8(buffer, 0)); assertEquals(-1, sstr.appendUnquoted(ch, 0)); assertEquals(-1, sstr.putUnquotedUTF8(bbuf)); }
protected final void _writePPFieldName(SerializableString paramSerializableString, boolean paramBoolean) { if (paramBoolean) this._cfgPrettyPrinter.writeObjectEntrySeparator(this); else this._cfgPrettyPrinter.beforeObjectEntries(this); char[] arrayOfChar1 = paramSerializableString.asQuotedChars(); if (isEnabled(JsonGenerator.Feature.QUOTE_FIELD_NAMES)) { if (this._outputTail >= this._outputEnd) _flushBuffer(); char[] arrayOfChar2 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfChar2[i] = '"'; writeRaw(arrayOfChar1, 0, arrayOfChar1.length); if (this._outputTail >= this._outputEnd) _flushBuffer(); char[] arrayOfChar3 = this._outputBuffer; int j = this._outputTail; this._outputTail = (j + 1); arrayOfChar3[j] = '"'; return; } writeRaw(arrayOfChar1, 0, arrayOfChar1.length); }
public final void writeFieldName(SerializableString paramSerializableString) { int i = this._writeContext.writeFieldName(paramSerializableString.getValue()); if (i == 4) _reportError("Can not write a field name, expecting a value"); if (this._cfgPrettyPrinter != null) { boolean bool; if (i == 1) bool = true; else bool = false; _writePPFieldName(paramSerializableString, bool); return; } if (i == 1) { if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte = this._outputBuffer; int j = this._outputTail; this._outputTail = (j + 1); arrayOfByte[j] = 44; } _writeFieldName(paramSerializableString); }
public final void writeString(SerializableString paramSerializableString) { _verifyValueWrite("write text value"); if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte1 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfByte1[i] = 34; int j = paramSerializableString.appendQuotedUTF8(this._outputBuffer, this._outputTail); if (j < 0) _writeBytes(paramSerializableString.asQuotedUTF8()); else this._outputTail = (j + this._outputTail); if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte2 = this._outputBuffer; int k = this._outputTail; this._outputTail = (k + 1); arrayOfByte2[k] = 34; }
/** * By default JSON output does only have escaping where it is strictly * necessary. This is recommended in the most cases. Nevertheless it can * be sometimes useful to have some more escaping. * * @param escapeCharacters an array which defines which characters should be * escaped and how it will be done. See * {@link CharacterEscapes}. In most cases this should * be null. Use like this: * <pre>{@code int[] esc = CharacterEscapes.standardAsciiEscapesForJSON(); * // and force escaping of a few others: * esc['\''] = CharacterEscapes.ESCAPE_STANDARD; * JsonEncoder.useEscapeJavaScript(esc); * }</pre> */ public void setJavaScriptEscapeChars(final int[] escapeCharacters) { final CharacterEscapes ce = new CharacterEscapes() { private static final long serialVersionUID = 1L; @Override public int[] getEscapeCodesForAscii() { if (escapeCharacters == null) { return CharacterEscapes.standardAsciiEscapesForJSON(); } return escapeCharacters; } @Override public SerializableString getEscapeSequence(final int ch) { final String jsEscaped = escapeChar((char) ch); return new SerializedString(jsEscaped); } }; jsonGenerator.setCharacterEscapes(ce); }
@Override public SerializableString getEscapeSequence(int ch) { switch (ch) { case 0x2028: return escapeFor2028; case 0x2029: return escapeFor2029; default: return null; } }
@Override public SerializableString getEscapeSequence(int ch) { if (ch == '<') { return new SerializedString("<"); } if (ch == '>') { return new SerializedString(">"); } return null; }
@Override public SerializableString getEscapeSequence(int aCh) { switch (aCh) { case '\u2028': return new SerializedString("\\u2028"); case '\u2029': return new SerializedString("\\u2029"); default: return null; } }
public void writeString(SerializableString paramSerializableString) { if (paramSerializableString == null) { writeNull(); return; } _append(JsonToken.VALUE_STRING, paramSerializableString); }
public final void writeFieldName(SerializableString paramSerializableString) { int i = this._writeContext.writeFieldName(paramSerializableString.getValue()); if (i == 4) _reportError("Can not write a field name, expecting a value"); boolean bool; if (i == 1) bool = true; else bool = false; _writeFieldName(paramSerializableString, bool); }
public final void writeString(SerializableString paramSerializableString) { _verifyValueWrite("write text value"); if (this._outputTail >= this._outputEnd) _flushBuffer(); char[] arrayOfChar1 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfChar1[i] = '"'; char[] arrayOfChar2 = paramSerializableString.asQuotedChars(); int j = arrayOfChar2.length; if (j < 32) { if (j > this._outputEnd - this._outputTail) _flushBuffer(); System.arraycopy(arrayOfChar2, 0, this._outputBuffer, this._outputTail, j); this._outputTail = (j + this._outputTail); } else { _flushBuffer(); this._writer.write(arrayOfChar2, 0, j); } if (this._outputTail >= this._outputEnd) _flushBuffer(); char[] arrayOfChar3 = this._outputBuffer; int k = this._outputTail; this._outputTail = (k + 1); arrayOfChar3[k] = '"'; }
private int _writeCustomEscape(byte[] paramArrayOfByte, int paramInt1, SerializableString paramSerializableString, int paramInt2) { byte[] arrayOfByte = paramSerializableString.asUnquotedUTF8(); int i = arrayOfByte.length; if (i > 6) return _handleLongCustomEscape(paramArrayOfByte, paramInt1, this._outputEnd, arrayOfByte, paramInt2); System.arraycopy(arrayOfByte, 0, paramArrayOfByte, paramInt1, i); return paramInt1 + i; }
protected final void _writeFieldName(SerializableString paramSerializableString) { if (!isEnabled(JsonGenerator.Feature.QUOTE_FIELD_NAMES)) { int m = paramSerializableString.appendQuotedUTF8(this._outputBuffer, this._outputTail); if (m < 0) { _writeBytes(paramSerializableString.asQuotedUTF8()); return; } this._outputTail = (m + this._outputTail); return; } if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte1 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfByte1[i] = 34; int j = paramSerializableString.appendQuotedUTF8(this._outputBuffer, this._outputTail); if (j < 0) _writeBytes(paramSerializableString.asQuotedUTF8()); else this._outputTail = (j + this._outputTail); if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte2 = this._outputBuffer; int k = this._outputTail; this._outputTail = (k + 1); arrayOfByte2[k] = 34; }
protected final void _writePPFieldName(SerializableString paramSerializableString, boolean paramBoolean) { if (paramBoolean) this._cfgPrettyPrinter.writeObjectEntrySeparator(this); else this._cfgPrettyPrinter.beforeObjectEntries(this); boolean bool = isEnabled(JsonGenerator.Feature.QUOTE_FIELD_NAMES); if (bool) { if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte2 = this._outputBuffer; int j = this._outputTail; this._outputTail = (j + 1); arrayOfByte2[j] = 34; } _writeBytes(paramSerializableString.asQuotedUTF8()); if (bool) { if (this._outputTail >= this._outputEnd) _flushBuffer(); byte[] arrayOfByte1 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfByte1[i] = 34; } }
public DefaultPrettyPrinter(DefaultPrettyPrinter paramDefaultPrettyPrinter, SerializableString paramSerializableString) { this._arrayIndenter = paramDefaultPrettyPrinter._arrayIndenter; this._objectIndenter = paramDefaultPrettyPrinter._objectIndenter; this._spacesInObjectEntries = paramDefaultPrettyPrinter._spacesInObjectEntries; this._nesting = paramDefaultPrettyPrinter._nesting; this._rootSeparator = paramSerializableString; }
public ArrayComposer<ObjectComposer<PARENT>> startArrayField(SerializableString fieldName) throws IOException, JsonProcessingException { _closeChild(); _generator.writeFieldName(fieldName); return _startArray(this, _generator); }
public ObjectComposer<ObjectComposer<PARENT>> startObjectField(SerializableString fieldName) throws IOException, JsonProcessingException { _closeChild(); _generator.writeFieldName(fieldName); return _startObject(this, _generator); }
@Override public SerializableString getEscapeSequence ( int ch ) { // no further escaping (beyond ASCII chars) needed: return null; }
@Override public SerializableString getEscapeSequence(int i) { // no further escaping (beyond ASCII chars) needed return null; }
@Override public void writeFieldName(SerializableString fieldName) throws IOException { currFieldName = fieldName.getValue(); }
@Override public void writeString(SerializableString value) throws IOException { writeString(value.getValue()); }
public void writeFieldName(SerializableString paramSerializableString) { _append(JsonToken.FIELD_NAME, paramSerializableString); this._writeContext.writeFieldName(paramSerializableString.getValue()); }
public void writeRaw(SerializableString paramSerializableString) { _reportUnsupportedOperation(); }
public void writeFieldName(SerializableString paramSerializableString) { writeFieldName(paramSerializableString.getValue()); }
public void writeString(SerializableString paramSerializableString) { writeString(paramSerializableString.getValue()); }
public final boolean nextFieldName(SerializableString paramSerializableString) { this._numTypesValid = 0; if (this._currToken == JsonToken.FIELD_NAME) { _nextAfterName(); return false; } if (this._tokenIncomplete) _skipString(); int i = _skipWSOrEnd(); int j = i; if (i < 0) { close(); this._currToken = null; return false; } this._tokenInputTotal = (this._currInputProcessed + this._inputPtr - 1L); this._tokenInputRow = this._currInputRow; this._tokenInputCol = (-1 + (this._inputPtr - this._currInputRowStart)); this._binaryValue = null; if (j == 93) { if (!this._parsingContext.inArray()) _reportMismatchedEndMarker(j, '}'); this._parsingContext = this._parsingContext.getParent(); this._currToken = JsonToken.END_ARRAY; return false; } if (j == 125) { if (!this._parsingContext.inObject()) _reportMismatchedEndMarker(j, ']'); this._parsingContext = this._parsingContext.getParent(); this._currToken = JsonToken.END_OBJECT; return false; } if (this._parsingContext.expectComma()) { if (j != 44) _reportUnexpectedChar(j, "was expecting comma to separate " + this._parsingContext.getTypeDesc() + " entries"); j = _skipWS(); } if (!this._parsingContext.inObject()) { _nextTokenNotInObject(j); return false; } if (j == 34) { byte[] arrayOfByte = paramSerializableString.asQuotedUTF8(); int k = arrayOfByte.length; if (k + this._inputPtr < this._inputEnd) { int m = k + this._inputPtr; if (this._inputBuffer[m] == 34) { int n = 0; int i1 = this._inputPtr; while (true) { if (n == k) { this._inputPtr = (m + 1); this._parsingContext.setCurrentName(paramSerializableString.getValue()); this._currToken = JsonToken.FIELD_NAME; _isNextTokenNameYes(); return true; } if (arrayOfByte[n] != this._inputBuffer[(i1 + n)]) break; n++; } } } } return _isNextTokenNameMaybe(j, paramSerializableString); }
private void _writeSegmentCustom(int paramInt) { int[] arrayOfInt = this._outputEscapes; int i; if (this._maximumNonEscapedChar <= 0) i = 65535; else i = this._maximumNonEscapedChar; int j = Math.min(arrayOfInt.length, i + 1); CharacterEscapes localCharacterEscapes = this._characterEscapes; int k = 0; int m = 0; int i1; for (int n = 0; k < paramInt; n = _prependOrWriteCharacterEscape(this._outputBuffer, k, paramInt, i1, m)) { do { i1 = this._outputBuffer[k]; if (i1 < j) { int i3 = arrayOfInt[i1]; m = i3; if (i3 != 0) break; } else { if (i1 > i) { m = -1; break; } SerializableString localSerializableString = localCharacterEscapes.getEscapeSequence(i1); this._currentEscape = localSerializableString; if (localSerializableString != null) { m = -2; break; } } k++; } while (k < paramInt); int i2 = k - n; if (i2 > 0) { this._writer.write(this._outputBuffer, n, i2); if (k >= paramInt) break; } k++; } }
private void _writeStringCustom(int paramInt) { int i = paramInt + this._outputTail; int[] arrayOfInt = this._outputEscapes; int j; if (this._maximumNonEscapedChar <= 0) j = 65535; else j = this._maximumNonEscapedChar; int k = Math.min(arrayOfInt.length, j + 1); CharacterEscapes localCharacterEscapes = this._characterEscapes; while (this._outputTail < i) { int m; int i1; int n; do { m = this._outputBuffer[this._outputTail]; if (m < k) { int i3 = arrayOfInt[m]; i1 = i3; if (i3 != 0) break; } else { if (m > j) { i1 = -1; break; } SerializableString localSerializableString = localCharacterEscapes.getEscapeSequence(m); this._currentEscape = localSerializableString; if (localSerializableString != null) { i1 = -2; break; } } n = 1 + this._outputTail; this._outputTail = n; } while (n < i); return; int i2 = this._outputTail - this._outputHead; if (i2 > 0) this._writer.write(this._outputBuffer, this._outputHead, i2); this._outputTail = (1 + this._outputTail); _prependOrWriteCharacterEscape(m, i1); } }
private void _writeStringCustom(char[] paramArrayOfChar, int paramInt1, int paramInt2) { int i = paramInt2 + paramInt1; int[] arrayOfInt = this._outputEscapes; int j; if (this._maximumNonEscapedChar <= 0) j = 65535; else j = this._maximumNonEscapedChar; int k = Math.min(arrayOfInt.length, j + 1); CharacterEscapes localCharacterEscapes = this._characterEscapes; int m = 0; while (paramInt1 < i) { int n = paramInt1; int i1; do { i1 = paramArrayOfChar[paramInt1]; if (i1 < k) { int i3 = arrayOfInt[i1]; m = i3; if (i3 != 0) break; } else { if (i1 > j) { m = -1; break; } SerializableString localSerializableString = localCharacterEscapes.getEscapeSequence(i1); this._currentEscape = localSerializableString; if (localSerializableString != null) { m = -2; break; } } paramInt1++; } while (paramInt1 < i); int i2 = paramInt1 - n; if (i2 < 32) { if (i2 + this._outputTail > this._outputEnd) _flushBuffer(); if (i2 > 0) { System.arraycopy(paramArrayOfChar, n, this._outputBuffer, this._outputTail, i2); this._outputTail = (i2 + this._outputTail); } } else { _flushBuffer(); this._writer.write(paramArrayOfChar, n, i2); } if (paramInt1 >= i) break; paramInt1++; _appendCharacterEscape(i1, m); } }
public final void _writeFieldName(SerializableString paramSerializableString, boolean paramBoolean) { if (this._cfgPrettyPrinter != null) { _writePPFieldName(paramSerializableString, paramBoolean); return; } if (1 + this._outputTail >= this._outputEnd) _flushBuffer(); if (paramBoolean) { char[] arrayOfChar5 = this._outputBuffer; int n = this._outputTail; this._outputTail = (n + 1); arrayOfChar5[n] = ','; } char[] arrayOfChar1 = paramSerializableString.asQuotedChars(); if (!isEnabled(JsonGenerator.Feature.QUOTE_FIELD_NAMES)) { writeRaw(arrayOfChar1, 0, arrayOfChar1.length); return; } char[] arrayOfChar2 = this._outputBuffer; int i = this._outputTail; this._outputTail = (i + 1); arrayOfChar2[i] = '"'; int j = arrayOfChar1.length; if (1 + (j + this._outputTail) >= this._outputEnd) { writeRaw(arrayOfChar1, 0, j); if (this._outputTail >= this._outputEnd) _flushBuffer(); char[] arrayOfChar4 = this._outputBuffer; int m = this._outputTail; this._outputTail = (m + 1); arrayOfChar4[m] = '"'; return; } System.arraycopy(arrayOfChar1, 0, this._outputBuffer, this._outputTail, j); this._outputTail = (j + this._outputTail); char[] arrayOfChar3 = this._outputBuffer; int k = this._outputTail; this._outputTail = (k + 1); arrayOfChar3[k] = '"'; }
public final void writeRaw(SerializableString paramSerializableString) { writeRaw(paramSerializableString.getValue()); }
public JsonGenerator setRootValueSeparator(SerializableString paramSerializableString) { this._rootValueSeparator = paramSerializableString; return this; }
private void _writeCustomStringSegment2(char[] paramArrayOfChar, int paramInt1, int paramInt2) { if (this._outputTail + 6 * (paramInt2 - paramInt1) > this._outputEnd) _flushBuffer(); int i = this._outputTail; byte[] arrayOfByte = this._outputBuffer; int[] arrayOfInt = this._outputEscapes; int j; if (this._maximumNonEscapedChar <= 0) j = 65535; else j = this._maximumNonEscapedChar; CharacterEscapes localCharacterEscapes = this._characterEscapes; while (paramInt1 < paramInt2) { int k = paramInt1; paramInt1++; int m = paramArrayOfChar[k]; if (m <= 127) { if (arrayOfInt[m] == 0) { int i5 = i; i++; arrayOfByte[i5] = ((byte)m); } else { int i2 = arrayOfInt[m]; if (i2 > 0) { int i3 = i; int i4 = i + 1; arrayOfByte[i3] = 92; i = i4 + 1; arrayOfByte[i4] = ((byte)i2); } else if (i2 == -2) { SerializableString localSerializableString2 = localCharacterEscapes.getEscapeSequence(m); if (localSerializableString2 == null) _reportError("Invalid custom escape definitions; custom escape not found for character code 0x" + Integer.toHexString(m) + ", although was supposed to have one"); i = _writeCustomEscape(arrayOfByte, i, localSerializableString2, paramInt2 - paramInt1); } else { i = _writeGenericEscape(m, i); } } } else if (m > j) { i = _writeGenericEscape(m, i); } else { SerializableString localSerializableString1 = localCharacterEscapes.getEscapeSequence(m); if (localSerializableString1 != null) { i = _writeCustomEscape(arrayOfByte, i, localSerializableString1, paramInt2 - paramInt1); } else if (m <= 2047) { int n = i; int i1 = i + 1; arrayOfByte[n] = ((byte)(0xC0 | m >> 6)); i = i1 + 1; arrayOfByte[i1] = ((byte)(0x80 | m & 0x3F)); } else { i = _outputMultiByteChar(m, i); } } } this._outputTail = i; }
public void writeRaw(SerializableString paramSerializableString) { byte[] arrayOfByte = paramSerializableString.asUnquotedUTF8(); if (arrayOfByte.length > 0) _writeBytes(arrayOfByte); }
public JsonGenerator setRootValueSeparator(SerializableString paramSerializableString) { this.delegate.setRootValueSeparator(paramSerializableString); return this; }
public void writeFieldName(SerializableString paramSerializableString) { this.delegate.writeFieldName(paramSerializableString); }
public void writeRaw(SerializableString paramSerializableString) { this.delegate.writeRaw(paramSerializableString); }
public void writeString(SerializableString paramSerializableString) { this.delegate.writeString(paramSerializableString); }