summaryrefslogtreecommitdiffstats
path: root/sca-cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp')
-rw-r--r--sca-cpp/trunk/components/cache/Makefile.am10
-rw-r--r--sca-cpp/trunk/components/cache/client-test.cpp2
-rw-r--r--sca-cpp/trunk/components/cache/memcache-test.cpp (renamed from sca-cpp/trunk/components/cache/mcache-test.cpp)2
-rw-r--r--sca-cpp/trunk/components/cache/memcache.composite (renamed from sca-cpp/trunk/components/cache/mcache.composite)10
-rw-r--r--sca-cpp/trunk/components/cache/memcache.cpp (renamed from sca-cpp/trunk/components/cache/mcache.cpp)6
-rw-r--r--sca-cpp/trunk/components/cache/memcache.hpp (renamed from sca-cpp/trunk/components/cache/mcache.hpp)8
-rwxr-xr-xsca-cpp/trunk/components/cache/memcached-stop2
-rwxr-xr-xsca-cpp/trunk/components/cache/memcached-test2
-rwxr-xr-xsca-cpp/trunk/components/cache/server-test2
-rwxr-xr-xsca-cpp/trunk/components/queue/qpidd-stop2
-rw-r--r--sca-cpp/trunk/etc/git-exclude2
-rw-r--r--sca-cpp/trunk/modules/java/eval.hpp38
-rw-r--r--sca-cpp/trunk/modules/java/org/apache/tuscany/UUIDUtil.java32
-rwxr-xr-xsca-cpp/trunk/modules/wsgi/wsgi-stop2
-rw-r--r--sca-cpp/trunk/test/store-cpp/store.composite2
-rw-r--r--sca-cpp/trunk/test/store-java/store.composite2
-rw-r--r--sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java16
-rw-r--r--sca-cpp/trunk/test/store-python/store.composite2
-rw-r--r--sca-cpp/trunk/test/store-scheme/store.composite2
19 files changed, 96 insertions, 48 deletions
diff --git a/sca-cpp/trunk/components/cache/Makefile.am b/sca-cpp/trunk/components/cache/Makefile.am
index d9ab3f805b..b7397c64da 100644
--- a/sca-cpp/trunk/components/cache/Makefile.am
+++ b/sca-cpp/trunk/components/cache/Makefile.am
@@ -18,14 +18,14 @@
comp_SCRIPTS = memcached-start memcached-stop
compdir=$(prefix)/components/cache
-comp_LTLIBRARIES = libmcache.la
-libmcache_la_SOURCES = mcache.cpp
+comp_LTLIBRARIES = libmemcache.la
+libmemcache_la_SOURCES = memcache.cpp
-mcache_test_SOURCES = mcache-test.cpp
-mcache_test_LDFLAGS = -lxml2
+memcache_test_SOURCES = memcache-test.cpp
+memcache_test_LDFLAGS = -lxml2
client_test_SOURCES = client-test.cpp
client_test_LDFLAGS = -lxml2 -lcurl -lmozjs
-noinst_PROGRAMS = mcache-test client-test
+noinst_PROGRAMS = memcache-test client-test
TESTS = memcached-test server-test
diff --git a/sca-cpp/trunk/components/cache/client-test.cpp b/sca-cpp/trunk/components/cache/client-test.cpp
index ddf093a6dc..e3ec449e69 100644
--- a/sca-cpp/trunk/components/cache/client-test.cpp
+++ b/sca-cpp/trunk/components/cache/client-test.cpp
@@ -36,7 +36,7 @@
namespace tuscany {
namespace cache {
-const string uri("http://localhost:8090/mcache");
+const string uri("http://localhost:8090/memcache");
bool testCache() {
http::CURLSession cs;
diff --git a/sca-cpp/trunk/components/cache/mcache-test.cpp b/sca-cpp/trunk/components/cache/memcache-test.cpp
index 316372c5be..bc590fa047 100644
--- a/sca-cpp/trunk/components/cache/mcache-test.cpp
+++ b/sca-cpp/trunk/components/cache/memcache-test.cpp
@@ -27,7 +27,7 @@
#include "stream.hpp"
#include "string.hpp"
#include "perf.hpp"
-#include "mcache.hpp"
+#include "memcache.hpp"
namespace tuscany {
namespace cache {
diff --git a/sca-cpp/trunk/components/cache/mcache.composite b/sca-cpp/trunk/components/cache/memcache.composite
index 15411dd702..c9a147960e 100644
--- a/sca-cpp/trunk/components/cache/mcache.composite
+++ b/sca-cpp/trunk/components/cache/memcache.composite
@@ -20,12 +20,12 @@
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://tuscany.apache.org/xmlns/sca/components"
- name="mcache">
+ name="memcache">
- <component name="mcache">
- <implementation.cpp path=".libs" library="libmcache"/>
- <service name="mcache">
- <t:binding.http uri="mcache"/>
+ <component name="memcache">
+ <implementation.cpp path=".libs" library="libmemcache"/>
+ <service name="memcache">
+ <t:binding.http uri="memcache"/>
</service>
</component>
diff --git a/sca-cpp/trunk/components/cache/mcache.cpp b/sca-cpp/trunk/components/cache/memcache.cpp
index 782de605c6..304975614e 100644
--- a/sca-cpp/trunk/components/cache/mcache.cpp
+++ b/sca-cpp/trunk/components/cache/memcache.cpp
@@ -31,10 +31,10 @@
#include "list.hpp"
#include "value.hpp"
#include "monad.hpp"
-#include "mcache.hpp"
+#include "memcache.hpp"
namespace tuscany {
-namespace mcache {
+namespace memcache {
/**
* Get an item from the cache.
@@ -126,7 +126,7 @@ extern "C" {
const tuscany::value apply(const tuscany::list<tuscany::value>& params) {
const tuscany::value func(car(params));
if (func == "start")
- return tuscany::mcache::start(cdr(params));
+ return tuscany::memcache::start(cdr(params));
return tuscany::mkfailure<tuscany::value>();
}
diff --git a/sca-cpp/trunk/components/cache/mcache.hpp b/sca-cpp/trunk/components/cache/memcache.hpp
index 4751975099..c630f6fd55 100644
--- a/sca-cpp/trunk/components/cache/mcache.hpp
+++ b/sca-cpp/trunk/components/cache/memcache.hpp
@@ -19,8 +19,8 @@
/* $Rev$ $Date$ */
-#ifndef tuscany_mcache_hpp
-#define tuscany_mcache_hpp
+#ifndef tuscany_memcache_hpp
+#define tuscany_memcache_hpp
/**
* Memcached access functions.
@@ -121,7 +121,7 @@ const failable<bool> put(const value& key, const value& val, const MemCached& ca
const string vs(scheme::writeValue(val));
const apr_status_t rc = apr_memcache_set(cache.mc, c_str(ks), const_cast<char*>(c_str(vs)), length(vs), 0, 27);
if (rc != APR_SUCCESS)
- return mkfailure<bool>("Could not add entry");
+ return mkfailure<bool>("Could not set entry");
debug(true, "cache::put::result");
return true;
@@ -172,4 +172,4 @@ const failable<bool> del(const value& key, const MemCached& cache) {
}
}
-#endif /* tuscany_mcache_hpp */
+#endif /* tuscany_memcache_hpp */
diff --git a/sca-cpp/trunk/components/cache/memcached-stop b/sca-cpp/trunk/components/cache/memcached-stop
index b999228b46..bd2c208f46 100755
--- a/sca-cpp/trunk/components/cache/memcached-stop
+++ b/sca-cpp/trunk/components/cache/memcached-stop
@@ -20,4 +20,4 @@
# Stop memcached
mc="memcached -l 127.0.0.1 -m 4 -p 11211"
-kill `ps -f | grep -v grep | grep "${mc}" | awk '{ print $2 }'`
+kill `ps -ef | grep -v grep | grep "${mc}" | awk '{ print $2 }'`
diff --git a/sca-cpp/trunk/components/cache/memcached-test b/sca-cpp/trunk/components/cache/memcached-test
index d4b9c04eda..842e8d2030 100755
--- a/sca-cpp/trunk/components/cache/memcached-test
+++ b/sca-cpp/trunk/components/cache/memcached-test
@@ -22,7 +22,7 @@
sleep 1
# Test
-./mcache-test 2>/dev/null
+./memcache-test 2>/dev/null
rc=$?
# Cleanup
diff --git a/sca-cpp/trunk/components/cache/server-test b/sca-cpp/trunk/components/cache/server-test
index 4942f547bc..a77736f33c 100755
--- a/sca-cpp/trunk/components/cache/server-test
+++ b/sca-cpp/trunk/components/cache/server-test
@@ -23,7 +23,7 @@
../../modules/server/scheme-conf tmp
cat >>tmp/conf/httpd.conf <<EOF
SCAContribution `pwd`/
-SCAComposite mcache.composite
+SCAComposite memcache.composite
EOF
./memcached-start
diff --git a/sca-cpp/trunk/components/queue/qpidd-stop b/sca-cpp/trunk/components/queue/qpidd-stop
index 6fb0467cff..3baf2fee27 100755
--- a/sca-cpp/trunk/components/queue/qpidd-stop
+++ b/sca-cpp/trunk/components/queue/qpidd-stop
@@ -23,4 +23,4 @@ here=`readlink -f $0`; here=`dirname $here`
qpid_prefix=`cat $here/qpidc.prefix`
qpidd="$qpid_prefix/sbin/qpidd"
-kill `ps -f | grep -v grep | grep "${qpidd}" | awk '{ print $2 }'`
+kill `ps -ef | grep -v grep | grep "${qpidd}" | awk '{ print $2 }'`
diff --git a/sca-cpp/trunk/etc/git-exclude b/sca-cpp/trunk/etc/git-exclude
index f2d3d08eda..dc92823c14 100644
--- a/sca-cpp/trunk/etc/git-exclude
+++ b/sca-cpp/trunk/etc/git-exclude
@@ -80,7 +80,7 @@ eval-shell
json-test
cache-test
client-test
-mcache-test
+memcache-test
curl-test
scdl-test
jni-test
diff --git a/sca-cpp/trunk/modules/java/eval.hpp b/sca-cpp/trunk/modules/java/eval.hpp
index 7da1f20a38..a1cf6ae576 100644
--- a/sca-cpp/trunk/modules/java/eval.hpp
+++ b/sca-cpp/trunk/modules/java/eval.hpp
@@ -26,6 +26,7 @@
* Java component implementation evaluation logic.
*/
#include <jni.h>
+#include <apr_uuid.h>
#include "list.hpp"
#include "value.hpp"
@@ -46,6 +47,7 @@ namespace java {
* Represent a Java VM runtime.
*/
jobject JNICALL nativeInvoke(JNIEnv *env, jobject self, jobject proxy, jobject method, jobjectArray args);
+jobject JNICALL nativeUUID(JNIEnv *env);
class JavaRuntime {
public:
@@ -133,13 +135,21 @@ public:
iterableIsNil = env->GetStaticMethodID(iterableUtilClass, "isNil", "(Ljava/lang/Object;)Z");
iterableCar = env->GetStaticMethodID(iterableUtilClass, "car", "(Ljava/lang/Object;)Ljava/lang/Object;");
iterableCdr = env->GetStaticMethodID(iterableUtilClass, "cdr", "(Ljava/lang/Object;)Ljava/lang/Iterable;");
+ uuidClass = env->FindClass("org/apache/tuscany/UUIDUtil");
// Register our native invocation handler function
- JNINativeMethod nm;
- nm.name = const_cast<char*>("invoke");
- nm.signature = const_cast<char*>("(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;");
- nm.fnPtr = (void*)nativeInvoke;
- env->RegisterNatives(invokerClass, &nm, 1);
+ JNINativeMethod invokenm;
+ invokenm.name = const_cast<char*>("invoke");
+ invokenm.signature = const_cast<char*>("(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;");
+ invokenm.fnPtr = (void*)nativeInvoke;
+ env->RegisterNatives(invokerClass, &invokenm, 1);
+
+ // Register our native UUID function
+ JNINativeMethod uuidnm;
+ uuidnm.name = const_cast<char*>("uuid");
+ uuidnm.signature = const_cast<char*>("()Ljava/lang/String;");
+ uuidnm.fnPtr = (void*)nativeUUID;
+ env->RegisterNatives(uuidClass, &uuidnm, 1);
}
JavaVM* jvm;
@@ -173,6 +183,7 @@ public:
jmethodID iterableCar;
jmethodID iterableCdr;
jmethodID iterableIsNil;
+ jclass uuidClass;
};
/**
@@ -247,8 +258,8 @@ public:
};
/**
- * Invocation handler invoke method, dispatches to the lambda function wrapped
- * in the invocation handler.
+ * Native implementation of the InvocationHandler.invoke Java method.
+ * Dispatches the call to the lambda function wrapped in the invocation handler.
*/
jobject JNICALL nativeInvoke(JNIEnv* env, jobject self, unused jobject proxy, jobject method, jobjectArray args) {
@@ -277,6 +288,19 @@ jobject JNICALL nativeInvoke(JNIEnv* env, jobject self, unused jobject proxy, jo
}
/**
+ * Native implementation of IterableUtil.uuid. We are providing a native implementation
+ * of this function as java.util.UUID seems to behave differently with different JDKs.
+ */
+jobject JNICALL nativeUUID(JNIEnv* env) {
+ apr_uuid_t uuid;
+ apr_uuid_get(&uuid);
+ char buf[APR_UUID_FORMATTED_LENGTH];
+ apr_uuid_format(buf, &uuid);
+ string s(buf, APR_UUID_FORMATTED_LENGTH);
+ return env->NewStringUTF(c_str(s));
+}
+
+/**
* Convert a lambda function to Java proxy.
*/
const jobject mkJavaLambda(const JavaRuntime& jr, unused const value& iface, const lambda<value(const list<value>&)>& l) {
diff --git a/sca-cpp/trunk/modules/java/org/apache/tuscany/UUIDUtil.java b/sca-cpp/trunk/modules/java/org/apache/tuscany/UUIDUtil.java
new file mode 100644
index 0000000000..60076c62ca
--- /dev/null
+++ b/sca-cpp/trunk/modules/java/org/apache/tuscany/UUIDUtil.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.tuscany;
+
+/**
+ * A fast and portable UUID generator function.
+ */
+public class UUIDUtil {
+
+ /**
+ * Return a UUID.
+ */
+ public static native String uuid();
+
+}
diff --git a/sca-cpp/trunk/modules/wsgi/wsgi-stop b/sca-cpp/trunk/modules/wsgi/wsgi-stop
index fa6f42d643..d1e09185f4 100755
--- a/sca-cpp/trunk/modules/wsgi/wsgi-stop
+++ b/sca-cpp/trunk/modules/wsgi/wsgi-stop
@@ -24,4 +24,4 @@ port=$1
python_prefix=`cat $here/../python/python.prefix`
py="$python_prefix/bin/python composite.py $port"
-kill `ps -f | grep -v grep | grep "${py}" | awk '{ print $2 }'`
+kill `ps -ef | grep -v grep | grep "${py}" | awk '{ print $2 }'`
diff --git a/sca-cpp/trunk/test/store-cpp/store.composite b/sca-cpp/trunk/test/store-cpp/store.composite
index 3839a8b816..056f7b4c68 100644
--- a/sca-cpp/trunk/test/store-cpp/store.composite
+++ b/sca-cpp/trunk/test/store-cpp/store.composite
@@ -50,7 +50,7 @@
</component>
<component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmcache"/>
+ <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
diff --git a/sca-cpp/trunk/test/store-java/store.composite b/sca-cpp/trunk/test/store-java/store.composite
index 5024d79ee6..8d733db134 100644
--- a/sca-cpp/trunk/test/store-java/store.composite
+++ b/sca-cpp/trunk/test/store-java/store.composite
@@ -50,7 +50,7 @@
</component>
<component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmcache"/>
+ <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
diff --git a/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java b/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
index 6620cbbbb0..878e0cff49 100644
--- a/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
+++ b/sca-cpp/trunk/test/store-java/store/ShoppingCartImpl.java
@@ -14,14 +14,13 @@
* "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.
+ * under the License.
*/
package store;
import static org.apache.tuscany.IterableUtil.*;
-
-import java.util.UUID;
+import static org.apache.tuscany.UUIDUtil.*;
import org.apache.tuscany.Service;
@@ -44,17 +43,10 @@ public class ShoppingCartImpl {
}
/**
- * Returns a UUID.
- */
- String uuid() {
- return UUID.randomUUID().toString();
- }
-
- /**
* Post a new item to the cart. Create a new cart if necessary.
*/
public Iterable<String> post(final Iterable<String> collection, final Iterable<?> item, final Service cache) {
- final String id = this.uuid();
+ final String id = uuid();
final Iterable<?> newItem = list(car(item), id, caddr(item));
final Iterable<?> cart = cons(newItem, this.getcart(cartId, cache));
final Iterable<String> iid = list(cartId);
@@ -65,7 +57,7 @@ public class ShoppingCartImpl {
/**
* Find an item in the cart.
*/
- public Iterable<?> find(final String id, final Iterable<?> cart) {
+ Iterable<?> find(final String id, final Iterable<?> cart) {
if(isNil(cart))
return cons("Item", list("0", list()));
if(id.equals(cadr(car(cart))))
diff --git a/sca-cpp/trunk/test/store-python/store.composite b/sca-cpp/trunk/test/store-python/store.composite
index 8dc9950204..889f514624 100644
--- a/sca-cpp/trunk/test/store-python/store.composite
+++ b/sca-cpp/trunk/test/store-python/store.composite
@@ -60,7 +60,7 @@
</component>
<component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmcache"/>
+ <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>
diff --git a/sca-cpp/trunk/test/store-scheme/store.composite b/sca-cpp/trunk/test/store-scheme/store.composite
index 94e066acad..36b155b595 100644
--- a/sca-cpp/trunk/test/store-scheme/store.composite
+++ b/sca-cpp/trunk/test/store-scheme/store.composite
@@ -60,7 +60,7 @@
</component>
<component name="Cache">
- <implementation.cpp path="../../components/cache/.libs" library="libmcache"/>
+ <implementation.cpp path="../../components/cache/.libs" library="libmemcache"/>
<service name="Cache">
<t:binding.atom uri="cache"/>
</service>