java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.io.SerializedString
All Implemented Interfaces:
SerializableString, Serializable

public class SerializedString extends Object implements SerializableString, Serializable
String token that can lazily serialize String contained and then reuse that serialization later on. This is similar to JDBC prepared statements, for example, in that instances should only be created when they are used more than use; prime candidates are various serializers.

Class is final for performance reasons and since this is not designed to be extensible or customizable (customizations would occur in calling code)

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String
    Ugly hack, to work through the requirement that _value is indeed final, and that JDK serialization won't call ctor(s).
    protected char[]
     
    protected byte[]
     
    protected byte[]
     
    protected final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    appendQuoted(char[] buffer, int offset)
    Method that will append quoted characters of this String into given buffer.
    int
    appendQuotedUTF8(byte[] buffer, int offset)
    Method that will append quoted UTF-8 bytes of this String into given buffer, if there is enough room; if not, returns -1.
    int
    appendUnquoted(char[] buffer, int offset)
    Method that will append unquoted characters of this String into given buffer.
    int
    appendUnquotedUTF8(byte[] buffer, int offset)
    Method that will append unquoted ('raw') UTF-8 bytes of this String into given buffer.
    final char[]
    Accessor for accessing value that has been quoted (escaped) using JSON quoting rules (using backslash-prefixed codes) into a char array.
    final byte[]
    Accessor for accessing value that has been quoted (escaped) using JSON quoting rules (using backslash-prefixed codes), and encoded using UTF-8 encoding into a byte array.
    final byte[]
    Accessor for accessing value as is (without JSON quoting (ecaping)) encoded as UTF-8 byte array.
    final int
    Returns length of the String as characters
    final boolean
     
    final String
    Returns unquoted String that this object represents (and offers serialized forms for)
    final int
     
    int
    Method for appending JSON-escaped UTF-8 encoded String value into given ByteBuffer, if it fits.
    int
    Method for appending unquoted ('raw') UTF-8 encoded String value into given ByteBuffer, if it fits.
    protected Object
     
    final String
     
    int
    Method for writing JSON-escaped UTF-8 encoded String value using given OutputStream.
    int
    Method for writing unescaped UTF-8 encoded String value using given OutputStream.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • _value

      protected final String _value
    • _quotedUTF8Ref

      protected byte[] _quotedUTF8Ref
    • _unquotedUTF8Ref

      protected byte[] _unquotedUTF8Ref
    • _quotedChars

      protected char[] _quotedChars
    • _jdkSerializeValue

      protected transient String _jdkSerializeValue
      Ugly hack, to work through the requirement that _value is indeed final, and that JDK serialization won't call ctor(s).
      Since:
      2.1
  • Constructor Details

    • SerializedString

      public SerializedString(String v)
  • Method Details

    • readResolve

      protected Object readResolve()
    • getValue

      public final String getValue()
      Description copied from interface: SerializableString
      Returns unquoted String that this object represents (and offers serialized forms for)
      Specified by:
      getValue in interface SerializableString
      Returns:
      Unquoted String
    • charLength

      public final int charLength()
      Returns length of the String as characters
      Specified by:
      charLength in interface SerializableString
      Returns:
      Length of the String in characters
    • asQuotedChars

      public final char[] asQuotedChars()
      Accessor for accessing value that has been quoted (escaped) using JSON quoting rules (using backslash-prefixed codes) into a char array.
      Specified by:
      asQuotedChars in interface SerializableString
      Returns:
      JSON quoted form of the String as char[]
    • asQuotedUTF8

      public final byte[] asQuotedUTF8()
      Accessor for accessing value that has been quoted (escaped) using JSON quoting rules (using backslash-prefixed codes), and encoded using UTF-8 encoding into a byte array.
      Specified by:
      asQuotedUTF8 in interface SerializableString
      Returns:
      UTF-8 encoded version of JSON-escaped String
    • asUnquotedUTF8

      public final byte[] asUnquotedUTF8()
      Accessor for accessing value as is (without JSON quoting (ecaping)) encoded as UTF-8 byte array.
      Specified by:
      asUnquotedUTF8 in interface SerializableString
      Returns:
      UTF-8 encoded version of String, without any escaping
    • appendQuoted

      public int appendQuoted(char[] buffer, int offset)
      Description copied from interface: SerializableString
      Method that will append quoted characters of this String into given buffer. Functionally equivalent to:
        char[] ch = str.asQuotedChars();
        System.arraycopy(ch, 0, buffer, offset, ch.length);
        return ch.length;
      
      Specified by:
      appendQuoted in interface SerializableString
      Parameters:
      buffer - Buffer to append JSON-escaped String into
      offset - Offset in buffer to append String at
      Returns:
      Number of characters appended, if successful, otherwise -1
    • appendQuotedUTF8

      public int appendQuotedUTF8(byte[] buffer, int offset)
      Description copied from interface: SerializableString
      Method that will append quoted UTF-8 bytes of this String into given buffer, if there is enough room; if not, returns -1. Functionally equivalent to:
        byte[] bytes = str.asQuotedUTF8();
        System.arraycopy(bytes, 0, buffer, offset, bytes.length);
        return bytes.length;
      
      Specified by:
      appendQuotedUTF8 in interface SerializableString
      Parameters:
      buffer - Buffer to append JSON-escaped String into
      offset - Offset in buffer to append String at
      Returns:
      Number of bytes appended, if successful, otherwise -1
    • appendUnquoted

      public int appendUnquoted(char[] buffer, int offset)
      Description copied from interface: SerializableString
      Method that will append unquoted characters of this String into given buffer. Functionally equivalent to:
        char[] ch = str.getValue().toCharArray();
        System.arraycopy(bytes, 0, buffer, offset, ch.length);
        return ch.length;
      
      Specified by:
      appendUnquoted in interface SerializableString
      Parameters:
      buffer - Buffer to append literal (unescaped) String into
      offset - Offset in buffer to append String at
      Returns:
      Number of characters appended, if successful, otherwise -1
    • appendUnquotedUTF8

      public int appendUnquotedUTF8(byte[] buffer, int offset)
      Description copied from interface: SerializableString
      Method that will append unquoted ('raw') UTF-8 bytes of this String into given buffer. Functionally equivalent to:
        byte[] bytes = str.asUnquotedUTF8();
        System.arraycopy(bytes, 0, buffer, offset, bytes.length);
        return bytes.length;
      
      Specified by:
      appendUnquotedUTF8 in interface SerializableString
      Parameters:
      buffer - Buffer to append literal (unescaped) String into
      offset - Offset in buffer to append String at
      Returns:
      Number of bytes appended, if successful, otherwise -1
    • writeQuotedUTF8

      public int writeQuotedUTF8(OutputStream out) throws IOException
      Description copied from interface: SerializableString
      Method for writing JSON-escaped UTF-8 encoded String value using given OutputStream.
      Specified by:
      writeQuotedUTF8 in interface SerializableString
      Parameters:
      out - OutputStream to write String into
      Returns:
      Number of bytes written
      Throws:
      IOException - if underlying stream write fails
    • writeUnquotedUTF8

      public int writeUnquotedUTF8(OutputStream out) throws IOException
      Description copied from interface: SerializableString
      Method for writing unescaped UTF-8 encoded String value using given OutputStream.
      Specified by:
      writeUnquotedUTF8 in interface SerializableString
      Parameters:
      out - OutputStream to write String into
      Returns:
      Number of bytes written
      Throws:
      IOException - if underlying stream write fails
    • putQuotedUTF8

      public int putQuotedUTF8(ByteBuffer buffer)
      Description copied from interface: SerializableString
      Method for appending JSON-escaped UTF-8 encoded String value into given ByteBuffer, if it fits.
      Specified by:
      putQuotedUTF8 in interface SerializableString
      Parameters:
      buffer - ByteBuffer to append String into
      Returns:
      Number of bytes put, if contents fit, otherwise -1
    • putUnquotedUTF8

      public int putUnquotedUTF8(ByteBuffer buffer)
      Description copied from interface: SerializableString
      Method for appending unquoted ('raw') UTF-8 encoded String value into given ByteBuffer, if it fits.
      Specified by:
      putUnquotedUTF8 in interface SerializableString
      Parameters:
      buffer - ByteBuffer to append String into
      Returns:
      Number of bytes put, if contents fit, otherwise -1
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public final boolean equals(Object o)
      Overrides:
      equals in class Object