1
0
Fork 0
This commit is contained in:
Frank Celler 2012-01-04 09:38:12 +01:00
parent d20cdd549e
commit f27104c859
11 changed files with 428 additions and 92 deletions

View File

@ -30,26 +30,26 @@
#include <math.h>
#include <Basics/Logger.h>
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantArray.h>
#include <Basics/VariantBlob.h>
#include <Basics/VariantBoolean.h>
#include <Basics/VariantDate.h>
#include <Basics/VariantDatetime.h>
#include <Basics/VariantDouble.h>
#include <Basics/VariantFloat.h>
#include <Basics/VariantInt16.h>
#include <Basics/VariantInt32.h>
#include <Basics/VariantInt64.h>
#include <Basics/VariantMatrix2.h>
#include <Basics/VariantNull.h>
#include <Basics/VariantString.h>
#include <Basics/VariantUInt16.h>
#include <Basics/VariantUInt32.h>
#include <Basics/VariantUInt64.h>
#include <Basics/VariantVector.h>
#include <Variant/VariantArray.h>
#include <Variant/VariantBlob.h>
#include <Variant/VariantBoolean.h>
#include <Variant/VariantDate.h>
#include <Variant/VariantDatetime.h>
#include <Variant/VariantDouble.h>
#include <Variant/VariantFloat.h>
#include <Variant/VariantInt16.h>
#include <Variant/VariantInt32.h>
#include <Variant/VariantInt64.h>
#include <Variant/VariantMatrix2.h>
#include <Variant/VariantNull.h>
#include <Variant/VariantString.h>
#include <Variant/VariantUInt16.h>
#include <Variant/VariantUInt32.h>
#include <Variant/VariantUInt64.h>
#include <Variant/VariantVector.h>
using namespace triagens::basics;

View File

@ -0,0 +1,55 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief force symbols into programm
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2011 triagens GmbH, Cologne, Germany
///
/// Licensed 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.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2009-2011, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
#include "Initialise.h"
#include <Rest/Initialise.h>
#include "ResultGenerator/HtmlResultGenerator.h"
#include "ResultGenerator/JsonResultGenerator.h"
#include "ResultGenerator/JsonXResultGenerator.h"
#include "ResultGenerator/PhpResultGenerator.h"
#include "ResultGenerator/XmlResultGenerator.h"
namespace triagens {
namespace rest {
void InitialiseResultGenerator () {
TRIAGENS_REST_INITIALISE;
HtmlResultGenerator::initialise();
JsonResultGenerator::initialise();
JsonXResultGenerator::initialise();
PhpResultGenerator::initialise();
XmlResultGenerator::initialise();
}
void ShutdownResultGenerator () {
TRIAGENS_REST_SHUTDOWN;
}
}
}

View File

@ -0,0 +1,99 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief force symbols into programm
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2011 triagens GmbH, Cologne, Germany
///
/// Licensed 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.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2009-2011, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
#ifndef TRIAGENS_FYN_REST_INITIALISE2_H
#define TRIAGENS_FYN_REST_INITIALISE2_H 1
#include <Basics/Common.h>
// -----------------------------------------------------------------------------
// --SECTION-- public macros
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup ResultGenerator
/// @{
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// @brief initialise
////////////////////////////////////////////////////////////////////////////////
#define TRIAGENS_RESULT_GENERATOR_INITIALISE \
do { \
triagens::rest::InitialiseResultGenerator(); \
} while (0)
////////////////////////////////////////////////////////////////////////////////
/// @brief shutdown
////////////////////////////////////////////////////////////////////////////////
#define TRIAGENS_RESULT_GENERATOR_SHUTDOWN \
do { \
triagens::rest::ShutdownResultGenerator(); \
} while (0)
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------------
// --SECTION-- private functions
// -----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
/// @addtogroup ResultGenerator
/// @{
////////////////////////////////////////////////////////////////////////////////
namespace triagens {
namespace rest {
////////////////////////////////////////////////////////////////////////////////
/// @brief initialise function
////////////////////////////////////////////////////////////////////////////////
extern void InitialiseResultGenerator ();
////////////////////////////////////////////////////////////////////////////////
/// @brief shutdown function
////////////////////////////////////////////////////////////////////////////////
extern void ShutdownResultGenerator ();
}
}
////////////////////////////////////////////////////////////////////////////////
/// @}
////////////////////////////////////////////////////////////////////////////////
#endif
// Local Variables:
// mode: outline-minor
// outline-regexp: "^\\(/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|// --SECTION--\\|/// @\\}\\)"
// End:

View File

