Java Code Examples for com.fasterxml.jackson.core.io.CharacterEscapes#getEscapeSequence()

The following examples show how to use com.fasterxml.jackson.core.io.CharacterEscapes#getEscapeSequence() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CharEscapeUtil.java    From bboss-elasticsearch with Apache License 2.0 4 votes vote down vote up
private void _writeSegmentCustom(int end)
		throws IOException, JsonGenerationException
{
	final int[] escCodes = _outputEscapes;
	final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
	final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
	final CharacterEscapes customEscapes = _characterEscapes;

	int ptr = 0;
	int escCode = 0;
	int start = ptr;

	output_loop:
	while (ptr < end) {
		// Fast loop for chars not needing escaping
		char c;
		while (true) {
			c = _outputBuffer[ptr];
			if (c < escLimit) {
				escCode = escCodes[c];
				if (escCode != 0) {
					break;
				}
			} else if (c > maxNonEscaped) {
				escCode = CharacterEscapes.ESCAPE_STANDARD;
				break;
			} else {
				if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
					escCode = CharacterEscapes.ESCAPE_CUSTOM;
					break;
				}
			}
			if (++ptr >= end) {
				break;
			}
		}
		int flushLen = (ptr - start);
		if (flushLen > 0) {
			_writer.write(_outputBuffer, start, flushLen);
			if (ptr >= end) {
				break output_loop;
			}
		}
		++ptr;
		start = _prependOrWriteCharacterEscape(_outputBuffer, ptr, end, c, escCode);
	}
}
 
Example 2
Source File: CharEscapeUtil.java    From bboss-elasticsearch with Apache License 2.0 4 votes vote down vote up
private void _writeStringCustom(final int len)
		throws IOException, JsonGenerationException
{
	// And then we'll need to verify need for escaping etc:
	int end = _outputTail + len;
	final int[] escCodes = _outputEscapes;
	final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
	final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
	int escCode = 0;
	final CharacterEscapes customEscapes = _characterEscapes;

	output_loop:
	while (_outputTail < end) {
		char c;
		// Fast loop for chars not needing escaping
		escape_loop:
		while (true) {
			c = _outputBuffer[_outputTail];
			if (c < escLimit) {
				escCode = escCodes[c];
				if (escCode != 0) {
					break escape_loop;
				}
			} else if (c > maxNonEscaped) {
				escCode = CharacterEscapes.ESCAPE_STANDARD;
				break escape_loop;
			} else {
				if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
					escCode = CharacterEscapes.ESCAPE_CUSTOM;
					break escape_loop;
				}
			}
			if (++_outputTail >= end) {
				break output_loop;
			}
		}
		int flushLen = (_outputTail - _outputHead);
		if (flushLen > 0) {
			_writer.write(_outputBuffer, _outputHead, flushLen);
		}
		++_outputTail;
		_prependOrWriteCharacterEscape(c, escCode);
	}
}
 
Example 3
Source File: CharEscapeUtil.java    From bboss-elasticsearch with Apache License 2.0 4 votes vote down vote up
private void _writeStringCustom(char[] text, int offset, int len)
		throws IOException, JsonGenerationException
{
	len += offset; // -> len marks the end from now on
	final int[] escCodes = _outputEscapes;
	final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
	final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
	final CharacterEscapes customEscapes = _characterEscapes;

	int escCode = 0;

	while (offset < len) {
		int start = offset;
		char c;

		while (true) {
			c = text[offset];
			if (c < escLimit) {
				escCode = escCodes[c];
				if (escCode != 0) {
					break;
				}
			} else if (c > maxNonEscaped) {
				escCode = CharacterEscapes.ESCAPE_STANDARD;
				break;
			} else {
				if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
					escCode = CharacterEscapes.ESCAPE_CUSTOM;
					break;
				}
			}
			if (++offset >= len) {
				break;
			}
		}

		// Short span? Better just copy it to buffer first:
		int newAmount = offset - start;
		if (newAmount < SHORT_WRITE) {
			// Note: let's reserve room for escaped char (up to 6 chars)
			if ((_outputTail + newAmount) > _outputEnd) {
				_flushBuffer();
			}
			if (newAmount > 0) {
				System.arraycopy(text, start, _outputBuffer, _outputTail, newAmount);
				_outputTail += newAmount;
			}
		} else { // Nope: better just write through
			_flushBuffer();
			_writer.write(text, start, newAmount);
		}
		// Was this the end?
		if (offset >= len) { // yup
			break;
		}
		// Nope, need to escape the char.
		++offset;
		_appendCharacterEscape(c, escCode);
	}
}
 
