You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fm...@apache.org on 2011/05/19 12:24:08 UTC

svn commit: r1124666 [1/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/...

Author: fmoga
Date: Thu May 19 10:24:06 2011
New Revision: 1124666

URL: http://svn.apache.org/viewvc?rev=1124666&view=rev
Log:
Import work in progress code for comet binding runtime

Added:
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/LICENSE
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/NOTICE
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/pom.xml
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometAsyncResponseInvoker.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometBindingProviderFactory.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometComponentContext.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometInvoker.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometMessageContext.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometReferenceBindingProvider.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometServiceBindingProvider.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/callback/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/callback/CometCallback.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptGenerator.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptResource.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/cometComponentContext.js
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.atmosphere.js
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/jquery.json-2.2.min.js
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/CometTestCase.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockService.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/java/org/apache/tuscany/sca/test/StockServiceImpl.java
    tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/test/resources/
    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/LICENSE
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/LICENSE?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/LICENSE (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/LICENSE Thu May 19 10:24:06 2011
@@ -0,0 +1,238 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+===============================================================================================================
+
+Apache Tuscany SCA for Java Subcomponents
+=========================================: 
+
+The Tuscany SCA for Java release includes a number of subcomponents with
+separate copyright notices and license terms. Your use of the source
+code for the these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+=================================================================================================================
+
+This module includes files under the following MIT license:
+
+Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/MANIFEST.MF?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/MANIFEST.MF (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/META-INF/MANIFEST.MF Thu May 19 10:24:06 2011
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+SCA-Version: 1.1
+Bundle-Name: Apache Tuscany SCA Comet Binding Model
+Bundle-Vendor: The Apache Software Foundation
+Bundle-Version: 2.0.0
+Bundle-ManifestVersion: 2
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-Description: Apache Tuscany SCA Comet Binding Model
+Import-Package: javax.servlet;version="2.5.0",
+ javax.servlet.http;version="2.5.0",
+ org.apache.commons.codec,
+ org.apache.commons.codec.net,
+ org.apache.http,
+ org.apache.http.client,
+ org.apache.http.client.methods,
+ org.apache.http.client.utils,
+ org.apache.http.conn,
+ org.apache.http.impl.client,
+ org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.binding.comet;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.host.http;version="2.0.0",
+ org.apache.tuscany.sca.interfacedef;version="2.0.0",
+ org.apache.tuscany.sca.invocation;version="2.0.0",
+ org.apache.tuscany.sca.provider;version="2.0.0",
+ org.apache.tuscany.sca.runtime;version="2.0.0",
+ org.codehaus.jackson,
+ org.codehaus.jackson.map
+Bundle-SymbolicName: org.apache.tuscany.sca.binding.comet.runtime
+Bundle-DocURL: http://www.apache.org/
+Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/NOTICE
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/NOTICE?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/NOTICE (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/NOTICE Thu May 19 10:24:06 2011
@@ -0,0 +1,6 @@
+${pom.name}
+Copyright (c) 2005 - 2011 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/pom.xml?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/pom.xml (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/pom.xml Thu May 19 10:24:06 2011
@@ -0,0 +1,86 @@
+<?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.
+-->
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.tuscany.sca</groupId>
+		<artifactId>tuscany-modules</artifactId>
+		<version>2.0-SNAPSHOT</version>
+		<relativePath>../pom.xml</relativePath>
+	</parent>
+
+	<groupId>org.apache.tuscany.sca</groupId>
+	<artifactId>tuscany-binding-comet-runtime</artifactId>
+	<name>Apache Tuscany SCA Comet Binding Runtime</name>
+	<packaging>jar</packaging>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.tuscany.sca</groupId>
+			<artifactId>tuscany-base-runtime-pom</artifactId>
+            <type>pom</type>
+			<version>2.0-SNAPSHOT</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.atmosphere</groupId>
+			<artifactId>atmosphere-commons</artifactId>
+			<version>0.6.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.atmosphere</groupId>
+			<artifactId>atmosphere-runtime</artifactId>
+			<version>0.6.1</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.geronimo.specs</groupId>
+			<artifactId>geronimo-servlet_3.0_spec</artifactId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
+
+        <dependency>
+            <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty</artifactId>
+            <version>6.1.26</version>
+			<scope>test</scope>
+        </dependency>
+
+	</dependencies>
+
+	<repositories>
+		<repository>
+			<id>gson-googlecode-repository</id>
+			<url>http://google-gson.googlecode.com/svn/mavenrepo</url>
+			<snapshots>
+				<enabled>true</enabled>
+			</snapshots>
+			<releases>
+				<enabled>true</enabled>
+			</releases>
+		</repository>
+	</repositories>
+
+</project>

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/MANIFEST.MF?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/MANIFEST.MF (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/META-INF/MANIFEST.MF Thu May 19 10:24:06 2011
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometAsyncResponseInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometAsyncResponseInvoker.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometAsyncResponseInvoker.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometAsyncResponseInvoker.java Thu May 19 10:24:06 2011
@@ -0,0 +1,21 @@
+package org.apache.tuscany.sca.binding.comet.runtime;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.invocation.InvokerAsyncResponse;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+public class CometAsyncResponseInvoker implements InvokerAsyncResponse {
+
+	private RuntimeEndpoint endpoint;
+
+	public CometAsyncResponseInvoker(ExtensionPointRegistry extensionPoints, RuntimeEndpoint endpoint) {
+		this.endpoint = endpoint;
+	}
+
+	@Override
+	public void invokeAsyncResponse(Message msg) {
+		System.out.println("In invokeAsyncResponse!");
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometBindingProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometBindingProviderFactory.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometBindingProviderFactory.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometBindingProviderFactory.java Thu May 19 10:24:06 2011
@@ -0,0 +1,72 @@
+/*
+ * 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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.binding.comet.CometBinding;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.host.http.ServletHostHelper;
+import org.apache.tuscany.sca.provider.BindingProviderFactory;
+import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+import org.apache.tuscany.sca.provider.ServiceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
+
+/**
+ * Factory for binding providers.
+ */
+public class CometBindingProviderFactory implements BindingProviderFactory<CometBinding> {
+
+    /**
+     * Underlying servlet host. Injected by constructor.
+     */
+    private final ServletHost servletHost;
+
+    /**
+     * Constructor.
+     */
+    public CometBindingProviderFactory(final ExtensionPointRegistry extensionPoints) {
+        this.servletHost = ServletHostHelper.getServletHost(extensionPoints);
+    }
+
+    @Override
+    public Class<CometBinding> getModelType() {
+        return CometBinding.class;
+    }
+
+    /**
+     * Creates a provider for a reference that has comet binding specified in
+     * the scdl.
+     */
+    @Override
+    public ReferenceBindingProvider createReferenceBindingProvider(final RuntimeEndpointReference endpoint) {
+        return new CometReferenceBindingProvider(endpoint);
+    }
+
+    /**
+     * Creates a provider for a service that has comet binding specified in the
+     * scdl.
+     */
+    @Override
+    public ServiceBindingProvider createServiceBindingProvider(final RuntimeEndpoint endpoint) {
+        return new CometServiceBindingProvider(endpoint, this.servletHost);
+    }
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometComponentContext.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometComponentContext.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometComponentContext.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometComponentContext.java Thu May 19 10:24:06 2011
@@ -0,0 +1,54 @@
+/*
+ * 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.binding.comet.runtime;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+public class CometComponentContext {
+
+	private Map<String, RuntimeEndpoint> endpoints;
+	private Map<String, Operation> operations;
+
+	public CometComponentContext() {
+		endpoints = new ConcurrentHashMap<String, RuntimeEndpoint>();
+		operations = new ConcurrentHashMap<String, Operation>();
+	}
+
+	public void addEndpoint(String key, RuntimeEndpoint endpoint) {
+		endpoints.put(key, endpoint);
+	}
+
+	public void addOperation(String key, Operation operation) {
+		operations.put(key, operation);
+	}
+
+	public RuntimeEndpoint getEndpoint(String key) {
+		return endpoints.get(key);
+	}
+
+	public Operation getOperation(String key) {
+		return operations.get(key);
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometInvoker.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometInvoker.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometInvoker.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometInvoker.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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.binding.comet.runtime.handler.CometBindingHandler;
+import org.apache.tuscany.sca.core.invocation.impl.MessageImpl;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+
+public class CometInvoker implements Invoker {
+
+	protected Operation operation;
+	protected EndpointReference endpoint;
+
+	public CometInvoker(final Operation operation, final EndpointReference endpoint) {
+		this.operation = operation;
+		this.endpoint = endpoint;
+	}
+
+	@Override
+	public Message invoke(final Message msg) {
+		String operation = msg.getOperation().getName();
+		CometMessageContext context = msg.getBindingContext();
+		CometBindingHandler handler = context.getCometHandler();
+		Message message = new MessageImpl();
+		if (operation.equals("sendResponse")) {
+			String callbackMethod = context.getCallbackMethod();
+			Object[] body = msg.getBody();
+			handler.respondToClient(callbackMethod, body[0]);
+		} else if (operation.equals("isClientConnected")) {
+			message.setBody(handler.isClientConnected());
+		}
+		return message;
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometMessageContext.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometMessageContext.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometMessageContext.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometMessageContext.java Thu May 19 10:24:06 2011
@@ -0,0 +1,51 @@
+/*
+ * 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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.binding.comet.runtime.handler.CometBindingHandler;
+
+public class CometMessageContext {
+
+	private CometBindingHandler cometHandler;
+
+	private String callbackMethod;
+
+	public CometMessageContext(CometBindingHandler cometHandler, String callbackMethod) {
+		this.cometHandler = cometHandler;
+		this.callbackMethod = callbackMethod;
+	}
+
+	public CometBindingHandler getCometHandler() {
+		return cometHandler;
+	}
+
+	public void setCometHandler(CometBindingHandler cometHandler) {
+		this.cometHandler = cometHandler;
+	}
+
+	public String getCallbackMethod() {
+		return callbackMethod;
+	}
+
+	public void setCallbackMethod(String callbackMethod) {
+		this.callbackMethod = callbackMethod;
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometReferenceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometReferenceBindingProvider.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometReferenceBindingProvider.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometReferenceBindingProvider.java Thu May 19 10:24:06 2011
@@ -0,0 +1,72 @@
+/*
+ * 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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.provider.ReferenceBindingProvider;
+
+/**
+ * Provider for references that have comet binding specified in the scdl. Not
+ * used as comet binding references would occur in client browser's Javascript.
+ */
+public class CometReferenceBindingProvider implements ReferenceBindingProvider {
+
+    /**
+     * Endpoint for which the binding provider is created.
+     */
+    private final EndpointReference endpoint;
+
+    public CometReferenceBindingProvider(final EndpointReference endpoint) {
+        this.endpoint = endpoint;
+    }
+
+    @Override
+    public Invoker createInvoker(final Operation operation) {
+        return new CometInvoker(operation, this.endpoint);
+    }
+
+    /**
+     * No behavior.
+     */
+    @Override
+    public void start() {
+    }
+
+    /**
+     * No behavior.
+     */
+    @Override
+    public void stop() {
+    }
+
+    @Override
+    public InterfaceContract getBindingInterfaceContract() {
+        return endpoint.getReference().getInterfaceContract();
+    }
+
+    @Override
+    public boolean supportsOneWayInvocation() {
+        return true;
+    }
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometServiceBindingProvider.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometServiceBindingProvider.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/CometServiceBindingProvider.java Thu May 19 10:24:06 2011
@@ -0,0 +1,108 @@
+/*
+ * 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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.binding.comet.runtime.javascript.JavascriptGenerator;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.interfacedef.Interface;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.InvokerAsyncResponse;
+import org.apache.tuscany.sca.provider.EndpointAsyncProvider;
+import org.apache.tuscany.sca.provider.ServiceBindingProvider;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+
+/**
+ * Provider for services having comet binding specified in the scdl.
+ */
+public class CometServiceBindingProvider implements ServiceBindingProvider, EndpointAsyncProvider {
+
+	/**
+	 * Service's endpoint.
+	 */
+	private final RuntimeEndpoint endpoint;
+
+	/**
+	 * The underlying servlet host.
+	 */
+	private final ServletHost servletHost;
+
+	/**
+	 * Constructor.
+	 * 
+	 * @param endpoint
+	 *            the given endpoint
+	 * @param servletHost
+	 *            the given servlet host
+	 */
+	public CometServiceBindingProvider(final RuntimeEndpoint endpoint, final ServletHost servletHost) {
+		this.endpoint = endpoint;
+		this.servletHost = servletHost;
+	}
+
+	/**
+	 * This method is used to start the provider.
+	 */
+	@Override
+	public void start() {
+		ServletFactory.registerServlet(this.servletHost);
+		final ComponentService service = this.endpoint.getService();
+		final Interface serviceInterface = service.getInterfaceContract().getInterface();
+		JavascriptGenerator.generateServiceProxy(service);
+		for (final Operation operation : serviceInterface.getOperations()) {
+			JavascriptGenerator.generateMethodProxy(service, operation);
+			ServletFactory.registerOperation(this.endpoint, operation);
+		}
+	}
+
+	/**
+	 * This method is used to stop the provider.
+	 */
+	@Override
+	public void stop() {
+		ServletFactory.unregisterServlet(this.servletHost);
+	}
+
+	@Override
+	public InterfaceContract getBindingInterfaceContract() {
+		return endpoint.getService().getInterfaceContract();
+	}
+
+	@Override
+	public boolean supportsOneWayInvocation() {
+		return true;
+	}
+
+	@Override
+	public void configure() {
+	}
+
+	@Override
+	public boolean supportsNativeAsync() {
+		return true;
+	}
+
+	@Override
+	public InvokerAsyncResponse createAsyncResponseInvoker() {
+		return new CometAsyncResponseInvoker(null, endpoint);
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java Thu May 19 10:24:06 2011
@@ -0,0 +1,157 @@
+/*
+ * 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.binding.comet.runtime;
+
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.atmosphere.cpr.AtmosphereServlet;
+
+/**
+ * This class is used to create two servlets: one exposing all the comet
+ * services, the other one exposing the javascript toolkit. Exposing all comet
+ * services through a single servlet is needed as the browsers are undergone by
+ * the two http connection limit so all comet services should send their
+ * responses via the same http connection to the same client. Dispatching to the
+ * corresponding endpoint and operation is done internally using Jersey RESTful
+ * Web Services integration with the AtmosphereServlet. The Javascript toolkit
+ * servlet is unique as it is not tied to any of the services - it offers a
+ * global API.
+ */
+public final class ServletFactory {
+
+	/**
+	 * Init-param key for the AtmosphereServlet defining where to look for
+	 * Jersey classes.
+	 */
+	private static final String PACKAGE_KEY = "com.sun.jersey.config.property.packages";
+
+	/**
+	 * Package of the class handling dispatching to endpoints.
+	 */
+	private static final String PACKAGE_VALUE = "org.apache.tuscany.sca.binding.comet.runtime.handler";
+
+	/**
+	 * Package of the class handling Javascript toolkit retrieval.
+	 */
+	private static final String JS_PACKAGE_VALUE = "org.apache.tuscany.sca.binding.comet.runtime.javascript";
+
+	/**
+	 * Key in the ServletContext where the comet component context is stored.
+	 */
+	public static final String COMET_COMPONENT_CONTEXT_KEY = "org.apache.tuscany.sca.binding.comet.operations";
+
+	/**
+	 * Path where services will be exposed.
+	 */
+	public static final String PATH = "/tuscany-comet/*";
+
+	/**
+	 * Path where Javascript toolkit will be exposed.
+	 */
+	public static final String JS_PATH = "/org.apache.tuscany.sca.cometComponentContext.js/*";
+
+	/**
+	 * The servlet that is exposing the comet services.
+	 */
+	private static AtmosphereServlet cometServlet = null;
+
+	/**
+	 * The servlet that is exposing the Javascript toolkit.
+	 */
+	private static AtmosphereServlet javascriptServlet = null;
+
+	/**
+	 * Private constructor for the singleton class.
+	 */
+	private ServletFactory() {
+	}
+
+	/**
+	 * Method called by CometServiceBindingProvider for each endpoint in order
+	 * to create the two singleton servlets.
+	 * 
+	 * @param servletHost
+	 *            the underlying servlet host
+	 */
+	public static synchronized void registerServlet(
+			final ServletHost servletHost) {
+		registerCometServlet(servletHost);
+		registerJavascriptServlet(servletHost);
+	}
+
+	private static void registerCometServlet(ServletHost servletHost) {
+		if (ServletFactory.cometServlet == null) {
+			ServletFactory.cometServlet = new AtmosphereServlet();
+			ServletFactory.cometServlet.addInitParameter(
+					ServletFactory.PACKAGE_KEY, ServletFactory.PACKAGE_VALUE);
+			servletHost.addServletMapping(ServletFactory.PATH,
+					ServletFactory.cometServlet);
+			final CometComponentContext context = new CometComponentContext();
+			ServletFactory.cometServlet.getServletContext().setAttribute(
+					ServletFactory.COMET_COMPONENT_CONTEXT_KEY, context);
+		}
+	}
+
+	private static void registerJavascriptServlet(ServletHost servletHost) {
+		if (ServletFactory.javascriptServlet == null) {
+			ServletFactory.javascriptServlet = new AtmosphereServlet();
+			ServletFactory.javascriptServlet
+					.addInitParameter(ServletFactory.PACKAGE_KEY,
+							ServletFactory.JS_PACKAGE_VALUE);
+			servletHost.addServletMapping(ServletFactory.JS_PATH,
+					ServletFactory.javascriptServlet);
+		}
+	}
+
+	/**
+	 * Method called by CometServiceBindingProvider for each endpoint operation
+	 * in order to store all the operations the servlet will serve.
+	 * 
+	 * @param endpoint
+	 *            the endpoint
+	 * @param operation
+	 *            the operation
+	 */
+	public static void registerOperation(final RuntimeEndpoint endpoint,
+			final Operation operation) {
+		final String url = "/" + endpoint.getService().getName() + "/"
+				+ operation.getName();
+		CometComponentContext context = (CometComponentContext) cometServlet
+				.getServletContext().getAttribute(COMET_COMPONENT_CONTEXT_KEY);
+		context.addEndpoint(url, endpoint);
+		context.addOperation(url, operation);
+	}
+
+	/**
+	 * Method called by CometServiceBindingProvider for each endpoint operation
+	 * in order to remove the two servlets.
+	 * 
+	 * @param servletHost
+	 *            the underlying servlet host
+	 */
+	public static void unregisterServlet(final ServletHost servletHost) {
+		synchronized (servletHost) {
+			servletHost.removeServletMapping(ServletFactory.PATH);
+			servletHost.removeServletMapping(ServletFactory.JS_PATH);
+		}
+	}
+
+}

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

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/handler/CometBindingHandler.java Thu May 19 10:24:06 2011
@@ -0,0 +1,223 @@
+/*
+ * 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.binding.comet.runtime.handler;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+
+import org.apache.tuscany.sca.assembly.EndpointReference;
+import org.apache.tuscany.sca.binding.comet.runtime.CometComponentContext;
+import org.apache.tuscany.sca.binding.comet.runtime.CometMessageContext;
+import org.apache.tuscany.sca.binding.comet.runtime.ServletFactory;
+import org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointImpl;
+import org.apache.tuscany.sca.core.assembly.impl.RuntimeEndpointReferenceImpl;
+import org.apache.tuscany.sca.core.invocation.impl.MessageImpl;
+import org.apache.tuscany.sca.interfacedef.DataType;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.runtime.RuntimeEndpoint;
+import org.atmosphere.annotation.Broadcast;
+import org.atmosphere.cpr.Broadcaster;
+import org.atmosphere.cpr.DefaultBroadcaster;
+import org.atmosphere.jersey.SuspendResponse;
+
+import com.google.gson.Gson;
+import com.sun.jersey.spi.container.servlet.PerSession;
+
+/**
+ * Class serving calls coming for comet services and operations.
+ */
+@Path("/")
+@Produces("text/html;charset=ISO-8859-1")
+@PerSession
+public class CometBindingHandler {
+
+	/**
+	 * The object used to suspend the response and send async responses back to
+	 * client.
+	 */
+	private Broadcaster broadcaster;
+
+	/**
+	 * JSON converter.
+	 */
+	private Gson gson = new Gson();
+
+	/**
+	 * The underlying servlet context.
+	 */
+	@Context
+	private ServletContext sc;
+
+	@Context
+	private HttpServletRequest request;
+
+	private CometComponentContext context;
+
+	/**
+	 * Method called at comet connect time. This suspends the response and keeps
+	 * the connection opened.
+	 * 
+	 * @return the suspended response
+	 */
+	@GET
+	public SuspendResponse<String> connect() {
+		System.out.println("-- connect -- Session Id: " + request.getSession().getId());
+		if (broadcaster == null) {
+			broadcaster = new DefaultBroadcaster();
+			context = (CometComponentContext) sc.getAttribute(ServletFactory.COMET_COMPONENT_CONTEXT_KEY);
+		}
+		return new SuspendResponse.SuspendResponseBuilder<String>().broadcaster(this.broadcaster).outputComments(true)
+				.build();
+	}
+
+	/**
+	 * Method called on service calls.
+	 * 
+	 * @param service
+	 *            service called
+	 * @param method
+	 *            operation called
+	 * @param callbackMethod
+	 *            the callback method from Javascript
+	 * @param jsonData
+	 *            arguments for the method sent as JSON array
+	 * @return object used by the Broadcaster to send response through the
+	 *         persisted connection
+	 * @throws InvocationTargetException
+	 *             if problems occur at service invocation
+	 */
+	@POST
+	@Path("/{service}/{method}")
+	@Broadcast
+	public void handleRequest(@PathParam("service") final String service, @PathParam("method") final String method,
+			@FormParam("callback") final String callbackMethod, @FormParam("params") final String jsonData)
+			throws InvocationTargetException {
+		System.out.println("-- handleRequest -- Session Id: " + request.getSession().getId());
+		final String url = "/" + service + "/" + method;
+		final RuntimeEndpoint wire = context.getEndpoint(url);
+		final Operation operation = context.getOperation(url);
+
+		final Object[] args = decodeJsonDataForOperation(jsonData, operation);
+		Message msg = createMessageWithMockedCometReference(args, callbackMethod);
+		Object response = wire.invoke(operation, args);
+		System.out.println("Response: " + gson.toJson(response));
+	}
+
+	/**
+	 * Convert request parameters from JSON to operation parameter types.
+	 * 
+	 * @param jsonData
+	 * @param operation
+	 * @return
+	 */
+	private Object[] decodeJsonDataForOperation(String jsonData, Operation operation) {
+		Object[] args = new Object[operation.getInputType().getLogical().size()];
+		final String[] json = this.parseArray(jsonData);
+		int index = 0;
+		// convert each argument to the corresponding class
+		for (final DataType<?> dataType : operation.getInputType().getLogical()) {
+			args[index] = this.gson.fromJson(json[index], dataType.getPhysical());
+			index++;
+		}
+		return args;
+	}
+
+	/**
+	 * Creates the message to be sent with a mocked EndpointReference in the
+	 * 'from' field as the request comes from a browser (there is no actual
+	 * comet reference running in a controlled environment).
+	 * 
+	 * @param args
+	 * @param callbackMethod
+	 * @return
+	 */
+	private Message createMessageWithMockedCometReference(Object[] args, String callbackMethod) {
+		Message msg = new MessageImpl();
+		msg.setBody(args);
+		CometMessageContext messageContext = new CometMessageContext(this, callbackMethod);
+		msg.setBindingContext(messageContext);
+		EndpointReference re = new RuntimeEndpointReferenceImpl();
+		re.setCallbackEndpoint(new RuntimeEndpointImpl());
+		msg.setFrom(re);
+		return msg;
+	}
+
+	/**
+	 * Parse the JSON array containing the arguments for the method call in
+	 * order to avoid converting JSON to Object[]. Converting each object
+	 * separately to it's corresponding type avoids type mismatch problems at
+	 * service invocation.
+	 * 
+	 * @param jsonArray
+	 *            the JSON array
+	 * @return an array of JSON formatted objects
+	 */
+	private String[] parseArray(final String jsonArray) {
+		final List<String> objects = new ArrayList<String>();
+		int bracketNum = 0;
+		int parNum = 0;
+		int startPos = 1;
+		for (int i = 0; i < jsonArray.length(); i++) {
+			switch (jsonArray.charAt(i)) {
+			case '{':
+				bracketNum++;
+				break;
+			case '}':
+				bracketNum--;
+				break;
+			case '[':
+				parNum++;
+				break;
+			case ']':
+				parNum--;
+				break;
+			case ',':
+				if ((bracketNum == 0) && (parNum == 1)) {
+					objects.add(jsonArray.substring(startPos, i));
+					startPos = i + 1;
+				}
+			}
+		}
+		// add last object
+		objects.add(jsonArray.substring(startPos, jsonArray.length() - 1));
+		return objects.toArray(new String[] {});
+	}
+
+	public void respondToClient(String callbackMethod, Object response) {
+		broadcaster.broadcast(callbackMethod + "($.secureEvalJSON('" + this.gson.toJson(response) + "'))");
+	}
+
+	public boolean isClientConnected() {
+		return !broadcaster.getAtmosphereResources().isEmpty();
+	}
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptGenerator.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptGenerator.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptGenerator.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptGenerator.java Thu May 19 10:24:06 2011
@@ -0,0 +1,107 @@
+/*
+ * 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.binding.comet.runtime.javascript;
+
+import org.apache.tuscany.sca.assembly.ComponentService;
+import org.apache.tuscany.sca.interfacedef.Operation;
+
+/**
+ * This class generates proxies for the comet services.
+ */
+public class JavascriptGenerator {
+
+    /**
+     * Namespace for the Tuscany Comet Javascript toolkit.
+     */
+    public static final String JS_NAMESPACE = "SCA";
+
+    /**
+     * Name for the SCA component context.
+     */
+    private static final String COMPONENT_CONTEXT = "this.CometComponentContext";
+
+    /**
+     * Name for the object performing comet specific tasks.
+     */
+    private static final String TUSCANY_COMET = "SCA.TuscanyComet";
+
+    /**
+     * Generated Javascript.
+     */
+    private static StringBuffer javascript = new StringBuffer();
+
+    /**
+     * Default constructor for utility class.
+     */
+    private JavascriptGenerator() {
+    }
+
+    /**
+     * Getter for the generated Javascript.
+     * 
+     * @return the generated Javascript
+     */
+    public static StringBuffer getJavascript() {
+        return JavascriptGenerator.javascript;
+    }
+
+    /**
+     * Generates the proxy for a service.
+     * 
+     * @param service the service for which generation is performed
+     */
+    public static void generateServiceProxy(final ComponentService service) {
+        JavascriptGenerator.javascript.append(JavascriptGenerator.COMPONENT_CONTEXT + "."
+            + service.getName()
+            + " = new Object();\n");
+    }
+
+    /**
+     * Generates the method inside the service proxy for the specified
+     * operation.
+     * 
+     * @param service the service containing the operation
+     * @param operation the operation
+     */
+    public static void generateMethodProxy(final ComponentService service, final Operation operation) {
+        JavascriptGenerator.javascript.append(JavascriptGenerator.COMPONENT_CONTEXT + "."
+            + service.getName()
+            + "."
+            + operation.getName()
+            + " = function(");
+        for (int i = 0; i < operation.getInputType().getLogical().size(); i++) {
+            JavascriptGenerator.javascript.append("p" + i + ", ");
+        }
+        JavascriptGenerator.javascript.append("callbackMethod) {\n");
+        // send method argumets as JSON array
+        JavascriptGenerator.javascript.append("  var params = [];\n");
+        for (int i = 0; i < operation.getInputType().getLogical().size(); i++) {
+            JavascriptGenerator.javascript.append("  params.push(p" + i + ");\n");
+        }
+        JavascriptGenerator.javascript.append("  " + JavascriptGenerator.TUSCANY_COMET
+            + ".callAsync('"
+            + service.getName()
+            + "/"
+            + operation.getName()
+            + "', $.toJSON(params), callbackMethod);\n");
+        JavascriptGenerator.javascript.append("}\n");
+    }
+
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptResource.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptResource.java?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptResource.java (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/javascript/JavascriptResource.java Thu May 19 10:24:06 2011
@@ -0,0 +1,63 @@
+/*
+ * 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.binding.comet.runtime.javascript;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.SequenceInputStream;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+/**
+ * Class serving the calls performed to retrieve the Javascript toolkit.
+ */
+@Path("/")
+@Produces("text/javascript")
+public class JavascriptResource {
+
+    /**
+     * Dependencies for the Tuscany Comet Javascript API.
+     */
+    private static final String[] DEPENDENCIES = {"/jquery.atmosphere.js", "/jquery.json-2.2.min.js",
+                                                  "/cometComponentContext.js"};
+
+    /**
+     * Method called when the Javascript toolkit is requested.
+     * 
+     * @return InputStream containing the Javascript code.
+     */
+    @GET
+    public InputStream getJavascript() {
+        InputStream stream = null;
+        // add dependencies in the specified order
+        for (final String dependency : JavascriptResource.DEPENDENCIES) {
+            if (stream == null) {
+                stream = this.getClass().getResourceAsStream(dependency);
+            } else {
+                stream = new SequenceInputStream(stream, this.getClass().getResourceAsStream(dependency));
+            }
+        }
+        // add generated proxies
+        final String generatedJs = JavascriptGenerator.getJavascript().toString() + "\n}";
+        return new SequenceInputStream(stream, new ByteArrayInputStream(generatedJs.getBytes()));
+    }
+}

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.BindingProviderFactory Thu May 19 10:24:06 2011
@@ -0,0 +1,20 @@
+# 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. 
+
+# Implementation class for the binding extension
+org.apache.tuscany.sca.binding.comet.runtime.CometBindingProviderFactory;model=org.apache.tuscany.sca.binding.comet.CometBinding
+

Added: tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/cometComponentContext.js
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/cometComponentContext.js?rev=1124666&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/cometComponentContext.js (added)
+++ tuscany/sca-java-2.x/trunk/unreleased/modules/binding-comet-runtime/src/main/resources/cometComponentContext.js Thu May 19 10:24:06 2011
@@ -0,0 +1,48 @@
+
+/**
+ * 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.    
+ */
+
+var SCA = new function() {
+	
+this.TuscanyComet = {
+	appUrl: 'tuscany-comet',
+	connectedEndpoint : null,
+	connect : function(transport) {
+		$.atmosphere.subscribe(document.location.toString() + this.appUrl,
+				this.callback, 
+				$.atmosphere.request = {
+					transport : transport
+				});
+		this.connectedEndpoint = $.atmosphere.response;
+	},
+	callAsync : function(url, params, callbackMethod) {
+		this.connectedEndpoint.push(document.location.toString()
+				+ this.appUrl + '/' + url,
+				null, 
+				$.atmosphere.request = {
+					method : 'POST',
+					data : 'callback=' + callbackMethod.name + '&params=' + params 
+				});
+	},
+	callback : function(response) {
+		eval(response.responseBody);
+	}
+};
+
+this.CometComponentContext = new Object();