tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fm...@apache.org
Subject svn commit: r1124666 [2/2] - in /tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime: ./ META-INF/ src/ src/main/ src/main/java/ src/main/java/META-INF/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tuscany/ src/...
Date Thu, 19 May 2011 10:24:08 GMT
Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.atmosphere.js
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.atmosphere.js?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.atmosphere.js
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.atmosphere.js
Thu May 19 10:24:06 2011
@@ -0,0 +1,534 @@
+/**
+ * Licensed 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.
+ */
+jQuery.atmosphere = function()
+{
+    var activeRequest;
+    $(window).unload(function()
+    {
+        if (activeRequest)
+            activeRequest.abort();
+    });
+
+    return {
+        version : 0.7,
+        response : {
+            status: 200,
+            responseBody : '',
+            headers : [],
+            state : "messageReceived",
+            transport : "polling",
+            push : [],
+            error: null,
+            id : 0
+        },
+
+        request : {},
+        logLevel : 'info',
+        callbacks: [],
+        activeTransport : null,
+        websocket : null,
+        killHiddenIFrame : null,
+
+        subscribe: function(url, callback, request)
+        {
+            jQuery.atmosphere.request = jQuery.extend({
+                timeout: 300000,
+                method: 'GET',
+                headers: {},
+                contentType : "text/html;charset=ISO-8859-1",
+                cache: true,
+                async: true,
+                ifModified: false,
+                callback: null,
+                dataType: '',
+                url : url,
+                data : '',
+                suspend : true,
+                maxRequest : 60,
+                lastIndex : 0,
+                logLevel :  'info',
+                requestCount : 0,
+                fallbackTransport : 'streaming',
+                transport : 'long-polling'
+
+            }, request);
+
+            logLevel = jQuery.atmosphere.request.logLevel || 'info';
+            if (callback != null) {
+                jQuery.atmosphere.addCallback(callback);
+                jQuery.atmosphere.request.callback = callback;
+            }
+
+            if (jQuery.atmosphere.request.transport != jQuery.atmosphere.activeTransport)
{
+                jQuery.atmosphere.closeSuspendedConnection();
+            }
+            jQuery.atmosphere.activeTransport = jQuery.atmosphere.request.transport;
+
+            if (jQuery.atmosphere.request.transport != 'websocket') {
+                jQuery.atmosphere.executeRequest();
+            } else if (jQuery.atmosphere.request.transport == 'websocket') {
+                if (!window.WebSocket) {
+                    jQuery.atmosphere.log(logLevel, ["Websocket is not supported, using request.fallbackTransport"]);
+                    jQuery.atmosphere.request.transport = jQuery.atmosphere.request.fallbackTransport;
+                    jQuery.atmosphere.executeRequest();
+                }
+                else {
+                    jQuery.atmosphere.executeWebSocket();
+                }
+            }
+        },
+
+        /**
+         * Always make sure one transport is used, not two at the same time except for Websocket.
+         */
+        closeSuspendedConnection : function () {
+            if (activeRequest != null) {
+                activeRequest.abort();
+            }
+
+            if (jQuery.atmosphere.websocket != null) {
+                jQuery.atmosphere.websocket.close();
+                jQuery.atmosphere.websocket = null;
+            }
+        },
+
+        executeRequest: function()
+        {
+
+            if (jQuery.atmosphere.request.transport == 'streaming') {
+                if ($.browser.msie) {
+                    jQuery.atmosphere.ieStreaming();
+                    return;
+                } else if ((typeof window.addEventStream) == 'function') {
+                    jQuery.atmosphere.operaStreaming();
+                    return;
+                }
+            }
+
+            if (jQuery.atmosphere.request.requestCount++ < jQuery.atmosphere.request.maxRequest)
{
+                jQuery.atmosphere.response.push = function (url)
+                {
+                    jQuery.atmosphere.request.callback = null;
+                    jQuery.atmosphere.publish(url, null, jQuery.atmosphere.request);
+                };
+
+                var request = jQuery.atmosphere.request;
+                var response = jQuery.atmosphere.response;
+                if (request.transport != 'polling') {
+                    response.transport = request.transport;
+                }
+
+                var ajaxRequest;
+                var error = false;
+                if ($.browser.msie) {
+                    var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]
+                    for (var i = 0; i < activexmodes.length; i++) {
+                        try {
+                            ajaxRequest = new ActiveXObject(activexmodes[i])
+                        }
+                        catch(e) {
+                        }
+                    }
+                } else if (window.XMLHttpRequest) {
+                    ajaxRequest = new XMLHttpRequest();
+                }
+
+                if (request.suspend) {
+                    activeRequest = ajaxRequest;
+                }
+
+                ajaxRequest.open(request.method, request.url, true);
+                ajaxRequest.setRequestHeader("X-Atmosphere-Framework", jQuery.atmosphere.version);
+                ajaxRequest.setRequestHeader("X-Atmosphere-Transport", request.transport);
+                ajaxRequest.setRequestHeader("X-Cache-Date", new Date());
+
+                if (!$.browser.msie) {
+                    ajaxRequest.onerror = function()
+                    {
+                        error = true;
+                        try {
+                            response.status = XMLHttpRequest.status;
+                        }
+                        catch(e) {
+                            response.status = 404;
+                        }
+
+                        response.state = "error";
+                        jQuery.atmosphere.invokeCallback(response);
+                        ajaxRequest.abort();
+                        activeRequest = null;
+                    }
+                }
+
+                ajaxRequest.onreadystatechange = function()
+                {
+                    var junkForWebkit = false;
+                    var update = false;
+                    if (ajaxRequest.readyState == 4) {
+                        jQuery.atmosphere.request = request;
+                        if (request.suspend && ajaxRequest.status == 200) {
+                            jQuery.atmosphere.executeRequest();
+                        }
+
+                        if ($.browser.msie) {
+                            update = true;
+                        }
+                    } else if (!$.browser.msie && ajaxRequest.readyState == 3 &&
ajaxRequest.status == 200) {
+                        update = true;
+                    } else {
+                        clearTimeout(request.id);
+                    }
+
+                    if (update) {
+                        if (request.transport == 'streaming') {
+                            response.responseBody = ajaxRequest.responseText.substring(request.lastIndex,
ajaxRequest.responseText.length);
+                            request.lastIndex = ajaxRequest.responseText.length;
+
+                            if (response.responseBody.indexOf("<!--") != -1) {
+                                junkForWebkit = true;
+                            }
+
+                        } else {
+                            response.responseBody = ajaxRequest.responseText;
+                        }
+
+                        if (response.responseBody.indexOf("parent.callback") != -1) {
+                            var start = response.responseBody.indexOf("('") + 2;
+                            var end = response.responseBody.indexOf("')");
+                            response.responseBody = response.responseBody.substring(start,
end);
+                        }
+
+                        if (junkForWebkit) return;
+
+                        try {
+                            response.status = ajaxRequest.status;
+                            response.headers = ajaxRequest.getAllResponseHeaders();
+                        }
+                        catch(e) {
+                            response.status = 404;
+                        }
+
+                        if (request.suspend) {
+                            response.state = "messageReceived";
+                        } else {
+                            response.state = "messagePublished";
+                        }
+                        jQuery.atmosphere.invokeCallback(response);
+                    }
+                }
+                ajaxRequest.send(request.data);
+
+                if (request.suspend) {
+                    request.id = setTimeout(function()
+                    {
+                        ajaxRequest.abort();
+                        jQuery.atmosphere.subscribe(request.url, null, request);
+
+                    }, request.timeout);
+                }
+            } else {
+                jQuery.atmosphere.log(logLevel, ["Max re-connection reached."]);
+            }
+        },
+
+        operaStreaming: function()
+        {
+
+            var url = jQuery.atmosphere.request.url;
+            var es = document.createElement('event-source');
+            var response = jQuery.atmosphere.response;
+
+            jQuery.atmosphere.response.push = function (url)
+            {
+                jQuery.atmosphere.request.transport = 'polling';
+                jQuery.atmosphere.request.callback = null;
+                jQuery.atmosphere.publish(url, null, jQuery.atmosphere.request);
+            };
+            
+            es.setAttribute('src', url);
+            // without this check opera 9.5 would make two connections.
+            if (opera.version() < 9.5) {
+                document.body.appendChild(es);
+            }
+
+            var operaCallback = function (event) {
+                if (event.data) {
+                    var junkForWebkit = false;
+                    
+                    response.responseBody = event.data;
+                    if (event.data.indexOf("<!--") != -1) {
+                        junkForWebkit = true;
+                    }
+
+                    if (response.responseBody.indexOf("parent.callback") != -1) {
+                        var start = response.responseBody.indexOf("('") + 2;
+                        var end = response.responseBody.indexOf("')");
+                        response.responseBody = response.responseBody.substring(start, end);
+                    }
+
+                    if (junkForWebkit) return;
+
+                    response.state = "messageReceived";
+                    jQuery.atmosphere.invokeCallback(response);
+                }
+            };
+
+            es.addEventListener('payload', operaCallback, false);
+
+        },
+
+        ieStreaming : function()
+        {
+            var url = jQuery.atmosphere.request.url;
+            jQuery.atmosphere.response.push = function (url)
+            {
+                jQuery.atmosphere.request.transport = 'polling';
+                jQuery.atmosphere.request.callback = null;
+                jQuery.atmosphere.publish(url, null, jQuery.atmosphere.request);
+            };
+
+            transferDoc = new ActiveXObject("htmlfile");
+            transferDoc.open();
+            transferDoc.close();
+            var ifrDiv = transferDoc.createElement("div");
+            transferDoc.body.appendChild(ifrDiv);
+            ifrDiv.innerHTML = "<iframe src='" + url + "'></iframe>";
+            transferDoc.parentWindow.callback = jQuery.atmosphere.streamingCallback;
+        }
+        ,
+
+        streamingCallback : function(args)
+        {
+            var response = jQuery.atmosphere.response;
+            response.transport = "streaming";
+            response.status = 200;
+            response.responseBody = args;
+            response.state = "messageReceived";
+
+            jQuery.atmosphere.invokeCallback(response);
+        }
+        ,
+
+        executeWebSocket : function()
+        {
+            var request = jQuery.atmosphere.request;
+            jQuery.atmosphere.log(logLevel, ["Invoking executeWebSocket"]);
+            jQuery.atmosphere.response.transport = "websocket";
+            var url = jQuery.atmosphere.request.url;
+            var callback = jQuery.atmosphere.request.callback;
+            var location = url.replace('http:', 'ws:').replace('https:', 'wss:');
+
+            var websocket = new WebSocket(location);
+            jQuery.atmosphere.websocket = websocket;
+
+            jQuery.atmosphere.response.push = function (url)
+            {
+                var data;
+                var ws = jQuery.atmosphere.websocket;
+                try {
+                    data = jQuery.atmosphere.request.data;
+                    ws.send(jQuery.atmosphere.request.data);
+                } catch (e) {
+                    jQuery.atmosphere.log(logLevel, ["Websocket failed. Downgrading to Comet
and resending " + data]);
+                    // Websocket is not supported, reconnect using the fallback transport.
+                    request.transport = request.fallbackTransport;
+                    jQuery.atmosphere.request = request;
+                    jQuery.atmosphere.executeRequest();
+
+                    // Repost the data.
+                    jQuery.atmosphere.request.suspend = false;
+                    jQuery.atmosphere.request.method = 'POST';
+                    jQuery.atmosphere.request.data = data;
+                    jQuery.atmosphere.response.state = 'messageReceived';
+                    jQuery.atmosphere.response.transport = request.fallbackTransport;
+                    jQuery.atmosphere.publish(url, null, jQuery.atmosphere.request);
+
+                    ws.onclose = function(message) {
+                    }
+                    ws.close();
+                }
+            };
+
+            websocket.onopen = function(message)
+            {
+                jQuery.atmosphere.response.state = 'openning';
+                jQuery.atmosphere.invokeCallback(jQuery.atmosphere.response);
+            };
+
+            websocket.onmessage = function(message)
+            {
+                var data = message.data;
+                if (data.indexOf("parent.callback") != -1) {
+                    var start = data.indexOf("('") + 2;
+                    var end = data.indexOf("')");
+                    jQuery.atmosphere.response.responseBody = data.substring(start, end);
+                }
+                else {
+                    jQuery.atmosphere.response.responseBody = data;
+                }
+                jQuery.atmosphere.invokeCallback(jQuery.atmosphere.response);
+            };
+
+            websocket.onerror = function(message)
+            {
+                jQuery.atmosphere.response.state = 'error';
+                jQuery.atmosphere.invokeCallback(jQuery.atmosphere.response);
+            };
+
+            websocket.onclose = function(message)
+            {
+                jQuery.atmosphere.response.state = 'closed';
+                jQuery.atmosphere.invokeCallback(jQuery.atmosphere.response);
+            };
+        }
+        ,
+
+        addCallback: function(func)
+        {
+            if (jQuery.inArray(func, jQuery.atmosphere.callbacks) == -1) {
+                jQuery.atmosphere.callbacks.push(func);
+            }
+        }
+        ,
+
+        removeCallback: function(func)
+        {
+            if (jQuery.inArray(func, jQuery.atmosphere.callbacks) != -1) {
+                jQuery.atmosphere.callbacks.splice(index);
+            }
+        }
+        ,
+
+        invokeCallback: function(response)
+        {
+            var call = function (index, func)
+            {
+                func(response);
+            };
+
+            jQuery.atmosphere.log(logLevel, ["Invoking " + jQuery.atmosphere.callbacks.length
+ " callbacks"]);
+            if (jQuery.atmosphere.callbacks.length > 0) {
+                jQuery.each(jQuery.atmosphere.callbacks, call);
+            }
+        }
+        ,
+
+        publish: function(url, callback, request)
+        {
+            jQuery.atmosphere.request = jQuery.extend({
+                connected: false,
+                timeout: 60000,
+                method: 'POST',
+                headers: {},
+                cache: true,
+                async: true,
+                ifModified: false,
+                callback: null,
+                dataType: '',
+                url : url,
+                data : '',
+                suspend : false,
+                maxRequest : 60,
+                logLevel :  'info',
+                requestCount : 0,
+                transport: 'polling'
+            }, request);
+
+            if (callback != null) {
+                jQuery.atmosphere.addCallback(callback);
+            }
+            jQuery.atmosphere.request.transport = 'polling';
+            if (jQuery.atmosphere.request.transport != 'websocket') {
+                jQuery.atmosphere.executeRequest();
+            } else if (jQuery.atmosphere.request.transport == 'websocket') {
+                if (!window.WebSocket) {
+                    alert("WebSocket not supported by this browser");
+                }
+                else {
+                    jQuery.atmosphere.executeWebSocket();
+                }
+            }
+        }
+        ,
+
+        unload: function (arg) {
+            if (window.addEventListener) {
+                document.addEventListener('unload', arg, false);
+                window.addEventListener('unload', arg, false);
+            } else { // IE
+                document.attachEvent('onunload', arg);
+                window.attachEvent('onunload', arg);
+            }
+        }
+        ,
+
+        kill_load_bar : function() {
+            if (jQuery.atmosphere.killHiddenIFrame == null) {
+                jQuery.atmosphere.killHiddenIFrame = document.createElement('iframe');
+                var ifr = jQuery.atmosphere.killHiddenIFrame;
+                ifr.style.display = 'block';
+                ifr.style.width = '0';
+                ifr.style.height = '0';
+                ifr.style.border = '0';
+                ifr.style.margin = '0';
+                ifr.style.padding = '0';
+                ifr.style.overflow = 'hidden';
+                ifr.style.visibility = 'hidden';
+            }
+            document.body.appendChild(ifr);
+            ifr.src = 'about:blank';
+            document.body.removeChild(ifr);
+        }
+        ,
+
+        log: function (level, args)
+        {
+            if (window.console)
+            {
+                var logger = window.console[level];
+                if (typeof logger == 'function')
+                {
+                    logger.apply(window.console, args);
+                }
+            }
+        }
+        ,
+
+        warn: function()
+        {
+            log('warn', arguments);
+        }
+        ,
+
+
+        info :function()
+        {
+            if (logLevel != 'warn')
+            {
+                log('info', arguments);
+            }
+        }
+        ,
+
+        debug: function()
+        {
+            if (logLevel == 'debug')
+            {
+                log('debug', arguments);
+            }
+        }
+    }
+
+}
+        ();
\ No newline at end of file

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.json-2.2.min.js
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.json-2.2.min.js?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.json-2.2.min.js
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.json-2.2.min.js
Thu May 19 10:24:06 2011
@@ -0,0 +1,31 @@
+
+(function($){$.toJSON=function(o)
+{if(typeof(JSON)=='object'&&JSON.stringify)
+return JSON.stringify(o);var type=typeof(o);if(o===null)
+return"null";if(type=="undefined")
+return undefined;if(type=="number"||type=="boolean")
+return o+"";if(type=="string")
+return $.quoteString(o);if(type=='object')
+{if(typeof o.toJSON=="function")
+return $.toJSON(o.toJSON());if(o.constructor===Date)
+{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var
year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var
seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
+hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
+if(o.constructor===Array)
+{var ret=[];for(var i=0;i<o.length;i++)
+ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
+var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
+name='"'+k+'"';else if(type=="string")
+name=$.quoteString(k);else
+continue;if(typeof o[k]=="function")
+continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
+return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
+{if(typeof(JSON)=='object'&&JSON.parse)
+return JSON.parse(src);return eval("("+src+")");};$.secureEvalJSON=function(src)
+{if(typeof(JSON)=='object'&&JSON.parse)
+return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
+return eval("("+src+")");else
+throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
+{if(string.match(_escapeable))
+{return'"'+string.replace(_escapeable,function(a)
+{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
+return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);
\ No newline at end of file

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/CometTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/CometTestCase.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/CometTestCase.java
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/CometTestCase.java
Thu May 19 10:24:06 2011
@@ -0,0 +1,55 @@
+/*
+ * 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.sca.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.http.jetty.JettyServer;
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.ContributionLocationHelper;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+
+/**
+ * Test case for the comet binding.
+ */
+public class CometTestCase extends TestCase {
+
+    /**
+     * Test consisting in starting up a node containing services exposed via the
+     * comet binding.
+     */
+    public void testComet() {
+        JettyServer.portDefault = 8085;
+        try {
+            final String location = ContributionLocationHelper.getContributionLocation("test.composite");
+            final Node node = NodeFactory.newInstance().createNode("test.composite", new
Contribution("c1", location));
+            node.start();
+            // System.out.println("Press any key to stop the node.");
+            // System.in.read();
+            node.stop();
+        } catch (final Exception e) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockService.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockService.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockService.java
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockService.java
Thu May 19 10:24:06 2011
@@ -0,0 +1,28 @@
+/*
+ * 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.sca.test;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+@Remotable
+public interface StockService {
+
+    String getQuotes();
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockServiceImpl.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockServiceImpl.java
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockServiceImpl.java
Thu May 19 10:24:06 2011
@@ -0,0 +1,39 @@
+/*
+ * 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.sca.test;
+
+import java.text.DecimalFormat;
+import java.util.Date;
+import java.util.Random;
+
+import org.oasisopen.sca.annotation.Service;
+
+@Service(StockService.class)
+public class StockServiceImpl implements StockService {
+
+    public static final int MAX_VALUE = 1000;
+    private final Random random = new Random(new Date().getTime());
+
+    @Override
+    public String getQuotes() {
+        final Double value = Math.abs(this.random.nextDouble() * this.random.nextInt(StockServiceImpl.MAX_VALUE));
+        return "ASF" + "#" + Double.valueOf(new DecimalFormat("#.##").format(value));
+    }
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/resources/test.composite
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/resources/test.composite?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/resources/test.composite
(added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/resources/test.composite
Thu May 19 10:24:06 2011
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+           targetNamespace="http://samples"
+           name="Stock">
+
+	<component name="test">
+		<implementation.java class="org.apache.tuscany.sca.test.StockServiceImpl"/>
+		<service name="StockService">
+			<interface.java interface="org.apache.tuscany.sca.test.StockService"/>
+			<tuscany:binding.comet/>
+		</service>
+	</component>
+	
+</composite>
\ No newline at end of file



Mime
View raw message