atg.rest.input
Class XMLInputCustomizer

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.rest.input.RestInputCustomizerImpl
              extended by atg.rest.input.XMLInputCustomizer
All Implemented Interfaces:
atg.naming.AbsoluteNameable, NameContextBindingListener, NameContextElement, atg.naming.NameContextParentable, NameResolver, AdminableService, atg.nucleus.Configured, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, RestInputCustomizer, java.util.EventListener

public class XMLInputCustomizer
extends RestInputCustomizerImpl

This class implements an XML REST input customizer. A REST input customizer is used to parse data which is sent in a REST request.

See Also:
RestInputCustomizer

Field Summary
static java.lang.String CLASS_VERSION
          Class version string
 
Fields inherited from class atg.rest.input.RestInputCustomizerImpl
SPACE
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
XMLInputCustomizer()
          Constructor
 
Method Summary
 java.util.Map<java.lang.String,java.lang.Object> convertToMap(java.lang.Object pObject, DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Converts the supplied object to a Map of parameters.
 java.lang.Class<?> getContainerClass()
          Returns the Document class object, the container used for XML data.
 java.lang.Object instantiateObjectParameter(java.lang.Object pDocument, DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Instantiates an object argument from the given Document.
 boolean isValidTypeString(java.lang.String pData)
          Returns true if pData is a valid XML string, false otherwise
 java.lang.Object parseString(java.lang.String pData, DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Returns a Document object representing the data from pData
protected  java.lang.Object processXMLMultiValue(org.dom4j.Element pObj, org.dom4j.Element pMultiValueDescriptor, java.lang.Class<?> pPropType, java.lang.String pPropName, DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          process an xml multi value, convert it into a java object
protected  java.lang.Object produceMultivalueComponentObject(org.dom4j.Element pCurrentValue, org.dom4j.Element pMultiValueDescriptor, DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          produce a result object for a multivalue component item
 java.lang.String[] splitMultipleStringsAtCharacter(java.lang.String pData, char pChar)
          Splits multiple XML strings at the specified character
 
Methods inherited from class atg.rest.input.RestInputCustomizerImpl
getAcceptableMimeTypes, getEncoding, getFormat, getInputCustomizer, getInputCustomizer, getMapKeyElementString, getMapValueElementString, javaInstanceForClass, setAcceptableMimeTypes, setEncoding, setFormat, setMapKeyElementString, setMapValueElementString
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string

Constructor Detail

XMLInputCustomizer

public XMLInputCustomizer()
Constructor

Method Detail

getContainerClass

public java.lang.Class<?> getContainerClass()
Returns the Document class object, the container used for XML data.

Returns:
the Document class object

parseString

public java.lang.Object parseString(java.lang.String pData,
                                    DynamoHttpServletRequest pRequest,
                                    DynamoHttpServletResponse pResponse)
                             throws RestException
Returns a Document object representing the data from pData

Parameters:
pData - a String which contains the data stream
pRequest - the servlet request
pResponse - the servlet response
Returns:
an Document object representing the data from pData
Throws:
RestException - if the string in pData cannot be parsed

convertToMap

public java.util.Map<java.lang.String,java.lang.Object> convertToMap(java.lang.Object pObject,
                                                                     DynamoHttpServletRequest pRequest,
                                                                     DynamoHttpServletResponse pResponse)
                                                              throws RestException
Converts the supplied object to a Map of parameters. The object must be a Document object.

Parameters:
pObject - the object to convert
pRequest - the servlet request
pResponse - the servlet response
Returns:
a Map with the values
Throws:
RestException - if pObject is not a Docuemnt object or if an error occurs reading from pObject

instantiateObjectParameter

public java.lang.Object instantiateObjectParameter(java.lang.Object pDocument,
                                                   DynamoHttpServletRequest pRequest,
                                                   DynamoHttpServletResponse pResponse)
                                            throws RestException
Instantiates an object argument from the given Document.

Parameters:
pDocument - the Document or Element which contains the data for the object to instantiate
pRequest - the servlet request
pResponse - the servlet response
Returns:
the instantiated object
Throws:
org.dom4j.DocumentException - if an exception occurs accessing the JSONObject
RestException - if there is neither an "atg-rest-class-type" property or "class" property

processXMLMultiValue

protected java.lang.Object processXMLMultiValue(org.dom4j.Element pObj,
                                                org.dom4j.Element pMultiValueDescriptor,
                                                java.lang.Class<?> pPropType,
                                                java.lang.String pPropName,
                                                DynamoHttpServletRequest pRequest,
                                                DynamoHttpServletResponse pResponse)
                                         throws java.lang.Exception
process an xml multi value, convert it into a java object

Parameters:
pObj - the xml element
pMultiValueDescriptor - the type descriptor
pPropType - the property type for the object
pPropName - the name of the property
pRequest - the Dynamo request
pResponse - the Dynamo response
Returns:
the resulting java multi value object
Throws:
java.lang.Exception - if there was an error creating the java multi value object

produceMultivalueComponentObject

protected java.lang.Object produceMultivalueComponentObject(org.dom4j.Element pCurrentValue,
                                                            org.dom4j.Element pMultiValueDescriptor,
                                                            DynamoHttpServletRequest pRequest,
                                                            DynamoHttpServletResponse pResponse)
                                                     throws java.lang.Exception
produce a result object for a multivalue component item

Parameters:
pCurrentValue - the current xml element
pMultiValueDescriptor - the current type descriptor
pRequest - the dynamo request
pResponse - the dynamo response
Returns:
the java object for the given xml element
Throws:
java.lang.Exception - if there was an error producing the java object

splitMultipleStringsAtCharacter

public java.lang.String[] splitMultipleStringsAtCharacter(java.lang.String pData,
                                                          char pChar)
Splits multiple XML strings at the specified character

Parameters:
pData - the string to split
pChar - the character to split at
Returns:
a String array with each XML string

isValidTypeString

public boolean isValidTypeString(java.lang.String pData)
Returns true if pData is a valid XML string, false otherwise

Parameters:
pData - the string to test
Returns:
true if pData is a valid XML string, false otherwise