diff options
| author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-04-16 21:35:11 +0100 | 
|---|---|---|
| committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-04-16 21:35:11 +0100 | 
| commit | b1cc0d05e799a551326da3b8376aaff8f374b9d9 (patch) | |
| tree | 21efbe3480d2089452b4e5a342ae5f8065004b5c | |
| parent | C++17 and Ice 3.7 (diff) | |
| download | icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.tar.bz2 icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.tar.xz icespider-b1cc0d05e799a551326da3b8376aaff8f374b9d9.zip | |
Route Optionsicespider-0.4.1
Provide an irouteOptions constructor that takes new class RouteOptions
for finer grained control over the setup process. This currently
provides the option to not add the default serializers.
| -rw-r--r-- | icespider/core/Jamfile.jam | 2 | ||||
| -rw-r--r-- | icespider/core/irouteHandler.cpp | 17 | ||||
| -rw-r--r-- | icespider/core/irouteHandler.h | 4 | ||||
| -rw-r--r-- | icespider/core/routeOptions.ice | 12 | ||||
| -rw-r--r-- | icespider/fcgi/Jamfile.jam | 8 | ||||
| -rw-r--r-- | icespider/fileSessions/Jamfile.jam | 1 | ||||
| -rw-r--r-- | icespider/unittests/Jamfile.jam | 5 | 
7 files changed, 41 insertions, 8 deletions
| diff --git a/icespider/core/Jamfile.jam b/icespider/core/Jamfile.jam index b5712ad..216127e 100644 --- a/icespider/core/Jamfile.jam +++ b/icespider/core/Jamfile.jam @@ -4,7 +4,7 @@ lib boost_system ;  lib boost_filesystem ;  lib icespider-core : -	[ glob-tree *.c *.cpp : bin ] +	[ glob-tree *.c *.cpp *.ice : bin ]  	:  	<library>../common//icespider-common  	<library>adhocutil diff --git a/icespider/core/irouteHandler.cpp b/icespider/core/irouteHandler.cpp index 348ac8e..d4ad722 100644 --- a/icespider/core/irouteHandler.cpp +++ b/icespider/core/irouteHandler.cpp @@ -5,14 +5,23 @@  INSTANTIATEFACTORY(IceSpider::IRouteHandler, const IceSpider::Core *);  namespace IceSpider { +	const RouteOptions IRouteHandler::defaultRouteOptions { +	};  	IRouteHandler::IRouteHandler(HttpMethod m, const std::string & p) : +		IRouteHandler(m, p, defaultRouteOptions) +	{ +	} + +	IRouteHandler::IRouteHandler(HttpMethod m, const std::string & p, const RouteOptions & ro) :  		Path(p),  		method(m)  	{ -		auto globalSerializers = AdHoc::PluginManager::getDefault()->getAll<Slicer::StreamSerializerFactory>(); -		for (const auto & gs : globalSerializers) { -			auto slash = gs->name.find('/'); -			routeSerializers.insert({ { gs->name.substr(0, slash), gs->name.substr(slash + 1) }, gs->implementation() }); +		if (ro.addDefaultSerializers) { +			auto globalSerializers = AdHoc::PluginManager::getDefault()->getAll<Slicer::StreamSerializerFactory>(); +			for (const auto & gs : globalSerializers) { +				auto slash = gs->name.find('/'); +				routeSerializers.insert({ { gs->name.substr(0, slash), gs->name.substr(slash + 1) }, gs->implementation() }); +			}  		}  	} diff --git a/icespider/core/irouteHandler.h b/icespider/core/irouteHandler.h index 38bc1ed..4fbb581 100644 --- a/icespider/core/irouteHandler.h +++ b/icespider/core/irouteHandler.h @@ -7,13 +7,17 @@  #include <pathparts.h>  #include <factory.h>  #include <visibility.h> +#include "routeOptions.h"  namespace IceSpider {  	class Core;  	class DLL_PUBLIC IRouteHandler : public Path {  		public: +			const static RouteOptions defaultRouteOptions; +  			IRouteHandler(HttpMethod, const std::string & path); +			IRouteHandler(HttpMethod, const std::string & path, const RouteOptions &);  			virtual ~IRouteHandler();  			virtual void execute(IHttpRequest * request) const = 0; diff --git a/icespider/core/routeOptions.ice b/icespider/core/routeOptions.ice new file mode 100644 index 0000000..13279bb --- /dev/null +++ b/icespider/core/routeOptions.ice @@ -0,0 +1,12 @@ +#ifndef ICESPIDER_ROUTEOPTIONS_ICE +#define ICESPIDER_ROUTEOPTIONS_ICE + +[["ice-prefix"]] +module IceSpider { +	local class RouteOptions { +		bool addDefaultSerializers = true; +	}; +}; + +#endif + diff --git a/icespider/fcgi/Jamfile.jam b/icespider/fcgi/Jamfile.jam index 9183820..47c10fa 100644 --- a/icespider/fcgi/Jamfile.jam +++ b/icespider/fcgi/Jamfile.jam @@ -1,12 +1,16 @@ +lib slicer ;  lib fcgi : : <name>fcgi ;  lib fcgi++ : : <name>fcgi++ ;  lib icespider-fcgi :  	[ glob-tree *.cpp : bin ]  	: +	<library>slicer  	<library>fcgi  	<library>fcgi++ -	<library>..//core +	<library>..//core//icespider-core +	<implicit-dependency>../core//icespider-core  	: : -	<library>..//core +	<library>..//core//icespider-core +	<implicit-dependency>../core//icespider-core  	; diff --git a/icespider/fileSessions/Jamfile.jam b/icespider/fileSessions/Jamfile.jam index f08559d..1a457cd 100644 --- a/icespider/fileSessions/Jamfile.jam +++ b/icespider/fileSessions/Jamfile.jam @@ -9,5 +9,6 @@ lib icespider-filesessions :  	<library>boost_filesystem  	<library>adhocutil  	<library>../core//icespider-core +	<implicit-dependency>../core//icespider-core  	; diff --git a/icespider/unittests/Jamfile.jam b/icespider/unittests/Jamfile.jam index af8041c..aa8d879 100644 --- a/icespider/unittests/Jamfile.jam +++ b/icespider/unittests/Jamfile.jam @@ -50,11 +50,11 @@ run  	<library>slicer-xml  	<library>../xslt//icespider-xslt  	<library>../core//icespider-core +	<implicit-dependency>../core//icespider-core  	<library>../compile//icespider-compile  	<implicit-dependency>../compile//icespider-compile  	<include>.  	<implicit-dependency>test-api -	<dependency>../core  	: testCompile :  	; @@ -76,6 +76,7 @@ run  	<library>slicer-xml  	<library>../common//icespider-common  	<library>../core//icespider-core +	<implicit-dependency>../core//icespider-core  	<library>../xslt//icespider-xslt  	<library>../testing//icespider-testing  	<implicit-dependency>../common//icespider-common @@ -94,6 +95,7 @@ run  	<library>testCommon  	<library>../common//icespider-common  	<library>../core//icespider-core +	<implicit-dependency>../core//icespider-core  	<library>boost_system  	<library>boost_filesystem  	<library>slicer @@ -114,6 +116,7 @@ run  	<library>boost_system  	<library>boost_filesystem  	<library>../core//icespider-core +	<implicit-dependency>../core//icespider-core  	;  lib test-api : | 
