25 #ifndef ABSTRACTFILTER_H 
   26 #define ABSTRACTFILTER_H 
   33 #include "Collections.h" 
   34 #include "WorkItemPool.h" 
   37         #define __MSXML_LIBRARY_DEFINED__ 
   40 #include <xercesc/dom/DOM.hpp> 
  130                         NameValueCollection m_Properties;
 
  141                         virtual bool canLogPayload();
 
  143                         virtual FilterResult ProcessMessage( XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* inputOutputData, NameValueCollection& transportHeaders, 
bool asClient ) = 0;
 
  144                         virtual FilterResult ProcessMessage( 
const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* inputData, 
AbstractFilter::buffer_type outputData, NameValueCollection& transportHeaders, 
bool asClient ) = 0;
 
  145                         virtual FilterResult ProcessMessage( 
AbstractFilter::buffer_type inputData, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* outputData, NameValueCollection& transportHeaders, 
bool asClient ) = 0;
 
  149                         virtual FilterResult ProcessMessage( 
const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* inputData, 
unsigned char** outputData, NameValueCollection& transportHeaders, 
bool asClient ) = 0;       
 
  153                         virtual bool isMethodSupported( 
FilterMethod method, 
bool asClient );
 
  157                         const NameValueCollection& getProperties() 
const;
 
  160                         void setLogFile( 
const string& filename);
 
  163                         string getLogFile() 
const;
 
  169                         void addProperty( 
const string& name, 
const string& value );
 
  173                         static string ToString( 
const FilterMethod type );
 
  183                         virtual bool isBatch()
 const  
  185                                 stringstream errorMessage;
 
  186                                 errorMessage << 
"[isBatch] is not implemented by this filter type [" << FilterType::ToString( m_FilterType ) << 
"]";
 
  187                                 throw logic_error( errorMessage.str() ); 
 
  190                         virtual string getQueueManagerName()
 const 
  192                                 stringstream errorMessage;
 
  193                                 errorMessage << 
"[getQueueManagerName] is not implemented by this filter type [" << FilterType::ToString( m_FilterType ) << 
"]";
 
  194                                 throw logic_error( errorMessage.str() ); 
 
  197                         virtual string getTransportURI()
 const 
  199                                 stringstream errorMessage;
 
  200                                 errorMessage << 
"[getTransportURI] is not implemented by this filter type [" << FilterType::ToString( m_FilterType ) << 
"]";
 
  201                                 throw logic_error( errorMessage.str() ); 
 
  204                         virtual string getBrokerURI()
 const 
  206                                 stringstream errorMessage;
 
  207                                 errorMessage << 
"[getBrokerURI] is not implemented by this filter type [" << FilterType::ToString( m_FilterType ) << 
"]";
 
  208                                 throw logic_error( errorMessage.str() ); 
 
  211                         virtual string getQueueName()
 const 
  213                                 stringstream errorMessage;
 
  214                                 errorMessage << 
"[getQueueName] is not implemented by this filter type [" << FilterType::ToString( m_FilterType ) << 
"]";
 
  215                                 throw logic_error( errorMessage.str() ); 
 
  232                         virtual const char *what() 
const throw()
 
  236                                         return ( m_String.c_str() );
 
  240                                         return "unknown error";