Class BinaryProductHandler

  • All Implemented Interfaces:
    ProductHandler

    public class BinaryProductHandler
    extends java.lang.Object
    implements ProductHandler
    Generator of binary format for product data. Binary representation of data types:
    Integer
    4-bytes
    Long
    8-bytes
    Date
    Long (Date.getTime())
    byte[]
    Integer length, raw bytes
    String
    byte[] (String.getBytes(StandardCharsets.UTF_8))
    URL/URI
    String (URL.toString())
    Product is stored in this order:
    1. Header, exactly 1
      1. "BEGINPRODUCT" (string)
      2. ProductId (String)
      3. Status (String)
      4. TrackerURL (URL)
    2. Properties, 0 to many:
      1. "PROPERTY" (String)
      2. name (String)
      3. value (String)
    3. Links, 0 to many:
      1. "LINK" (String)
      2. relation (String)
      3. href (URI)
    4. Contents, 0 to many:
      1. "CONTENT" (String)
      2. path (String)
      3. contentType (String)
      4. lastModified (Date)
      5. length (Long)
      6. raw bytes
    5. Signature Version, 0 or 1. Note, only sent when version != SIGNATURE_V1 for backward compatibility
      1. "SIGNATUREVERSION" (String)
      2. version (String)
    6. Signature, 0 or 1:
      1. "SIGNATURE" (String)
      2. signature (String)
    7. Footer, exactly 1:
      1. "ENDPRODUCT" (String)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String CONTENT
      CONTENT
      static java.lang.String FOOTER
      ENDPRODUCT
      static java.lang.String HEADER
      HEADER - BEGINPRODUCT
      static java.lang.String LINK
      LINK
      static java.lang.String PROPERTY
      PROPERTY
      static java.lang.String SIGNATURE
      SIGNATURE
      static java.lang.String SIGNATUREVERSION
      SIGNATURE VERSION
    • Constructor Summary

      Constructors 
      Constructor Description
      BinaryProductHandler​(java.io.OutputStream out)
      Constructor.
    • Constructor Detail

      • BinaryProductHandler

        public BinaryProductHandler​(java.io.OutputStream out)
        Constructor. Sets up a new BinaryIO
        Parameters:
        out - an OutputStream
    • Method Detail

      • onBeginProduct

        public void onBeginProduct​(ProductId id,
                                   java.lang.String status,
                                   java.net.URL trackerURL)
                            throws java.lang.Exception
        Description copied from interface: ProductHandler
        A new product is being output. The ProductHandler should expect calls to other on-Methods until the onEndProduct method is called. No calls to other on-Methods will occur before onBeginProduct.
        Specified by:
        onBeginProduct in interface ProductHandler
        Parameters:
        id - which product.
        status - the product's status.
        trackerURL - a location to send status updates.
        Throws:
        java.lang.Exception - if error occurs
      • onProperty

        public void onProperty​(ProductId id,
                               java.lang.String name,
                               java.lang.String value)
                        throws java.lang.Exception
        Description copied from interface: ProductHandler
        A product property value. Products have zero or more properties.
        Specified by:
        onProperty in interface ProductHandler
        Parameters:
        id - which product.
        name - the property name.
        value - the property value.
        Throws:
        java.lang.Exception - if error occurs
      • onLink

        public void onLink​(ProductId id,
                           java.lang.String relation,
                           java.net.URI href)
                    throws java.lang.Exception
        Description copied from interface: ProductHandler
        A product link. Products have zero or more links.
        Specified by:
        onLink in interface ProductHandler
        Parameters:
        id - which product.
        relation - how the URI is related to this product.
        href - the URI that is related to this product.
        Throws:
        java.lang.Exception - if error occurs
      • onContent

        public void onContent​(ProductId id,
                              java.lang.String path,
                              Content content)
                       throws java.lang.Exception
        Description copied from interface: ProductHandler
        Product content. Products have one or more Contents.
        Specified by:
        onContent in interface ProductHandler
        Parameters:
        id - which product.
        path - path to content within product.
        content - the product content.
        Throws:
        java.lang.Exception - if error occurs
      • onSignatureVersion

        public void onSignatureVersion​(ProductId id,
                                       CryptoUtils.Version version)
                                throws java.lang.Exception
        Description copied from interface: ProductHandler
        Product signature version.
        Specified by:
        onSignatureVersion in interface ProductHandler
        Parameters:
        id - which product.
        version - product version
        Throws:
        java.lang.Exception - if error occurs
      • onSignature

        public void onSignature​(ProductId id,
                                java.lang.String signature)
                         throws java.lang.Exception
        Description copied from interface: ProductHandler
        Product signature. Producers may optionally sign products to confirm they were the producer.
        Specified by:
        onSignature in interface ProductHandler
        Parameters:
        id - which product.
        signature - the product signature, which can be verified using the ProductSigner class.
        Throws:
        java.lang.Exception - if error occurs
      • onEndProduct

        public void onEndProduct​(ProductId id)
                          throws java.lang.Exception
        Description copied from interface: ProductHandler
        A product is finished being output. The ProductHandler should expect no more calls to other on-Methods, except perhaps onBeginProduct again, after the onEndProduct method is called.
        Specified by:
        onEndProduct in interface ProductHandler
        Parameters:
        id - which product.
        Throws:
        java.lang.Exception - if error occurs
      • close

        public void close()
        Free any resources associated with this source.
        Specified by:
        close in interface ProductHandler