Example 4
Source File: WriterBasedJsonGenerator.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
private void _writeStringCustom(final int len)
    throws IOException, JsonGenerationException
{
    // And then we'll need to verify need for escaping etc:
    int end = _outputTail + len;
    final int[] escCodes = _outputEscapes;
    final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
    final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
    int escCode = 0;
    final CharacterEscapes customEscapes = _characterEscapes;

    output_loop:
    while (_outputTail < end) {
        char c;
        // Fast loop for chars not needing escaping
        escape_loop:
        while (true) {
            c = _outputBuffer[_outputTail];
            if (c < escLimit) {
                escCode = escCodes[c];
                if (escCode != 0) {
                    break escape_loop;
                }
            } else if (c > maxNonEscaped) {
                escCode = CharacterEscapes.ESCAPE_STANDARD;
                break escape_loop;
            } else {
                if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
                    escCode = CharacterEscapes.ESCAPE_CUSTOM;
                    break escape_loop;
                }
            }
            if (++_outputTail >= end) {
                break output_loop;
            }
        }
        int flushLen = (_outputTail - _outputHead);
        if (flushLen > 0) {
            _writer.write(_outputBuffer, _outputHead, flushLen);
        }
        ++_outputTail;
        _prependOrWriteCharacterEscape(c, escCode);
    }
}
 
Example 5
Source File: WriterBasedJsonGenerator.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
private void _writeSegmentCustom(int end)
    throws IOException, JsonGenerationException
{
    final int[] escCodes = _outputEscapes;
    final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
    final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
    final CharacterEscapes customEscapes = _characterEscapes;

    int ptr = 0;
    int escCode = 0;
    int start = ptr;

    output_loop:
    while (ptr < end) {
        // Fast loop for chars not needing escaping
        char c;
        while (true) {
            c = _outputBuffer[ptr];
            if (c < escLimit) {
                escCode = escCodes[c];
                if (escCode != 0) {
                    break;
                }
            } else if (c > maxNonEscaped) {
                escCode = CharacterEscapes.ESCAPE_STANDARD;
                break;
            } else {
                if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
                    escCode = CharacterEscapes.ESCAPE_CUSTOM;
                    break;
                }
            }
            if (++ptr >= end) {
                break;
            }
        }
        int flushLen = (ptr - start);
        if (flushLen > 0) {
            _writer.write(_outputBuffer, start, flushLen);
            if (ptr >= end) {
                break output_loop;
            }
        }
        ++ptr;
        start = _prependOrWriteCharacterEscape(_outputBuffer, ptr, end, c, escCode);
    }
}
 
Example 6
Source File: WriterBasedJsonGenerator.java    From lams with GNU General Public License v2.0 4 votes vote down vote up
private void _writeStringCustom(char[] text, int offset, int len)
    throws IOException, JsonGenerationException
{
    len += offset; // -> len marks the end from now on
    final int[] escCodes = _outputEscapes;
    final int maxNonEscaped = (_maximumNonEscapedChar < 1) ? 0xFFFF : _maximumNonEscapedChar;
    final int escLimit = Math.min(escCodes.length, maxNonEscaped+1);
    final CharacterEscapes customEscapes = _characterEscapes;

    int escCode = 0;
    
    while (offset < len) {
        int start = offset;
        char c;
        
        while (true) {
            c = text[offset];
            if (c < escLimit) {
                escCode = escCodes[c];
                if (escCode != 0) {
                    break;
                }
            } else if (c > maxNonEscaped) {
                escCode = CharacterEscapes.ESCAPE_STANDARD;
                break;
            } else {
                if ((_currentEscape = customEscapes.getEscapeSequence(c)) != null) {
                    escCode = CharacterEscapes.ESCAPE_CUSTOM;
                    break;
                }
            }
            if (++offset >= len) {
                break;
            }
        }

        // Short span? Better just copy it to buffer first:
        int newAmount = offset - start;
        if (newAmount < SHORT_WRITE) {
            // Note: let's reserve room for escaped char (up to 6 chars)
            if ((_outputTail + newAmount) > _outputEnd) {
                _flushBuffer();
            }
            if (newAmount > 0) {
                System.arraycopy(text, start, _outputBuffer, _outputTail, newAmount);
                _outputTail += newAmount;
            }
        } else { // Nope: better just write through
            _flushBuffer();
            _writer.write(text, start, newAmount);
        }
        // Was this the end?
        if (offset >= len) { // yup
            break;
        }
        // Nope, need to escape the char.
        ++offset;
        _appendCharacterEscape(c, escCode);
    }
}