Class Base64Data

java.lang.Object
org.jvnet.staxex.Base64Data
All Implemented Interfaces:
CharSequence, Cloneable

public class Base64Data extends Object implements CharSequence, Cloneable
Binary data represented as base64-encoded string in XML.

Used in conjunction with XMLStreamReaderEx and XMLStreamWriterEx.

  • Field Details

    • dataHandler

      private jakarta.activation.DataHandler dataHandler
    • data

      private byte[] data
    • hrefCid

      private String hrefCid
    • dataLen

      private int dataLen
      Length of the valid data in data.
    • dataCloneByRef

      private boolean dataCloneByRef
      True if data can be cloned by reference if Base64Data instance is cloned.
    • mimeType

      private String mimeType
      Optional MIME type of data. Unused when dataHandler is set. Use DataHandler.getContentType() in that case.
    • logger

      private static final Logger logger
    • CHUNK_SIZE

      private static final int CHUNK_SIZE
  • Constructor Details

    • Base64Data

      public Base64Data()
      Default constructor
    • Base64Data

      public Base64Data(Base64Data that)
      Clone constructor
      Parameters:
      that - needs to be cloned
  • Method Details

    • set

      public void set(byte[] data, int len, String mimeType, boolean cloneByRef)
      Fills in the data object by a portion of the byte[].
      Parameters:
      data - actual data
      len - data[0] to data[len-1] are treated as the data.
      mimeType - MIME type
      cloneByRef - true if data[] can be cloned by reference
    • set

      public void set(byte[] data, int len, String mimeType)
      Fills in the data object by a portion of the byte[].
      Parameters:
      data - actual data bytes
      len - data[0] to data[len-1] are treated as the data.
      mimeType - MIME type
    • set

      public void set(byte[] data, String mimeType)
      Fills in the data object by the byte[] of the exact length.
      Parameters:
      data - this buffer may be owned directly by the unmarshaleld JAXB object.
      mimeType - MIME type
    • set

      public void set(jakarta.activation.DataHandler data)
      Fills in the data object by a DataHandler.
      Parameters:
      data - DataHandler for the data
    • getDataHandler

      public jakarta.activation.DataHandler getDataHandler()
      Gets the raw data. If the returned DataHandler is StreamingDataHandler, callees may need to downcast to take advantage of its capabilities.
      Returns:
      DataHandler for the data
      See Also:
    • getExact

      public byte[] getExact()
      Gets the byte[] of the exact length.
      Returns:
      byte[] for data
    • getInputStream

      public InputStream getInputStream() throws IOException
      Gets the data as an InputStream.
      Returns:
      data as InputStream
      Throws:
      IOException - if i/o error occurs
    • hasData

      public boolean hasData()
      Returns false if this object only has DataHandler and therefore get() operation is likely going to be expensive.
      Returns:
      false if it has only DataHandler
    • get

      public byte[] get()
      Gets the raw data. The size of the byte array maybe larger than the actual length.
      Returns:
      data as byte[], the array may be larger
    • getDataLen

      public int getDataLen()
      Gets the length of the binary data counted in bytes. Note that if this object encapsulates DataHandler, this method would have to read the whole thing into byte[] just to count the length, because DataHandler doesn't easily expose the length.
      Returns:
      no of bytes
    • getMimeType

      public String getMimeType()
    • length

      public int length()
      Gets the number of characters needed to represent this binary data in the base64 encoding.
      Specified by:
      length in interface CharSequence
    • charAt

      public char charAt(int index)
      Encode this binary data in the base64 encoding and returns the character at the specified position.
      Specified by:
      charAt in interface CharSequence
    • subSequence

      public CharSequence subSequence(int start, int end)
      Internally this is only used to split a text to a list, which doesn't happen that much for base64. So this method should be smaller than faster.
      Specified by:
      subSequence in interface CharSequence
    • toString

      public String toString()
      Returns the base64 encoded string of this data.
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class Object
    • writeTo

      public void writeTo(char[] buf, int start)
    • writeTo

      public void writeTo(XMLStreamWriter output) throws IOException, XMLStreamException
      Throws:
      IOException
      XMLStreamException
    • clone

      public Base64Data clone()
      Overrides:
      clone in class Object
    • getProperty

      static String getProperty(String propName)
    • getHrefCid

      public String getHrefCid()
    • setHrefCid

      public void setHrefCid(String cid)