Package com.sapportals.wcm.protocol.ice.protocol

ICE protocol helper.

See:
          Description

Interface Summary
IAbortCondition An abort condition for the ICE item iterators to interrupt the creation of an ICE package.
IChunkedOutput IChunkedOutput is a common interface of all output generators that are able to write their data in chunks.
IICEElement This is the base "class" of all ICE elements.
IICEItemIterator IICEItemIterator is a generic iterator over ICEItem elements.
 

Class Summary
ICEAccess ICEAccess represents an ice-access element inside an ice-item-ref.
ICEAccessControl ICEAccessControl represents an ice-access-control element inside an ice-access.
ICEAccessWindow ICEAccessWindow represents an ice-access-window element inside an ice-access.
ICECode ICECode is a representation of an ice-code response element.
ICEContact ICEContact represents an ice-contact element.
ICEContext Stores context information about an ICE payload being parsed by an instance of ICEInput.
ICEDeliveryPolicy ICEDeliveryPolicy represents an ice-delivery-policy element.
ICEDeliveryRule ICEDeliveryRule represents an ice-delivery-rule element.
ICEInput Decodes an ICE payload from an input stream using a SAX parser.
ICEItem ICEItem represents an ice-item element inside an ice-package.
ICEItemBase ICEItemBase is the base class of all item elements inside an ICE package.
ICEItemCollection ICEItemCollection is the base class of all collections of ICE item elements (in the current standard there are only ICEItemGroup and ICEPackage).
ICEItemGroup ICEItemGroup is a representation of an ice-item-group element inside an ice-package.
ICEItemRef ICEItemRef represents an ice-item-ref element inside an ice-package.
ICEItemRemove ICEItemRemove represents an ice-item-remove element inside an ice-package.
ICEOffer ICEOffer represents an ice-offer element.
ICEOutput ICEOutput is an utility class to assemble an ICE payload to an OutputStream.
ICEPackage ICEPackage is a representation of an ice-package element.
ICEPackageState ICEPackageState is a representation of an ice-package-state element.
ICEReceiver ICEReceiver represents an ice-receiver element.
ICESender ICESender represents an ice-sender element.
ICEText ICEText represents an ice-text element.
ICEXMLSerializer The ICEXMLSerializer is a simple extension to the standard Xerces XMLSerializer to speed up the Base64 output of the ICE items in an ICE package.
InputOutputPipe InputOutputPipe is a helper class to convert an OutputStream to an InputStream.
PreparsedXML A very simple XML preparser that extracts the content information from an XML stream.
 

Package com.sapportals.wcm.protocol.ice.protocol Description

ICE protocol helper.

Package Specification

Purpose

This package is a collection of helper classes that make the assembly and dissembly of and ICE package (resp. an ICE payload) easiery. The ICE server implementation as well as any ICE client should use the functionality of this package.

Usage (Example)

The following code example should be used to process an ICE payload:

  ICEOutput output = new ICEOutput(<OutputStream that received the ICE responses>);
  
  output.setSender(<An ICESender containing the sender informations>);
  
  ICEInput input = new ICEInput(<InputStream of the ICE payload>, output);
  
  input.setSynRequestHandler(<An implementation of IICESynRequestHandler>); // optional
  input.setSubRequestHandler(<An implementation of IICESubRequestHandler>); // optional
  input.setComRequestHandler(<An implementation of IICEComRequestHandler>); // optional
  input.setResponseHandler(<An implementation of IICEResponseHandler>); // optional
  
  input.handle(); // start the processing

Implementation notes (Disassembly)

Since ICE payloads could be quite big chunks of XML-data the processing is completly handler-/event-based. Inside the ICEInput an incomming payload is parsed with a SAX parser, the SAX events are then maped onto the difference ICE events that are defined in the handler package.

To speed up the processing of (probably very large) chunks of base-64 data in an incoming ICE payload is prepared by an XML preparser before transfered to the real SAX parser. So the usual processing chain looks like this:

                              ICE payload
                                   |
                                   |  Raw data stream
                                   V
                             XML preparser
                                   |
                                   | Preparsed XML stream with processing instructions
                                   V
                             SAX parser (created with the javax.xml.parsers.SAXParserFactory)
                                   |
                                   | SAX events
                                   V
                               ICEInput
                                   |
                                   | ICE events
      +---------------------+------+-----------------+------------------------+
      |                     |                        |                        |
      V                     V                        V                        V
   IICESynRequestHandler  IICESubRequestHandler   IICEComRequestHandler    IICEResponseHandler

The XML preparser enables an implementation of the different handler interface to bypass this processing chain and obtain an InputStream on the raw data of the payload (this is especially useful when handling ICE items with large chunks of base64 data).

References

ICE 1.1 Specification



Copyright 2011 SAP AG Complete Copyright Notice