@ -30,26 +30,26 @@
#include <math.h>
#include <Basics/Logger.h>
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantArray.h>
#include <Basics/VariantBlob.h>
#include <Basics/VariantBoolean.h>
#include <Basics/VariantDate.h>
#include <Basics/VariantDatetime.h>
#include <Basics/VariantDouble.h>
#include <Basics/VariantFloat.h>
#include <Basics/VariantInt16.h>
#include <Basics/VariantInt32.h>
#include <Basics/VariantInt64.h>
#include <Basics/VariantMatrix2.h>
#include <Basics/VariantNull.h>
#include <Basics/VariantString.h>
#include <Basics/VariantUInt16.h>
#include <Basics/VariantUInt32.h>
#include <Basics/VariantUInt64.h>
#include <Basics/VariantVector.h>
#include <Variant/VariantArray.h>
#include <Variant/VariantBlob.h>
#include <Variant/VariantBoolean.h>
#include <Variant/VariantDate.h>
#include <Variant/VariantDatetime.h>
#include <Variant/VariantDouble.h>
#include <Variant/VariantFloat.h>
#include <Variant/VariantInt16.h>
#include <Variant/VariantInt32.h>
#include <Variant/VariantInt64.h>
#include <Variant/VariantMatrix2.h>
#include <Variant/VariantNull.h>
#include <Variant/VariantString.h>
#include <Variant/VariantUInt16.h>
#include <Variant/VariantUInt32.h>
#include <Variant/VariantUInt64.h>
#include <Variant/VariantVector.h>
using namespace triagens::basics;

View File

@ -28,10 +28,10 @@
#include "JsonXResultGenerator.h"
#include <Basics/Logger.h>
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantObject.h>
#include <Variant/VariantObject.h>
using namespace triagens::basics;

View File

@ -0,0 +1,114 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief output generators
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2011 triagens GmbH, Cologne, Germany
///
/// Licensed 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.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2010-2011, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
#include "OutputGenerator.h"
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include "ResultGenerator/HtmlResultGenerator.h"
#include "ResultGenerator/JsonResultGenerator.h"
#include "ResultGenerator/JsonXResultGenerator.h"
#include "ResultGenerator/PhpResultGenerator.h"
#include "ResultGenerator/XmlResultGenerator.h"
using namespace triagens::basics;
namespace triagens {
namespace rest {
namespace OutputGenerator {
ResultGenerator* resultGenerator (string const& name) {
static PhpResultGenerator php;
static HtmlResultGenerator html;
static JsonResultGenerator json;
static JsonXResultGenerator jsonx;
static XmlResultGenerator xml;
if (name == "application/json" || name == "json") {
LOGGER_TRACE << "using json result generator";
return &json;
}
else if (name == "application/jsonx" || name == "jsonx") {
LOGGER_TRACE << "using json result generator";
return &jsonx;
}
else if (name == "application/php" || name == "php") {
LOGGER_TRACE << "using php result generator";
return &php;
}
else if (name == "application/xml" || name == "xml") {
LOGGER_TRACE << "using xml result generator";
return &xml;
}
else if (name == "text/html" || name == "html") {
LOGGER_TRACE << "using html result generator";
return &html;
}
else {
LOGGER_TRACE << "using json result generator per default (accept: '" << name << "')";
return &json;
}
}
bool output (string const& format, StringBuffer& buffer, VariantObject* object, string& contentType) {
ResultGenerator* generator = resultGenerator(format);
if (generator == 0) {
return false;
}
generator->generate(buffer, object);
contentType = generator->contentType();
return true;
}
string json (VariantObject* object) {
StringBuffer buffer;
buffer.initialise();
string contentType;
bool ok = output("json", buffer, object, contentType);
string result;
if (ok) {
result = buffer.c_str();
}
buffer.free();
return result;
}
}
}
}

View File

@ -0,0 +1,68 @@
////////////////////////////////////////////////////////////////////////////////
/// @brief output generators
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2011 triagens GmbH, Cologne, Germany
///
/// Licensed 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.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler
/// @author Copyright 2010-2011, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////
#ifndef TRIAGENS_FYN_REST_OUTPUT_GENERATOR_H
#define TRIAGENS_FYN_REST_OUTPUT_GENERATOR_H 1
#include <Basics/Common.h>
namespace triagens {
namespace basics {
class VariantObject;
struct StringBuffer;
}
namespace rest {
class ResultGenerator;
namespace OutputGenerator {
////////////////////////////////////////////////////////////////////////////////
/// @ingroup Utilities
/// @brief returns a static result generator
////////////////////////////////////////////////////////////////////////////////
ResultGenerator* resultGenerator (string const& name);
////////////////////////////////////////////////////////////////////////////////
/// @ingroup Utilities
/// @brief generates output given a format and object
////////////////////////////////////////////////////////////////////////////////
bool output (string const& format, basics::StringBuffer& buffer, basics::VariantObject*, string& contentType);
////////////////////////////////////////////////////////////////////////////////
/// @ingroup Utilities
/// @brief generates output as json given an object
////////////////////////////////////////////////////////////////////////////////
string json (basics::VariantObject*);
}
}
}
#endif

View File

