BESXMLSetContextCommand.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "BESXMLSetContextCommand.h"
00034 #include "BESXMLUtils.h"
00035 #include "BESUtil.h"
00036 #include "BESResponseNames.h"
00037 #include "BESDataNames.h"
00038 #include "BESSyntaxUserError.h"
00039 #include "BESDebug.h"
00040
00041 BESXMLSetContextCommand::BESXMLSetContextCommand( const BESDataHandlerInterface &base_dhi )
00042 : BESXMLCommand( base_dhi )
00043 {
00044 }
00045
00055 void
00056 BESXMLSetContextCommand::parse_request( xmlNode *node )
00057 {
00058 string value ;
00059 string name ;
00060 string action ;
00061 map<string, string> props ;
00062 BESXMLUtils::GetNodeInfo( node, action, value, props ) ;
00063 if( action != SET_CONTEXT_STR )
00064 {
00065 string err = "The specified command " + action
00066 + " is not a set context command" ;
00067 throw BESSyntaxUserError( err, __FILE__, __LINE__ ) ;
00068 }
00069
00070 _dhi.action = SET_CONTEXT ;
00071
00072 name = props["name"] ;
00073 if( name.empty() )
00074 {
00075 string err = action + " command: name property missing" ;
00076 throw BESSyntaxUserError( err, __FILE__, __LINE__ ) ;
00077 }
00078 if( value.empty() )
00079 {
00080 string err = action + " command: context value missing" ;
00081 throw BESSyntaxUserError( err, __FILE__, __LINE__ ) ;
00082 }
00083 _dhi.data[CONTEXT_NAME] = name ;
00084 _dhi.data[CONTEXT_VALUE] = value ;
00085 _str_cmd = (string)"set context " + name + " to " + value ;
00086
00087
00088
00089 BESXMLCommand::set_response() ;
00090 }
00091
00098 void
00099 BESXMLSetContextCommand::dump( ostream &strm ) const
00100 {
00101 strm << BESIndent::LMarg << "BESXMLSetContextCommand::dump - ("
00102 << (void *)this << ")" << endl ;
00103 BESIndent::Indent() ;
00104 BESXMLCommand::dump( strm ) ;
00105 BESIndent::UnIndent() ;
00106 }
00107
00108 BESXMLCommand *
00109 BESXMLSetContextCommand::CommandBuilder( const BESDataHandlerInterface &base_dhi )
00110 {
00111 return new BESXMLSetContextCommand( base_dhi ) ;
00112 }
00113