summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/modules
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-cpp/trunk/modules/java/eval.hpp2
-rw-r--r--sca-cpp/trunk/modules/java/org/apache/tuscany/ClassLoader.java4
-rw-r--r--sca-cpp/trunk/modules/java/org/apache/tuscany/IterableUtil.java5
-rw-r--r--sca-cpp/trunk/modules/java/test/CalcImpl.java31
-rw-r--r--sca-cpp/trunk/modules/python/eval.hpp2
-rw-r--r--sca-cpp/trunk/modules/scheme/primitive.hpp10
-rw-r--r--sca-cpp/trunk/modules/server/impl-test.cpp2
-rw-r--r--sca-cpp/trunk/modules/server/mod-cpp.hpp4
-rw-r--r--sca-cpp/trunk/modules/server/mod-eval.hpp47
-rw-r--r--sca-cpp/trunk/modules/server/server-test.scm4
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
)