@ -30,26 +30,26 @@
#include <math.h>
#include <Basics/Logger.h>
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantArray.h>
#include <Basics/VariantBlob.h>
#include <Basics/VariantBoolean.h>
#include <Basics/VariantDate.h>
#include <Basics/VariantDatetime.h>
#include <Basics/VariantDouble.h>
#include <Basics/VariantFloat.h>
#include <Basics/VariantInt16.h>
#include <Basics/VariantInt32.h>
#include <Basics/VariantInt64.h>
#include <Basics/VariantMatrix2.h>
#include <Basics/VariantNull.h>
#include <Basics/VariantString.h>
#include <Basics/VariantUInt16.h>
#include <Basics/VariantUInt32.h>
#include <Basics/VariantUInt64.h>
#include <Basics/VariantVector.h>
#include <Variant/VariantArray.h>
#include <Variant/VariantBlob.h>
#include <Variant/VariantBoolean.h>
#include <Variant/VariantDate.h>
#include <Variant/VariantDatetime.h>
#include <Variant/VariantDouble.h>
#include <Variant/VariantFloat.h>
#include <Variant/VariantInt16.h>
#include <Variant/VariantInt32.h>
#include <Variant/VariantInt64.h>
#include <Variant/VariantMatrix2.h>
#include <Variant/VariantNull.h>
#include <Variant/VariantString.h>
#include <Variant/VariantUInt16.h>
#include <Variant/VariantUInt32.h>
#include <Variant/VariantUInt64.h>
#include <Variant/VariantVector.h>
using namespace triagens::basics;

View File

@ -30,23 +30,23 @@
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantArray.h>
#include <Basics/VariantBlob.h>
#include <Basics/VariantBoolean.h>
#include <Basics/VariantDate.h>
#include <Basics/VariantDatetime.h>
#include <Basics/VariantDouble.h>
#include <Basics/VariantFloat.h>
#include <Basics/VariantInt16.h>
#include <Basics/VariantInt32.h>
#include <Basics/VariantInt64.h>
#include <Basics/VariantMatrix2.h>
#include <Basics/VariantNull.h>
#include <Basics/VariantString.h>
#include <Basics/VariantUInt16.h>
#include <Basics/VariantUInt32.h>
#include <Basics/VariantUInt64.h>
#include <Basics/VariantVector.h>
#include <Variant/VariantArray.h>
#include <Variant/VariantBlob.h>
#include <Variant/VariantBoolean.h>
#include <Variant/VariantDate.h>
#include <Variant/VariantDatetime.h>
#include <Variant/VariantDouble.h>
#include <Variant/VariantFloat.h>
#include <Variant/VariantInt16.h>
#include <Variant/VariantInt32.h>
#include <Variant/VariantInt64.h>
#include <Variant/VariantMatrix2.h>
#include <Variant/VariantNull.h>
#include <Variant/VariantString.h>
#include <Variant/VariantUInt16.h>
#include <Variant/VariantUInt32.h>
#include <Variant/VariantUInt64.h>
#include <Variant/VariantVector.h>
using namespace triagens::basics;

View File

@ -29,7 +29,7 @@
#ifndef TRIAGENS_FYN_RESULT_GENERATOR_RESULT_GENERATOR_H
#define TRIAGENS_FYN_RESULT_GENERATOR_RESULT_GENERATOR_H 1
#include <Basics/VariantObject.h>
#include <Variant/VariantObject.h>
#include <Basics/Exceptions.h>
namespace triagens {

View File

@ -30,26 +30,26 @@
#include <math.h>
#include <Basics/Logger.h>
#include <Logger/Logger.h>
#include <Basics/StringBuffer.h>
#include <Basics/StringUtils.h>
#include <Basics/VariantArray.h>
#include <Basics/VariantBlob.h>
#include <Basics/VariantBoolean.h>
#include <Basics/VariantDate.h>
#include <Basics/VariantDatetime.h>
#include <Basics/VariantDouble.h>
#include <Basics/VariantFloat.h>
#include <Basics/VariantInt16.h>
#include <Basics/VariantInt32.h>
#include <Basics/VariantInt64.h>
#include <Basics/VariantMatrix2.h>
#include <Basics/VariantNull.h>
#include <Basics/VariantString.h>
#include <Basics/VariantUInt16.h>
#include <Basics/VariantUInt32.h>
#include <Basics/VariantUInt64.h>
#include <Basics/VariantVector.h>
#include <Variant/VariantArray.h>
#include <Variant/VariantBlob.h>
#include <Variant/VariantBoolean.h>
#include <Variant/VariantDate.h>
#include <Variant/VariantDatetime.h>
#include <Variant/VariantDouble.h>
#include <Variant/VariantFloat.h>
#include <Variant/VariantInt16.h>
#include <Variant/VariantInt32.h>
#include <Variant/VariantInt64.h>
#include <Variant/VariantMatrix2.h>
#include <Variant/VariantNull.h>
#include <Variant/VariantString.h>
#include <Variant/VariantUInt16.h>
#include <Variant/VariantUInt32.h>
#include <Variant/VariantUInt64.h>
#include <Variant/VariantVector.h>
using namespace triagens::basics;