diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-08-28 15:37:14 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-08-28 15:38:28 +0100 |
commit | 885a8eb80f5f80848e45e272170aca8838d468ab (patch) | |
tree | bd26ecf5e36cb72fed75661c50caa8b2b8ce3dcf | |
parent | Add proper tests over the CGI base code and apply fixes as needed. (diff) | |
download | icespider-885a8eb80f5f80848e45e272170aca8838d468ab.tar.bz2 icespider-885a8eb80f5f80848e45e272170aca8838d468ab.tar.xz icespider-885a8eb80f5f80848e45e272170aca8838d468ab.zip |
Find operation by name, not route
-rw-r--r-- | icespider/compile/routeCompiler.cpp | 16 | ||||
-rw-r--r-- | icespider/compile/routeCompiler.h | 4 |
2 files changed, 10 insertions, 10 deletions
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp index 8c274d8..50aa3b2 100644 --- a/icespider/compile/routeCompiler.cpp +++ b/icespider/compile/routeCompiler.cpp @@ -45,39 +45,39 @@ namespace IceSpider { } Slice::OperationPtr - RouteCompiler::findOperation(RoutePtr r, const Slice::ContainerPtr & c, const Ice::StringSeq & ns) + RouteCompiler::findOperation(const std::string & on, const Slice::ContainerPtr & c, const Ice::StringSeq & ns) { for (const auto & cls : c->classes()) { auto fqcn = ns + cls->name(); for (const auto & op : cls->allOperations()) { auto fqon = boost::algorithm::join(fqcn + op->name(), "."); - if (fqon == r->operation) { + if (fqon == on) { return op; } } } for (const auto & m : c->modules()) { - auto op = findOperation(r, m, ns + m->name()); + auto op = findOperation(on, m, ns + m->name()); if (op) return op; } return NULL; } Slice::OperationPtr - RouteCompiler::findOperation(RoutePtr r, const Units & us) + RouteCompiler::findOperation(const std::string & on, const Units & us) { for (const auto & u : us) { - auto op = findOperation(r, u.second); + auto op = findOperation(on, u.second); if (op) return op; } - throw std::runtime_error("Find operator failed for " + r->name); + throw std::runtime_error("Find operation " + on + " failed."); } void RouteCompiler::applyDefaults(RouteConfigurationPtr c, const Units & u) const { for (const auto & r : c->routes) { - auto o = findOperation(r, u); + auto o = findOperation(r->operation, u); for (const auto & p : o->parameters()) { auto defined = std::find_if(r->params.begin(), r->params.end(), [p](const auto & rp) { return p->name() == rp->name; @@ -294,7 +294,7 @@ namespace IceSpider { fprintbf(3, output, "}\n\n"); fprintbf(3, output, "void execute(IceSpider::IHttpRequest * request) const\n"); fprintbf(3, output, "{\n"); - auto o = findOperation(r, units); + auto o = findOperation(r->operation, units); for (const auto & p : r->params) { if (p->hasUserSource) { auto ip = *std::find_if(o->parameters().begin(), o->parameters().end(), [p](const auto & ip) { return ip->name() == p->name; }); diff --git a/icespider/compile/routeCompiler.h b/icespider/compile/routeCompiler.h index 93522fd..63b7c38 100644 --- a/icespider/compile/routeCompiler.h +++ b/icespider/compile/routeCompiler.h @@ -28,8 +28,8 @@ namespace IceSpider { void processConfiguration(FILE * output, RouteConfigurationPtr, const Units &) const; void registerOutputSerializers(FILE * output, RoutePtr) const; void releaseOutputSerializers(FILE * output, RoutePtr) const; - static Slice::OperationPtr findOperation(RoutePtr, const Units &); - static Slice::OperationPtr findOperation(RoutePtr, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); + static Slice::OperationPtr findOperation(const std::string &, const Units &); + static Slice::OperationPtr findOperation(const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq()); }; } } |