diff options
Diffstat (limited to '')
-rw-r--r-- | sca-cpp/trunk/modules/java/eval.hpp | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java | 5 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/java/test/CalcImpl.java | 31 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/python/eval.hpp | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/scheme/primitive.hpp | 10 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/impl-test.cpp | 2 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/mod-cpp.hpp | 4 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/mod-eval.hpp | 47 | ||||
-rw-r--r-- | sca-cpp/trunk/modules/server/server-test.scm | 4 |
10 files changed, 63 insertions, 48 deletions
diff --git a/sca-cpp/trunk/modules/java/eval.hpp b/sca-cpp/trunk/modules/java/eval.hpp index 58a1ab5ff9..741dda52ca 100644 --- a/sca-cpp/trunk/modules/java/eval.hpp +++ b/sca-cpp/trunk/modules/java/eval.hpp @@ -501,7 +501,7 @@ const failable<value> evalClass(const JavaRuntime& jr, const value& expr, const // The start, stop, and restart functions are optional const value fn = car<value>(expr); - if (fn == "start" || fn == "restart" || "stop") + if (fn == "start" || fn == "stop") return value(lambda<value(const list<value>&)>()); return mkfailure<value>(string("Couldn't find function: ") + car<value>(expr) + " : " + lastException(jr)); diff --git a/sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java b/sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java index 78b9ec7d90..7fb6519472 100644 --- a/sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java +++ b/sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java @@ -19,8 +19,6 @@ package org.apache.tuscany; -import static org.apache.tuscany.ClassLoader.Test.*; - import java.io.File; import java.net.MalformedURLException; import java.net.URL; @@ -36,7 +34,7 @@ class ClassLoader extends URLClassLoader { } /** - * Create a class loader for an SCA contribution path. + * Create a class loader for an SCA contribution path. */ static java.lang.ClassLoader valueOf(final String path) throws MalformedURLException { return new ClassLoader(new File(path).toURI().toURL()); diff --git a/sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java b/sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java index ef18b856db..85872cba72 100644 --- a/sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java +++ b/sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java @@ -20,7 +20,6 @@ package org.apache.tuscany; import static java.util.Arrays.*; -import static org.apache.tuscany.IterableUtil.Test.*; import java.util.AbstractList; import java.util.ArrayList; @@ -369,10 +368,10 @@ public class IterableUtil { public static void main(final String[] args) { System.out.println("Testing..."); - + Test.class.getClassLoader().setDefaultAssertionStatus(true); new Test().testList(); - + System.out.println("OK"); } diff --git a/sca-cpp/trunk/modules/java/test/CalcImpl.java b/sca-cpp/trunk/modules/java/test/CalcImpl.java index 5337afe460..5bea01a43f 100644 --- a/sca-cpp/trunk/modules/java/test/CalcImpl.java +++ b/sca-cpp/trunk/modules/java/test/CalcImpl.java @@ -19,33 +19,34 @@ package test; -import java.util.List; import java.util.ArrayList; +import java.util.List; + import org.apache.tuscany.Service; public class CalcImpl { - - public Double add(Double x, Double y, Adder adder) { + + public Double add(final Double x, final Double y, final Adder adder) { return adder.add(x, y); } - - public Double addEval(Double x, Double y, Service adder) { + + public Double addEval(final Double x, final Double y, final Service adder) { return adder.eval("add", x, y); } - - public Double mult(Double x, Double y) { + + public Double mult(final Double x, final Double y) { return x * y; } - - public Boolean even(Double x) { - return (double)(((int)(double)x / 2) * 2) == (double)x; + + public Boolean even(final Double x) { + return (double)((int)(double)x / 2 * 2) == (double)x; } - - public Iterable<Double> square(Iterable<Double> l) { - List r = new ArrayList(); - for (Double x: l) + + public Iterable<Double> square(final Iterable<Double> l) { + final List<Double> r = new ArrayList<Double>(); + for(final Double x : l) r.add(x * x); return r; } - + } diff --git a/sca-cpp/trunk/modules/python/eval.hpp b/sca-cpp/trunk/modules/python/eval.hpp index 136ecf6499..855804a5ae 100644 --- a/sca-cpp/trunk/modules/python/eval.hpp +++ b/sca-cpp/trunk/modules/python/eval.hpp @@ -241,7 +241,7 @@ const failable<value> evalScript(const value& expr, PyObject* script) { // The start, stop, and restart functions are optional const value fn = car<value>(expr); - if (fn == "start" || fn == "restart" || fn == "stop") { + if (fn == "start" || fn == "stop") { PyErr_Clear(); return value(lambda<value(const list<value>&)>()); } diff --git a/sca-cpp/trunk/modules/scheme/primitive.hpp b/sca-cpp/trunk/modules/scheme/primitive.hpp index e911c76f6c..fd5f3e9755 100644 --- a/sca-cpp/trunk/modules/scheme/primitive.hpp +++ b/sca-cpp/trunk/modules/scheme/primitive.hpp @@ -179,10 +179,6 @@ const value stopProc(unused const list<value>& args) { return lambda<value(const list<value>&)>(); } -const value restartProc(unused const list<value>& args) { - return lambda<value(const list<value>&)>(); -} - const value applyPrimitiveProcedure(const value& proc, list<value>& args) { const lambda<value(const list<value>&)> func(cadr((list<value>)proc)); return func(args); @@ -236,8 +232,7 @@ const list<value> primitiveProcedureNames() { + "log" + "uuid" + "start" - + "stop" - + "restart"; + + "stop"; } const list<value> primitiveProcedureObjects() { @@ -262,8 +257,7 @@ const list<value> primitiveProcedureObjects() { + primitiveProcedure(logProc) + primitiveProcedure(uuidProc) + primitiveProcedure(startProc) - + primitiveProcedure(stopProc) - + primitiveProcedure(restartProc); + + primitiveProcedure(stopProc); } const bool isFalse(const value& exp) { diff --git a/sca-cpp/trunk/modules/server/impl-test.cpp b/sca-cpp/trunk/modules/server/impl-test.cpp index 3fa1d65323..1bd0843745 100644 --- a/sca-cpp/trunk/modules/server/impl-test.cpp +++ b/sca-cpp/trunk/modules/server/impl-test.cpp @@ -34,7 +34,7 @@ namespace tuscany { namespace server { const failable<value> get(unused const list<value>& params) { - return value(string("Hey")); + return value(mklist<value>("text/html", mklist<value>("Hey"))); } const failable<value> post(unused const list<value>& params) { diff --git a/sca-cpp/trunk/modules/server/mod-cpp.hpp b/sca-cpp/trunk/modules/server/mod-cpp.hpp index 23b4941c26..b3828dd7d2 100644 --- a/sca-cpp/trunk/modules/server/mod-cpp.hpp +++ b/sca-cpp/trunk/modules/server/mod-cpp.hpp @@ -50,10 +50,10 @@ const list<value> failableResult(const value& func, const list<value>& v) { return v; // Report a failure with an empty reason as 'function not supported' - // Except for the start, stop, and restart functions, which are optional + // Except for the start, and stop functions, which are optional const value reason = cadr(v); if (length(reason) == 0) { - if (func == "start" || func == "restart" || func == "stop") + if (func == "start" || func == "stop") return mklist<value>(lambda<value(const list<value>&)>()); return mklist<value>(value(), string("Function not supported: ") + func); } diff --git a/sca-cpp/trunk/modules/server/mod-eval.hpp b/sca-cpp/trunk/modules/server/mod-eval.hpp index 03cce5aeb4..f319942f8d 100644 --- a/sca-cpp/trunk/modules/server/mod-eval.hpp +++ b/sca-cpp/trunk/modules/server/mod-eval.hpp @@ -104,15 +104,22 @@ const failable<int> get(request_rec* r, const lambda<value(const list<value>&)>& return httpd::writeResult(json::jsonResult(id, content(val), cx), "application/json-rpc", r); } - // Evaluate the GET expression and return an ATOM entry or feed representing a resource + // Evaluate the GET expression const list<value> path(pathValues(r->uri)); const failable<value> val = failableResult(impl(cons<value>("get", mklist<value>(cddr(path))))); if (!hasContent(val)) return mkfailure<int>(reason(val)); + const value c = content(val); + + // Write returned content-type / content-list pair + if (isList(cadr<value>(c))) + return httpd::writeResult(convertValues<string>(cadr<value>(c)), car<value>(c), r); + + // Write returned ATOM feed or entry if (isNil(cddr(path))) - return httpd::writeResult(atom::writeATOMFeed(atom::feedValuesToElements(content(val))), "application/atom+xml;type=feed", r); + return httpd::writeResult(atom::writeATOMFeed(atom::feedValuesToElements(c)), "application/atom+xml;type=feed", r); else - return httpd::writeResult(atom::writeATOMEntry(atom::entryValuesToElements(content(val))), "application/atom+xml;type=entry", r); + return httpd::writeResult(atom::writeATOMEntry(atom::entryValuesToElements(c)), "application/atom+xml;type=entry", r); } /** @@ -375,7 +382,7 @@ const failable<list<value> > applyLifecycleExpr(const list<value>& impls, const /** * Configure the components declared in the deployed composite. */ -const failable<bool> confComponents(const string& lifecycle, ServerConf& sc, server_rec& server) { +const failable<bool> confComponents(ServerConf& sc, server_rec& server) { if (sc.contributionPath == "" || sc.compositeName == "") return false; @@ -383,20 +390,29 @@ const failable<bool> confComponents(const string& lifecycle, ServerConf& sc, ser const failable<list<value> > comps = readComponents(sc.contributionPath + sc.compositeName); if (!hasContent(comps)) return mkfailure<bool>(reason(comps)); - const list<value> starts = componentToImplementationAssoc(sc, server, content(comps)); + sc.implementations = componentToImplementationAssoc(sc, server, content(comps)); + debug(sc.implementations, "modeval::confComponents::implementations"); + + // Store the implementation lambda functions in a tree for fast retrieval + sc.implTree = mkbtree(sort(sc.implementations)); + return true; +} + +/** + * Start the components declared in the deployed composite. + */ +const failable<bool> startComponents(ServerConf& sc) { - // Start or restart the component implementations - // Record the returned lambda functions - debug(starts, "modeval::confComponents::start"); - const failable<list<value> > impls = applyLifecycleExpr(starts, mklist<value>(c_str(lifecycle))); + // Start the components and record the returned implementation lambda functions + debug(sc.implementations, "modeval::startComponents::start"); + const failable<list<value> > impls = applyLifecycleExpr(sc.implementations, mklist<value>("start")); if (!hasContent(impls)) return mkfailure<bool>(reason(impls)); sc.implementations = content(impls); - debug(sc.implementations, "modeval::confComponents::implementations"); + debug(sc.implementations, "modeval::startComponents::implementations"); // Store the implementation lambda functions in a tree for fast retrieval sc.implTree = mkbtree(sort(sc.implementations)); - return true; } @@ -458,7 +474,7 @@ int postConfig(apr_pool_t *p, unused apr_pool_t *plog, unused apr_pool_t *ptemp, debug(sc.wiringServerName, "modeval::postConfig::wiringServerName"); debug(sc.contributionPath, "modeval::postConfig::contributionPath"); debug(sc.compositeName, "modeval::postConfig::compositeName"); - const failable<bool> res = confComponents(count > 1? "restart" : "start", sc, *s); + const failable<bool> res = confComponents(sc, *s); if (!hasContent(res)) { cerr << "[Tuscany] Due to one or more errors mod_tuscany_eval loading failed. Causing apache to stop loading." << endl; return -1; @@ -481,6 +497,13 @@ void childInit(apr_pool_t* p, server_rec* s) { exit(APEXIT_CHILDFATAL); } + // Start the components in the child process + const failable<bool> res = startComponents(*sc); + if (!hasContent(res)) { + cerr << "[Tuscany] Due to one or more errors mod_tuscany_eval loading failed. Causing apache to stop loading." << endl; + exit(APEXIT_CHILDFATAL); + } + // Register a cleanup callback, called when the child is stopped or restarted apr_pool_pre_cleanup_register(p, (void*)sc, serverCleanup); } diff --git a/sca-cpp/trunk/modules/server/server-test.scm b/sca-cpp/trunk/modules/server/server-test.scm index 490f168170..7efb6ffeed 100644 --- a/sca-cpp/trunk/modules/server/server-test.scm +++ b/sca-cpp/trunk/modules/server/server-test.scm @@ -31,11 +31,11 @@ '("Item" "111" ((javaClass "services.Item") (name "Apple") (currencyCode "USD") (currencySymbol "$") (price 2.99)))) ) -(define (post coll entry) +(define (post collection item) '("123456789") ) -(define (put id entry) +(define (put id item) true ) |