shims/qpid-proton-cpp/src/qpidit/QpidItErrors.cpp (122 lines of code) (raw):
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
#include "qpidit/QpidItErrors.hpp"
#include <json/reader.h>
#include <string.h>
namespace qpidit
{
// --- ErrorMessage ---
Message::Message() : oss() {}
Message::Message(const Message& e) : oss(e.toString()) {}
std::string Message::toString() const { return oss.str(); }
Message::operator std::string() const { return toString(); }
std::ostream& operator<<(std::ostream& out, const Message& m) { return out << m.toString(); }
// --- ArgumentError ---
ArgumentError::ArgumentError(const std::string& msg) : std::runtime_error(msg) {}
ArgumentError::~ArgumentError() throw() {}
// --- ErrnoError ---
ErrnoError::ErrnoError(const std::string& funcName, int errorNum) :
std::runtime_error(MSG(funcName << "() returned " << errorNum << " (" << strerror(errorNum) << ")"))
{}
ErrnoError::~ErrnoError() throw() {}
// --- IncorrectAmqpTypeError ---
IncorrectAmqpTypeError::IncorrectAmqpTypeError(const proton::value& got, const proton::value& expected):
std::runtime_error(MSG("Incorrect AMQP type: got \"" << got.type() << ", expected \"" << expected.type() << "\""))
{}
IncorrectAmqpTypeError::~IncorrectAmqpTypeError() throw() {}
// --- IncorrectJmsMapKeyPrefixError ---
IncorrectJmsMapKeyPrefixError::IncorrectJmsMapKeyPrefixError(const std::string& expected, const std::string& key) :
std::runtime_error(MSG("Incorrect JMS map key: expected \"" << expected << "\", found \""
<< key.substr(0, key.size()-3) << "\""))
{}
IncorrectJmsMapKeyPrefixError::~IncorrectJmsMapKeyPrefixError() throw() {}
// --- IncorrectMessageBodyLengthError ---
IncorrectMessageBodyLengthError::IncorrectMessageBodyLengthError(const std::string& context, int expected, int found) :
std::runtime_error(MSG(context << ": Incorrect body length found in message body: expected: "
<< expected << "; found " << found))
{}
IncorrectMessageBodyLengthError::~IncorrectMessageBodyLengthError() throw() {}
// --- IncorrectMessageBodyTypeError ---
IncorrectMessageBodyTypeError::IncorrectMessageBodyTypeError(proton::type_id expected, proton::type_id found) :
std::runtime_error(MSG("Incorrect AMQP type found in message body: expected: " << expected
<< "; found: " << found))
{}
IncorrectMessageBodyTypeError::IncorrectMessageBodyTypeError(const std::string& expected, const std::string& found) :
std::runtime_error(MSG("Incorrect JMS message type found: expected: " << expected
<< "; found: " << found))
{}
IncorrectMessageBodyTypeError::~IncorrectMessageBodyTypeError() throw() {}
// --- IncorrectValueTypeError ---
// TODO: Consolidate with IncorrectMessageBodyTypeError?
IncorrectValueTypeError::IncorrectValueTypeError(const proton::value& val) :
std::runtime_error(MSG("Incorrect value type received: " << val.type()))
{}
IncorrectValueTypeError::~IncorrectValueTypeError() throw() {}
// --- InvalidAmqpSubtype ---
InvalidAmqpSubtype::InvalidAmqpSubtype(const std::string& amqpType, const std::string& amqpSubType) :
std::runtime_error(MSG("AMQP subtype \"" << amqpSubType << "\" not valid for AMQP type \"" << amqpType << "\""))
{}
InvalidAmqpSubtype::~InvalidAmqpSubtype() throw() {}
// --- InvalidJsonRootNodeError ---
std::map<Json::ValueType, std::string> InvalidJsonRootNodeError::s_JsonValueTypeNames = initializeStaticMap();
InvalidJsonRootNodeError::InvalidJsonRootNodeError(const Json::ValueType& expected, const Json::ValueType& actual) :
std::runtime_error(MSG("Invalid JSON root node: Expected type " << formatJsonValueType(expected)
<< ", received type " << formatJsonValueType(actual)))
{}
InvalidJsonRootNodeError::~InvalidJsonRootNodeError() throw() {}
// protected
//static
std::string InvalidJsonRootNodeError::formatJsonValueType(const Json::ValueType& valueType) {
std::ostringstream oss;
oss << valueType << " (" << s_JsonValueTypeNames[valueType] << ")";
return oss.str();
}
//static
std::map<Json::ValueType, std::string> InvalidJsonRootNodeError::initializeStaticMap() {
std::map<Json::ValueType, std::string> m;
m[Json::nullValue] = "Json::nullValue";
m[Json::intValue] = "Json::intValue";
m[Json::uintValue] = "Json::uintValue";
m[Json::realValue] = "Json::realValue";
m[Json::stringValue] = "Json::stringValue";
m[Json::booleanValue] = "Json::booleanValue";
m[Json::arrayValue] = "Json::arrayValue";
m[Json::objectValue] = "Json::objectValue";
return m;
}
// --- InvalidTestValueError ---
InvalidTestValueError::InvalidTestValueError(const std::string& valueStr) :
std::runtime_error(MSG("Invalid element test value: \"" << valueStr << "\" is not in format \"amqp-type:value-as_str\""))
{}
InvalidTestValueError::InvalidTestValueError(const std::string& type, const std::string& valueStr) :
std::runtime_error(MSG("Invalid test value: \"" << valueStr << "\" is not valid for type " << type))
{}
InvalidTestValueError::~InvalidTestValueError() throw() {}
// --- JsonParserError ---
JsonParserError::JsonParserError(const std::string& parseErrors) :
std::runtime_error(MSG("JSON test values failed to parse: " << parseErrors))
{}
JsonParserError::~JsonParserError() throw() {}
// --- PcloseError ---
PcloseError::PcloseError(int errorNum) : ErrnoError("pclose", errorNum) {}
PcloseError::~PcloseError() throw() {}
// --- PopenError ---
PopenError::PopenError(int errorNum) : ErrnoError("popen", errorNum) {}
PopenError::~PopenError() throw() {}
// --- UnexpectedJMSMessageHeader ---
UnexpectedJMSMessageHeader::UnexpectedJMSMessageHeader(const std::string& jmsMessageHeader, const std::string& errorDescription) :
std::runtime_error(MSG("Unexpected JMS message header: " << jmsMessageHeader << ": " << errorDescription))
{}
UnexpectedJMSMessageHeader::~UnexpectedJMSMessageHeader() throw() {}
// --- UnknownAmqpTypeError ---
UnknownAmqpTypeError::UnknownAmqpTypeError(const std::string& amqpType) :
std::runtime_error(MSG("Unknown AMQP type \"" << amqpType << "\""))
{}
UnknownAmqpTypeError::~UnknownAmqpTypeError() throw() {}
// --- UnknownJmsDestinationTypeError ---
UnknownJmsDestinationTypeError::UnknownJmsDestinationTypeError(const std::string& jmsDestinationType) :
std::runtime_error(MSG("Unknown JMS destination type \"" << jmsDestinationType << "\""))
{}
UnknownJmsDestinationTypeError::~UnknownJmsDestinationTypeError() throw() {}
// --- UnknownJmsHeaderTypeError ---
UnknownJmsHeaderTypeError::UnknownJmsHeaderTypeError(const std::string& jmsHeaderType) :
std::runtime_error(MSG("Unknown or incorrect JMS header type \"" << jmsHeaderType << "\""))
{}
UnknownJmsHeaderTypeError::~UnknownJmsHeaderTypeError() throw() {}
// --- UnknownJmsMessageSubTypeError ---
UnknownJmsMessageSubTypeError::UnknownJmsMessageSubTypeError(const std::string& jmsMessageSubType) :
std::runtime_error(MSG("Unknown JMS sub-type \"" << jmsMessageSubType << "\""))
{}
UnknownJmsMessageSubTypeError::~UnknownJmsMessageSubTypeError() throw() {}
// --- UnknownJmsMessageTypeError ---
UnknownJmsMessageTypeError::UnknownJmsMessageTypeError(const std::string& jmsMessageType) :
std::runtime_error(MSG("Unknown JMS message type \"" << jmsMessageType << "\""))
{}
UnknownJmsMessageTypeError::~UnknownJmsMessageTypeError() throw() {}
// --- UnknownJmsPropertyTypeError ---
UnknownJmsPropertyTypeError::UnknownJmsPropertyTypeError(const std::string& jmsPropertyType) :
std::runtime_error(MSG("Unknown JMS property type \"" << jmsPropertyType << "\""))
{}
UnknownJmsPropertyTypeError::~UnknownJmsPropertyTypeError() throw() {}
// --- UnsupportedAmqpSubTypeError ---
UnsupportedAmqpSubTypeError::UnsupportedAmqpSubTypeError(const std::string& amqpSubType) :
std::runtime_error(MSG("Unsupported AMQP subtype \"" << amqpSubType << "\""))
{}
UnsupportedAmqpSubTypeError::~UnsupportedAmqpSubTypeError() throw() {}
// --- UnsupportedAmqpTypeError ---
UnsupportedAmqpTypeError::UnsupportedAmqpTypeError(const std::string& amqpType) :
std::runtime_error(MSG("Unsupported AMQP type \"" << amqpType << "\""))
{}
UnsupportedAmqpTypeError::~UnsupportedAmqpTypeError() throw() {}
} /* namespace qpidit */