summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/LICENSE246
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/META-INF/MANIFEST.MF25
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/NOTICE13
-rwxr-xr-xsca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/jython-install27
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/pom.xml89
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProvider.java106
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProviderFactory.java49
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonInvoker.java59
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory20
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/atomutil.py120
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/__init__.py0
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/__init__.py0
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/__init__.py252
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/decoder.py273
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/encoder.py331
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/jsonfilter.py40
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/scanner.py63
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/elemutil.py168
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/invoker.py108
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/jsonutil.py142
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/rssutil.py119
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/util.py145
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/xmlutil.py114
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ClientTest.java36
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/EchoTest.java32
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/InvokeTestCase.java93
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ServerTest.java31
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/client_test.py35
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/domain-test.composite64
-rw-r--r--sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/server_test.py42
30 files changed, 0 insertions, 2842 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/LICENSE b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/LICENSE
deleted file mode 100644
index 2c5d23a2b4..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/LICENSE
+++ /dev/null
@@ -1,246 +0,0 @@
-
- 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 one file under the following BSD license:
-
-Copyright (c) Django Software Foundation and individual contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. Neither the name of Django nor the names of its contributors may be used
- to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
-
-=================================================================================================================
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/META-INF/MANIFEST.MF
deleted file mode 100644
index 35e5486b87..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,25 +0,0 @@
-Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany Python Implementation Runtime
-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 Python Implementation Runtime
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.python.runtime
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
-Export-Package: org.apache.tuscany.sca.implementation.python.provider;version="2.0.0"
-Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0",
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.core.invocation;version="2.0.0",
- org.apache.tuscany.sca.host.http;version="2.0.0",
- org.apache.tuscany.sca.implementation.jaxrs;version="2.0.0",
- org.apache.tuscany.sca.implementation.python;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.policy;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0.0",
- org.apache.tuscany.sca.runtime;version="2.0.0",
- org.oasisopen.sca;version="2.0.0",
- org.oasisopen.sca.annotation;version="2.0.0"
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/NOTICE b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/NOTICE
deleted file mode 100644
index ba46f2018e..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/NOTICE
+++ /dev/null
@@ -1,13 +0,0 @@
-${pom.name}
-Copyright (c) 2005 - 2011 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product also includes software under the BSD license
-(see the LICENSE file contained in this distribution), with
-the following copyright:
-
-Copyright (c) Django Software Foundation and individual contributors.
-All rights reserved.
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/jython-install b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/jython-install
deleted file mode 100755
index dc89bb3ec1..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/jython-install
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# 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.
-
-# Install Jython 2.5.2b1 jar in the local Maven repository, as it's not
-# yet available in a central Maven repository
-mkdir -p target
-cd target
-wget http://sourceforge.net/projects/jython/files/jython-dev/2.5.2b1/jython_installer-2.5.2b1.jar/download
-java -jar jython_installer-2.5.2b1.jar -s -d jython -t standalone
-mvn install:install-file -DgroupId=org.python -DartifactId=jython -Dversion=2.5.2 -Dpackaging=jar -Dfile=jython/jython.jar
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/pom.xml b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/pom.xml
deleted file mode 100644
index fcbdcd45cc..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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-Beta3-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>tuscany-implementation-python-runtime</artifactId>
- <name>Apache Tuscany SCA Python Implementation Extension</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-core-runtime-pom</artifactId>
- <type>pom</type>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-implementation-python</artifactId>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.python</groupId>
- <artifactId>jython</artifactId>
- <version>2.5.2-beta1</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.1</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-node-impl</artifactId>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-implementation-java-runtime</artifactId>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>tuscany-host-jetty</artifactId>
- <version>2.0-Beta3-SNAPSHOT</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-</project>
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProvider.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProvider.java
deleted file mode 100644
index 7d381ac9d9..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProvider.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tuscany.sca.assembly.ComponentProperty;
-import org.apache.tuscany.sca.assembly.ComponentReference;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
-import org.apache.tuscany.sca.implementation.python.PythonEval;
-import org.apache.tuscany.sca.implementation.python.PythonImplementation;
-import org.apache.tuscany.sca.implementation.python.PythonProperty;
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.provider.ImplementationProvider;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.apache.tuscany.sca.runtime.RuntimeComponentService;
-import org.apache.tuscany.sca.runtime.RuntimeEndpointReference;
-import org.python.core.Py;
-import org.python.core.PyObject;
-import org.python.core.PyString;
-import org.python.core.PySystemState;
-import org.python.core.PyTuple;
-import org.python.util.PythonInterpreter;
-
-/**
- * Implementation provider for Python component implementations.
- *
- * @version $Rev$ $Date$
- */
-class PythonImplementationProvider implements ImplementationProvider {
- final RuntimeComponent component;
- final PythonImplementation implementation;
- PythonInterpreter python;
- PyObject callable;
- ProxyFactory pxFactory;
-
- PythonImplementationProvider(final RuntimeComponent comp, final PythonImplementation impl, ProxyFactory pxf) {
- component = comp;
- implementation = impl;
- pxFactory = pxf;
- }
-
- public void start() {
- final PySystemState pss = new PySystemState();
- pss.path.insert(0, new PyString(implementation.getLocation()));
- pss.path.insert(0, new PyString(getClass().getProtectionDomain().getCodeSource().getLocation().getFile()));
- python = new PythonInterpreter(null, pss);
- python.exec("from invoker import *");
-
- final List<PyObject> px = new ArrayList<PyObject>();
- for(final ComponentReference r: component.getReferences()) {
- final PythonEval pe = pxFactory.createProxy(PythonEval.class, (RuntimeEndpointReference)r.getEndpointReferences().get(0));
- px.add(Py.java2py(new PythonEval() {
- @Override
- public String eval(final String args) throws Exception {
- final String v = pe.eval(args);
- return v;
- }
- }));
- }
- final List<PyObject> pr = new ArrayList<PyObject>();
- for(final ComponentProperty p: component.getProperties()) {
- final String v = String.valueOf(p.getValue());
- pr.add(Py.java2py(new PythonProperty() {
- @Override
- public String eval() {
- return v;
- }
- }));
- }
-
- PyObject mkc = python.get("mkcomponent");
- callable = mkc.__call__(new PyString(component.getName()), new PyString(implementation.getScript()), new PyTuple(px.toArray(new PyObject[0])), new PyTuple(pr.toArray(new PyObject[0])));
- }
-
- public void stop() {
- python.cleanup();
- }
-
- public boolean supportsOneWayInvocation() {
- return false;
- }
-
- public Invoker createInvoker(final RuntimeComponentService s, final Operation op) {
- return new PythonInvoker(python, callable, op);
- }
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProviderFactory.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProviderFactory.java
deleted file mode 100644
index 752e3fd899..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonImplementationProviderFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
-import org.apache.tuscany.sca.implementation.python.PythonImplementation;
-import org.apache.tuscany.sca.provider.ImplementationProvider;
-import org.apache.tuscany.sca.provider.ImplementationProviderFactory;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-
-/**
- * A factory for Python implementation providers.
- *
- * @version $Rev$ $Date$
- */
-public class PythonImplementationProviderFactory implements ImplementationProviderFactory<PythonImplementation> {
- final ProxyFactory pxFactory;
-
- public PythonImplementationProviderFactory(final ExtensionPointRegistry ep) {
- pxFactory = ExtensibleProxyFactory.getInstance(ep);
- }
-
- public ImplementationProvider createImplementationProvider(final RuntimeComponent comp, final PythonImplementation impl) {
- return new PythonImplementationProvider(comp, impl, pxFactory);
- }
-
- public Class<PythonImplementation> getModelType() {
- return PythonImplementation.class;
- }
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonInvoker.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonInvoker.java
deleted file mode 100644
index a49e5e3296..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/java/org/apache/tuscany/sca/implementation/python/provider/PythonInvoker.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import org.apache.tuscany.sca.interfacedef.Operation;
-import org.apache.tuscany.sca.invocation.Invoker;
-import org.apache.tuscany.sca.invocation.Message;
-import org.python.core.PyObject;
-import org.python.core.PyString;
-import org.python.util.PythonInterpreter;
-
-/**
- * An invoker for Python components.
- *
- * @version $Rev$ $Date$
- */
-class PythonInvoker implements Invoker {
- final PythonInterpreter python;
- final PyObject callable;
- final Operation operation;
-
- PythonInvoker(final PythonInterpreter py, final PyObject c, final Operation op) {
- python = py;
- callable = c;
- operation = op;
- }
-
- String apply(final String req) {
- PyObject r = callable.__call__(new PyString(req));
- return r.toString();
- }
-
- public Message invoke(final Message msg) {
- try {
- msg.setBody(apply((String)((Object[])msg.getBody())[0]));
- } catch(Exception e) {
- e.printStackTrace();
- msg.setFaultBody(e.getCause());
- }
- return msg;
- }
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
deleted file mode 100644
index 3c1e6c4406..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory
+++ /dev/null
@@ -1,20 +0,0 @@
-# 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 provider for Python components
-org.apache.tuscany.sca.implementation.python.provider.PythonImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.python.PythonImplementation
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/atomutil.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/atomutil.py
deleted file mode 100644
index 6c0a7c9a81..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/atomutil.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# 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.
-
-# ATOM data conversion functions
-
-from util import *
-from elemutil import *
-from xmlutil import *
-
-# Convert a list of elements to a list of values representing an ATOM entry
-def entryElementsToValues(e):
- lt = filter(selector((element, "'title")), e)
- t = "" if isNil(lt) else elementValue(car(lt))
- li = filter(selector((element, "'id")), e)
- i = "" if isNil(li) else elementValue(car(li))
- lc = filter(selector((element, "'content")), e)
- return (t, i, elementValue(car(lc)))
-
-# Convert a list of elements to a list of values representing ATOM entries
-def entriesElementsToValues(e):
- if isNil(e):
- return e
- return cons(entryElementsToValues(car(e)), entriesElementsToValues(cdr(e)))
-
-# Convert a list of strings to a list of values representing an ATOM entry
-def readATOMEntry(l):
- e = readXML(l)
- if isNil(e):
- return ()
- return entryElementsToValues(car(e))
-
-# Convert a list of values representy an ATOM entry to a value
-def entryValue(e):
- v = elementsToValues((caddr(e),))
- return cons(car(e), (cadr(e), cdr(car(v))))
-
-# Return true if a list of strings represents an ATOM feed
-def isATOMFeed(l):
- if isNil(l):
- return False
- if car(l)[0:5] != "<?xml":
- return False
- return contains(car(l), "<feed")
-
-# Convert a list of strings to a list of values representing an ATOM feed
-def readATOMFeed(l):
- f = readXML(l)
- if isNil(f):
- return ()
- t = filter(selector((element, "'title")), car(f))
- i = filter(selector((element, "'id")), car(f))
- e = filter(selector((element, "'entry")), car(f))
- if isNil(e):
- return (elementValue(car(t)), elementValue(car(i)))
- return cons(elementValue(car(t)), cons(elementValue(car(i)), entriesElementsToValues(e)))
-
-# Convert an ATOM feed containing elements to an ATOM feed containing values
-def feedValuesLoop(e):
- if (isNil(e)):
- return e
- return cons(entryValue(car(e)), feedValuesLoop(cdr(e)))
-
-def feedValues(e):
- return cons(car(e), cons(cadr(e), feedValuesLoop(cddr(e))))
-
-# Convert a list of values representy an ATOM entry to a list of elements
-def entryElement(l):
- return (element, "'entry", (attribute, "'xmlns", "http://www.w3.org/2005/Atom"),
- (element, "'title", (attribute, "'type", "text"), car(l)),
- (element, "'id", cadr(l)),
- (element, "'content", (attribute, "'type", ("application/xml" if isList(caddr(l)) else "text")), caddr(l)),
- (element, "'link", (attribute, "'href", cadr(l))))
-
-# Convert a list of values representing ATOM entries to a list of elements
-def entriesElements(l):
- if isNil(l):
- return l
- return cons(entryElement(car(l)), entriesElements(cdr(l)))
-
-# Convert a list of values representing an ATOM entry to an ATOM entry
-def writeATOMEntry(l):
- return writeXML((entryElement(l),), True)
-
-# Convert a list of values representing an ATOM feed to an ATOM feed
-def writeATOMFeed(l):
- f = (element, "'feed", (attribute, "'xmlns", "http://www.w3.org/2005/Atom"),
- (element, "'title", (attribute, "'type", "text"), car(l)),
- (element, "'id", cadr(l)))
- if isNil(cddr(l)):
- return writeXML((f,), True)
- fe = append(f, entriesElements(cddr(l)))
- return writeXML((fe,), True)
-
-# Convert an ATOM entry containing a value to an ATOM entry containing an item element
-def entryValuesToElements(v):
- return cons(car(v), cons(cadr(v), valuesToElements((cons("'item", caddr(v)),))))
-
-# Convert an ATOM feed containing values to an ATOM feed containing elements
-def feedValuesToElementsLoop(v):
- if isNil(v):
- return v
- return cons(entryValuesToElements(car(v)), feedValuesToElementsLoop(cdr(v)))
-
-def feedValuesToElements(v):
- return cons(car(v), cons(cadr(v), feedValuesToElementsLoop(cddr(v))))
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/__init__.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/__init__.py
+++ /dev/null
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/__init__.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/__init__.py
+++ /dev/null
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/__init__.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/__init__.py
deleted file mode 100644
index 15b7173976..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/__init__.py
+++ /dev/null
@@ -1,252 +0,0 @@
-r"""
-A simple, fast, extensible JSON encoder and decoder
-
-JSON (JavaScript Object Notation) <http://json.org> is a subset of
-JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
-interchange format.
-
-simplejson exposes an API familiar to uses of the standard library
-marshal and pickle modules.
-
-Encoding basic Python object hierarchies::
-
- >>> import simplejson
- >>> simplejson.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
- '["foo", {"bar": ["baz", null, 1.0, 2]}]'
- >>> print simplejson.dumps("\"foo\bar")
- "\"foo\bar"
- >>> print simplejson.dumps(u'\u1234')
- "\u1234"
- >>> print simplejson.dumps('\\')
- "\\"
- >>> print simplejson.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
- {"a": 0, "b": 0, "c": 0}
- >>> from StringIO import StringIO
- >>> io = StringIO()
- >>> simplejson.dump(['streaming API'], io)
- >>> io.getvalue()
- '["streaming API"]'
-
-Compact encoding::
-
- >>> import simplejson
- >>> simplejson.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
- '[1,2,3,{"4":5,"6":7}]'
-
-Pretty printing::
-
- >>> import simplejson
- >>> print simplejson.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
- {
- "4": 5,
- "6": 7
- }
-
-Decoding JSON::
-
- >>> import simplejson
- >>> simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
- [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
- >>> simplejson.loads('"\\"foo\\bar"')
- u'"foo\x08ar'
- >>> from StringIO import StringIO
- >>> io = StringIO('["streaming API"]')
- >>> simplejson.load(io)
- [u'streaming API']
-
-Specializing JSON object decoding::
-
- >>> import simplejson
- >>> def as_complex(dct):
- ... if '__complex__' in dct:
- ... return complex(dct['real'], dct['imag'])
- ... return dct
- ...
- >>> simplejson.loads('{"__complex__": true, "real": 1, "imag": 2}',
- ... object_hook=as_complex)
- (1+2j)
-
-Extending JSONEncoder::
-
- >>> import simplejson
- >>> class ComplexEncoder(simplejson.JSONEncoder):
- ... def default(self, obj):
- ... if isinstance(obj, complex):
- ... return [obj.real, obj.imag]
- ... return simplejson.JSONEncoder.default(self, obj)
- ...
- >>> dumps(2 + 1j, cls=ComplexEncoder)
- '[2.0, 1.0]'
- >>> ComplexEncoder().encode(2 + 1j)
- '[2.0, 1.0]'
- >>> list(ComplexEncoder().iterencode(2 + 1j))
- ['[', '2.0', ', ', '1.0', ']']
-
-
-Note that the JSON produced by this module's default settings
-is a subset of YAML, so it may be used as a serializer for that as well.
-"""
-__version__ = '1.5'
-__all__ = [
- 'dump', 'dumps', 'load', 'loads',
- 'JSONDecoder', 'JSONEncoder',
-]
-
-from django.utils.simplejson.decoder import JSONDecoder
-from django.utils.simplejson.encoder import JSONEncoder
-
-def dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
- allow_nan=True, cls=None, indent=None, **kw):
- """
- Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
- ``.write()``-supporting file-like object).
-
- If ``skipkeys`` is ``True`` then ``dict`` keys that are not basic types
- (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
- will be skipped instead of raising a ``TypeError``.
-
- If ``ensure_ascii`` is ``False``, then the some chunks written to ``fp``
- may be ``unicode`` instances, subject to normal Python ``str`` to
- ``unicode`` coercion rules. Unless ``fp.write()`` explicitly
- understands ``unicode`` (as in ``codecs.getwriter()``) this is likely
- to cause an error.
-
- If ``check_circular`` is ``False``, then the circular reference check
- for container types will be skipped and a circular reference will
- result in an ``OverflowError`` (or worse).
-
- If ``allow_nan`` is ``False``, then it will be a ``ValueError`` to
- serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``)
- in strict compliance of the JSON specification, instead of using the
- JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
- If ``indent`` is a non-negative integer, then JSON array elements and object
- members will be pretty-printed with that indent level. An indent level
- of 0 will only insert newlines. ``None`` is the most compact representation.
-
- To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
- ``.default()`` method to serialize additional types), specify it with
- the ``cls`` kwarg.
- """
- if cls is None:
- cls = JSONEncoder
- iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
- check_circular=check_circular, allow_nan=allow_nan, indent=indent,
- **kw).iterencode(obj)
- # could accelerate with writelines in some versions of Python, at
- # a debuggability cost
- for chunk in iterable:
- fp.write(chunk)
-
-def dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
- allow_nan=True, cls=None, indent=None, separators=None, **kw):
- """
- Serialize ``obj`` to a JSON formatted ``str``.
-
- If ``skipkeys`` is ``True`` then ``dict`` keys that are not basic types
- (``str``, ``unicode``, ``int``, ``long``, ``float``, ``bool``, ``None``)
- will be skipped instead of raising a ``TypeError``.
-
- If ``ensure_ascii`` is ``False``, then the return value will be a
- ``unicode`` instance subject to normal Python ``str`` to ``unicode``
- coercion rules instead of being escaped to an ASCII ``str``.
-
- If ``check_circular`` is ``False``, then the circular reference check
- for container types will be skipped and a circular reference will
- result in an ``OverflowError`` (or worse).
-
- If ``allow_nan`` is ``False``, then it will be a ``ValueError`` to
- serialize out of range ``float`` values (``nan``, ``inf``, ``-inf``) in
- strict compliance of the JSON specification, instead of using the
- JavaScript equivalents (``NaN``, ``Infinity``, ``-Infinity``).
-
- If ``indent`` is a non-negative integer, then JSON array elements and
- object members will be pretty-printed with that indent level. An indent
- level of 0 will only insert newlines. ``None`` is the most compact
- representation.
-
- If ``separators`` is an ``(item_separator, dict_separator)`` tuple
- then it will be used instead of the default ``(', ', ': ')`` separators.
- ``(',', ':')`` is the most compact JSON representation.
-
- To use a custom ``JSONEncoder`` subclass (e.g. one that overrides the
- ``.default()`` method to serialize additional types), specify it with
- the ``cls`` kwarg.
- """
- if cls is None:
- cls = JSONEncoder
- return cls(
- skipkeys=skipkeys, ensure_ascii=ensure_ascii,
- check_circular=check_circular, allow_nan=allow_nan, indent=indent,
- separators=separators,
- **kw).encode(obj)
-
-def load(fp, encoding=None, cls=None, object_hook=None, **kw):
- """
- Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
- a JSON document) to a Python object.
-
- If the contents of ``fp`` is encoded with an ASCII based encoding other
- than utf-8 (e.g. latin-1), then an appropriate ``encoding`` name must
- be specified. Encodings that are not ASCII based (such as UCS-2) are
- not allowed, and should be wrapped with
- ``codecs.getreader(fp)(encoding)``, or simply decoded to a ``unicode``
- object and passed to ``loads()``
-
- ``object_hook`` is an optional function that will be called with the
- result of any object literal decode (a ``dict``). The return value of
- ``object_hook`` will be used instead of the ``dict``. This feature
- can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
- To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
- kwarg.
- """
- if cls is None:
- cls = JSONDecoder
- if object_hook is not None:
- kw['object_hook'] = object_hook
- return cls(encoding=encoding, **kw).decode(fp.read())
-
-def loads(s, encoding=None, cls=None, object_hook=None, **kw):
- """
- Deserialize ``s`` (a ``str`` or ``unicode`` instance containing a JSON
- document) to a Python object.
-
- If ``s`` is a ``str`` instance and is encoded with an ASCII based encoding
- other than utf-8 (e.g. latin-1) then an appropriate ``encoding`` name
- must be specified. Encodings that are not ASCII based (such as UCS-2)
- are not allowed and should be decoded to ``unicode`` first.
-
- ``object_hook`` is an optional function that will be called with the
- result of any object literal decode (a ``dict``). The return value of
- ``object_hook`` will be used instead of the ``dict``. This feature
- can be used to implement custom decoders (e.g. JSON-RPC class hinting).
-
- To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
- kwarg.
- """
- if cls is None:
- cls = JSONDecoder
- if object_hook is not None:
- kw['object_hook'] = object_hook
- return cls(encoding=encoding, **kw).decode(s)
-
-def read(s):
- """
- json-py API compatibility hook. Use loads(s) instead.
- """
- import warnings
- warnings.warn("simplejson.loads(s) should be used instead of read(s)",
- DeprecationWarning)
- return loads(s)
-
-def write(obj):
- """
- json-py API compatibility hook. Use dumps(s) instead.
- """
- import warnings
- warnings.warn("simplejson.dumps(s) should be used instead of write(s)",
- DeprecationWarning)
- return dumps(obj)
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/decoder.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/decoder.py
deleted file mode 100644
index 66f68a200b..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/decoder.py
+++ /dev/null
@@ -1,273 +0,0 @@
-"""
-Implementation of JSONDecoder
-"""
-import re
-
-from django.utils.simplejson.scanner import Scanner, pattern
-
-FLAGS = re.VERBOSE | re.MULTILINE | re.DOTALL
-
-def _floatconstants():
- import struct
- import sys
- _BYTES = '7FF80000000000007FF0000000000000'.decode('hex')
- if sys.byteorder != 'big':
- _BYTES = _BYTES[:8][::-1] + _BYTES[8:][::-1]
- nan, inf = struct.unpack('dd', _BYTES)
- return nan, inf, -inf
-
-NaN, PosInf, NegInf = _floatconstants()
-
-def linecol(doc, pos):
- lineno = doc.count('\n', 0, pos) + 1
- if lineno == 1:
- colno = pos
- else:
- colno = pos - doc.rindex('\n', 0, pos)
- return lineno, colno
-
-def errmsg(msg, doc, pos, end=None):
- lineno, colno = linecol(doc, pos)
- if end is None:
- return '%s: line %d column %d (char %d)' % (msg, lineno, colno, pos)
- endlineno, endcolno = linecol(doc, end)
- return '%s: line %d column %d - line %d column %d (char %d - %d)' % (
- msg, lineno, colno, endlineno, endcolno, pos, end)
-
-_CONSTANTS = {
- '-Infinity': NegInf,
- 'Infinity': PosInf,
- 'NaN': NaN,
- 'true': True,
- 'false': False,
- 'null': None,
-}
-
-def JSONConstant(match, context, c=_CONSTANTS):
- return c[match.group(0)], None
-pattern('(-?Infinity|NaN|true|false|null)')(JSONConstant)
-
-def JSONNumber(match, context):
- match = JSONNumber.regex.match(match.string, *match.span())
- integer, frac, exp = match.groups()
- if frac or exp:
- res = float(integer + (frac or '') + (exp or ''))
- else:
- res = int(integer)
- return res, None
-pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(JSONNumber)
-
-STRINGCHUNK = re.compile(r'(.*?)(["\\])', FLAGS)
-BACKSLASH = {
- '"': u'"', '\\': u'\\', '/': u'/',
- 'b': u'\b', 'f': u'\f', 'n': u'\n', 'r': u'\r', 't': u'\t',
-}
-
-DEFAULT_ENCODING = "utf-8"
-
-def scanstring(s, end, encoding=None, _b=BACKSLASH, _m=STRINGCHUNK.match):
- if encoding is None:
- encoding = DEFAULT_ENCODING
- chunks = []
- _append = chunks.append
- begin = end - 1
- while 1:
- chunk = _m(s, end)
- if chunk is None:
- raise ValueError(
- errmsg("Unterminated string starting at", s, begin))
- end = chunk.end()
- content, terminator = chunk.groups()
- if content:
- if not isinstance(content, unicode):
- content = unicode(content, encoding)
- _append(content)
- if terminator == '"':
- break
- try:
- esc = s[end]
- except IndexError:
- raise ValueError(
- errmsg("Unterminated string starting at", s, begin))
- if esc != 'u':
- try:
- m = _b[esc]
- except KeyError:
- raise ValueError(
- errmsg("Invalid \\escape: %r" % (esc,), s, end))
- end += 1
- else:
- esc = s[end + 1:end + 5]
- try:
- m = unichr(int(esc, 16))
- if len(esc) != 4 or not esc.isalnum():
- raise ValueError
- except ValueError:
- raise ValueError(errmsg("Invalid \\uXXXX escape", s, end))
- end += 5
- _append(m)
- return u''.join(chunks), end
-
-def JSONString(match, context):
- encoding = getattr(context, 'encoding', None)
- return scanstring(match.string, match.end(), encoding)
-pattern(r'"')(JSONString)
-
-WHITESPACE = re.compile(r'\s*', FLAGS)
-
-def JSONObject(match, context, _w=WHITESPACE.match):
- pairs = {}
- s = match.string
- end = _w(s, match.end()).end()
- nextchar = s[end:end + 1]
- # trivial empty object
- if nextchar == '}':
- return pairs, end + 1
- if nextchar != '"':
- raise ValueError(errmsg("Expecting property name", s, end))
- end += 1
- encoding = getattr(context, 'encoding', None)
- iterscan = JSONScanner.iterscan
- while True:
- key, end = scanstring(s, end, encoding)
- end = _w(s, end).end()
- if s[end:end + 1] != ':':
- raise ValueError(errmsg("Expecting : delimiter", s, end))
- end = _w(s, end + 1).end()
- try:
- value, end = iterscan(s, idx=end, context=context).next()
- except StopIteration:
- raise ValueError(errmsg("Expecting object", s, end))
- pairs[key] = value
- end = _w(s, end).end()
- nextchar = s[end:end + 1]
- end += 1
- if nextchar == '}':
- break
- if nextchar != ',':
- raise ValueError(errmsg("Expecting , delimiter", s, end - 1))
- end = _w(s, end).end()
- nextchar = s[end:end + 1]
- end += 1
- if nextchar != '"':
- raise ValueError(errmsg("Expecting property name", s, end - 1))
- object_hook = getattr(context, 'object_hook', None)
- if object_hook is not None:
- pairs = object_hook(pairs)
- return pairs, end
-pattern(r'{')(JSONObject)
-
-def JSONArray(match, context, _w=WHITESPACE.match):
- values = []
- s = match.string
- end = _w(s, match.end()).end()
- # look-ahead for trivial empty array
- nextchar = s[end:end + 1]
- if nextchar == ']':
- return values, end + 1
- iterscan = JSONScanner.iterscan
- while True:
- try:
- value, end = iterscan(s, idx=end, context=context).next()
- except StopIteration:
- raise ValueError(errmsg("Expecting object", s, end))
- values.append(value)
- end = _w(s, end).end()
- nextchar = s[end:end + 1]
- end += 1
- if nextchar == ']':
- break
- if nextchar != ',':
- raise ValueError(errmsg("Expecting , delimiter", s, end))
- end = _w(s, end).end()
- return values, end
-pattern(r'\[')(JSONArray)
-
-ANYTHING = [
- JSONObject,
- JSONArray,
- JSONString,
- JSONConstant,
- JSONNumber,
-]
-
-JSONScanner = Scanner(ANYTHING)
-
-class JSONDecoder(object):
- """
- Simple JSON <http://json.org> decoder
-
- Performs the following translations in decoding:
-
- +---------------+-------------------+
- | JSON | Python |
- +===============+===================+
- | object | dict |
- +---------------+-------------------+
- | array | list |
- +---------------+-------------------+
- | string | unicode |
- +---------------+-------------------+
- | number (int) | int, long |
- +---------------+-------------------+
- | number (real) | float |
- +---------------+-------------------+
- | true | True |
- +---------------+-------------------+
- | false | False |
- +---------------+-------------------+
- | null | None |
- +---------------+-------------------+
-
- It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as
- their corresponding ``float`` values, which is outside the JSON spec.
- """
-
- _scanner = Scanner(ANYTHING)
- __all__ = ['__init__', 'decode', 'raw_decode']
-
- def __init__(self, encoding=None, object_hook=None):
- """
- ``encoding`` determines the encoding used to interpret any ``str``
- objects decoded by this instance (utf-8 by default). It has no
- effect when decoding ``unicode`` objects.
-
- Note that currently only encodings that are a superset of ASCII work,
- strings of other encodings should be passed in as ``unicode``.
-
- ``object_hook``, if specified, will be called with the result
- of every JSON object decoded and its return value will be used in
- place of the given ``dict``. This can be used to provide custom
- deserializations (e.g. to support JSON-RPC class hinting).
- """
- self.encoding = encoding
- self.object_hook = object_hook
-
- def decode(self, s, _w=WHITESPACE.match):
- """
- Return the Python representation of ``s`` (a ``str`` or ``unicode``
- instance containing a JSON document)
- """
- obj, end = self.raw_decode(s, idx=_w(s, 0).end())
- end = _w(s, end).end()
- if end != len(s):
- raise ValueError(errmsg("Extra data", s, end, len(s)))
- return obj
-
- def raw_decode(self, s, **kw):
- """
- Decode a JSON document from ``s`` (a ``str`` or ``unicode`` beginning
- with a JSON document) and return a 2-tuple of the Python
- representation and the index in ``s`` where the document ended.
-
- This can be used to decode a JSON document from a string that may
- have extraneous data at the end.
- """
- kw.setdefault('context', self)
- try:
- obj, end = self._scanner.iterscan(s, **kw).next()
- except StopIteration:
- raise ValueError("No JSON object could be decoded")
- return obj, end
-
-__all__ = ['JSONDecoder']
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/encoder.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/encoder.py
deleted file mode 100644
index c83c6873eb..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/encoder.py
+++ /dev/null
@@ -1,331 +0,0 @@
-"""
-Implementation of JSONEncoder
-"""
-import re
-
-ESCAPE = re.compile(r'[\x00-\x19\\"\b\f\n\r\t]')
-ESCAPE_ASCII = re.compile(r'([\\"/]|[^\ -~])')
-ESCAPE_DCT = {
- # escape all forward slashes to prevent </script> attack
- '/': '\\/',
- '\\': '\\\\',
- '"': '\\"',
- '\b': '\\b',
- '\f': '\\f',
- '\n': '\\n',
- '\r': '\\r',
- '\t': '\\t',
-}
-for i in range(0x20):
- ESCAPE_DCT.setdefault(chr(i), '\\u%04x' % (i,))
-
-# assume this produces an infinity on all machines (probably not guaranteed)
-INFINITY = float('1e66666')
-
-def floatstr(o, allow_nan=True):
- # Check for specials. Note that this type of test is processor- and/or
- # platform-specific, so do tests which don't depend on the internals.
-
- if o != o:
- text = 'NaN'
- elif o == INFINITY:
- text = 'Infinity'
- elif o == -INFINITY:
- text = '-Infinity'
- else:
- return str(o)
-
- if not allow_nan:
- raise ValueError("Out of range float values are not JSON compliant: %r"
- % (o,))
-
- return text
-
-
-def encode_basestring(s):
- """
- Return a JSON representation of a Python string
- """
- def replace(match):
- return ESCAPE_DCT[match.group(0)]
- return '"' + ESCAPE.sub(replace, s) + '"'
-
-def encode_basestring_ascii(s):
- def replace(match):
- s = match.group(0)
- try:
- return ESCAPE_DCT[s]
- except KeyError:
- return '\\u%04x' % (ord(s),)
- return '"' + str(ESCAPE_ASCII.sub(replace, s)) + '"'
-
-
-class JSONEncoder(object):
- """
- Extensible JSON <http://json.org> encoder for Python data structures.
-
- Supports the following objects and types by default:
-
- +-------------------+---------------+
- | Python | JSON |
- +===================+===============+
- | dict | object |
- +-------------------+---------------+
- | list, tuple | array |
- +-------------------+---------------+
- | str, unicode | string |
- +-------------------+---------------+
- | int, long, float | number |
- +-------------------+---------------+
- | True | true |
- +-------------------+---------------+
- | False | false |
- +-------------------+---------------+
- | None | null |
- +-------------------+---------------+
-
- To extend this to recognize other objects, subclass and implement a
- ``.default()`` method with another method that returns a serializable
- object for ``o`` if possible, otherwise it should call the superclass
- implementation (to raise ``TypeError``).
- """
- __all__ = ['__init__', 'default', 'encode', 'iterencode']
- item_separator = ', '
- key_separator = ': '
- def __init__(self, skipkeys=False, ensure_ascii=True,
- check_circular=True, allow_nan=True, sort_keys=False,
- indent=None, separators=None):
- """
- Constructor for JSONEncoder, with sensible defaults.
-
- If skipkeys is False, then it is a TypeError to attempt
- encoding of keys that are not str, int, long, float or None. If
- skipkeys is True, such items are simply skipped.
-
- If ensure_ascii is True, the output is guaranteed to be str
- objects with all incoming unicode characters escaped. If
- ensure_ascii is false, the output will be unicode object.
-
- If check_circular is True, then lists, dicts, and custom encoded
- objects will be checked for circular references during encoding to
- prevent an infinite recursion (which would cause an OverflowError).
- Otherwise, no such check takes place.
-
- If allow_nan is True, then NaN, Infinity, and -Infinity will be
- encoded as such. This behavior is not JSON specification compliant,
- but is consistent with most JavaScript based encoders and decoders.
- Otherwise, it will be a ValueError to encode such floats.
-
- If sort_keys is True, then the output of dictionaries will be
- sorted by key; this is useful for regression tests to ensure
- that JSON serializations can be compared on a day-to-day basis.
-
- If indent is a non-negative integer, then JSON array
- elements and object members will be pretty-printed with that
- indent level. An indent level of 0 will only insert newlines.
- None is the most compact representation.
-
- If specified, separators should be a (item_separator, key_separator)
- tuple. The default is (', ', ': '). To get the most compact JSON
- representation you should specify (',', ':') to eliminate whitespace.
- """
-
- self.skipkeys = skipkeys
- self.ensure_ascii = ensure_ascii
- self.check_circular = check_circular
- self.allow_nan = allow_nan
- self.sort_keys = sort_keys
- self.indent = indent
- self.current_indent_level = 0
- if separators is not None:
- self.item_separator, self.key_separator = separators
-
- def _newline_indent(self):
- return '\n' + (' ' * (self.indent * self.current_indent_level))
-
- def _iterencode_list(self, lst, markers=None):
- if not lst:
- yield '[]'
- return
- if markers is not None:
- markerid = id(lst)
- if markerid in markers:
- raise ValueError("Circular reference detected")
- markers[markerid] = lst
- yield '['
- if self.indent is not None:
- self.current_indent_level += 1
- newline_indent = self._newline_indent()
- separator = self.item_separator + newline_indent
- yield newline_indent
- else:
- newline_indent = None
- separator = self.item_separator
- first = True
- for value in lst:
- if first:
- first = False
- else:
- yield separator
- for chunk in self._iterencode(value, markers):
- yield chunk
- if newline_indent is not None:
- self.current_indent_level -= 1
- yield self._newline_indent()
- yield ']'
- if markers is not None:
- del markers[markerid]
-
- def _iterencode_dict(self, dct, markers=None):
- if not dct:
- yield '{}'
- return
- if markers is not None:
- markerid = id(dct)
- if markerid in markers:
- raise ValueError("Circular reference detected")
- markers[markerid] = dct
- yield '{'
- key_separator = self.key_separator
- if self.indent is not None:
- self.current_indent_level += 1
- newline_indent = self._newline_indent()
- item_separator = self.item_separator + newline_indent
- yield newline_indent
- else:
- newline_indent = None
- item_separator = self.item_separator
- first = True
- if self.ensure_ascii:
- encoder = encode_basestring_ascii
- else:
- encoder = encode_basestring
- allow_nan = self.allow_nan
- if self.sort_keys:
- keys = dct.keys()
- keys.sort()
- items = [(k, dct[k]) for k in keys]
- else:
- items = dct.iteritems()
- for key, value in items:
- if isinstance(key, basestring):
- pass
- # JavaScript is weakly typed for these, so it makes sense to
- # also allow them. Many encoders seem to do something like this.
- elif isinstance(key, float):
- key = floatstr(key, allow_nan)
- elif isinstance(key, (int, long)):
- key = str(key)
- elif key is True:
- key = 'true'
- elif key is False:
- key = 'false'
- elif key is None:
- key = 'null'
- elif self.skipkeys:
- continue
- else:
- raise TypeError("key %r is not a string" % (key,))
- if first:
- first = False
- else:
- yield item_separator
- yield encoder(key)
- yield key_separator
- for chunk in self._iterencode(value, markers):
- yield chunk
- if newline_indent is not None:
- self.current_indent_level -= 1
- yield self._newline_indent()
- yield '}'
- if markers is not None:
- del markers[markerid]
-
- def _iterencode(self, o, markers=None):
- if isinstance(o, basestring):
- if self.ensure_ascii:
- encoder = encode_basestring_ascii
- else:
- encoder = encode_basestring
- yield encoder(o)
- elif o is None:
- yield 'null'
- elif o is True:
- yield 'true'
- elif o is False:
- yield 'false'
- elif isinstance(o, (int, long)):
- yield str(o)
- elif isinstance(o, float):
- yield floatstr(o, self.allow_nan)
- elif isinstance(o, (list, tuple)):
- for chunk in self._iterencode_list(o, markers):
- yield chunk
- elif isinstance(o, dict):
- for chunk in self._iterencode_dict(o, markers):
- yield chunk
- else:
- if markers is not None:
- markerid = id(o)
- if markerid in markers:
- raise ValueError("Circular reference detected")
- markers[markerid] = o
- for chunk in self._iterencode_default(o, markers):
- yield chunk
- if markers is not None:
- del markers[markerid]
-
- def _iterencode_default(self, o, markers=None):
- newobj = self.default(o)
- return self._iterencode(newobj, markers)
-
- def default(self, o):
- """
- Implement this method in a subclass such that it returns
- a serializable object for ``o``, or calls the base implementation
- (to raise a ``TypeError``).
-
- For example, to support arbitrary iterators, you could
- implement default like this::
-
- def default(self, o):
- try:
- iterable = iter(o)
- except TypeError:
- pass
- else:
- return list(iterable)
- return JSONEncoder.default(self, o)
- """
- raise TypeError("%r is not JSON serializable" % (o,))
-
- def encode(self, o):
- """
- Return a JSON string representation of a Python data structure.
-
- >>> JSONEncoder().encode({"foo": ["bar", "baz"]})
- '{"foo":["bar", "baz"]}'
- """
- # This doesn't pass the iterator directly to ''.join() because it
- # sucks at reporting exceptions. It's going to do this internally
- # anyway because it uses PySequence_Fast or similar.
- chunks = list(self.iterencode(o))
- return ''.join(chunks)
-
- def iterencode(self, o):
- """
- Encode the given object and yield each string
- representation as available.
-
- For example::
-
- for chunk in JSONEncoder().iterencode(bigobject):
- mysocket.write(chunk)
- """
- if self.check_circular:
- markers = {}
- else:
- markers = None
- return self._iterencode(o, markers)
-
-__all__ = ['JSONEncoder']
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/jsonfilter.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/jsonfilter.py
deleted file mode 100644
index d02ae2033a..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/jsonfilter.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from django.utils import simplejson
-import cgi
-
-class JSONFilter(object):
- def __init__(self, app, mime_type='text/x-json'):
- self.app = app
- self.mime_type = mime_type
-
- def __call__(self, environ, start_response):
- # Read JSON POST input to jsonfilter.json if matching mime type
- response = {'status': '200 OK', 'headers': []}
- def json_start_response(status, headers):
- response['status'] = status
- response['headers'].extend(headers)
- environ['jsonfilter.mime_type'] = self.mime_type
- if environ.get('REQUEST_METHOD', '') == 'POST':
- if environ.get('CONTENT_TYPE', '') == self.mime_type:
- args = [_ for _ in [environ.get('CONTENT_LENGTH')] if _]
- data = environ['wsgi.input'].read(*map(int, args))
- environ['jsonfilter.json'] = simplejson.loads(data)
- res = simplejson.dumps(self.app(environ, json_start_response))
- jsonp = cgi.parse_qs(environ.get('QUERY_STRING', '')).get('jsonp')
- if jsonp:
- content_type = 'text/javascript'
- res = ''.join(jsonp + ['(', res, ')'])
- elif 'Opera' in environ.get('HTTP_USER_AGENT', ''):
- # Opera has bunk XMLHttpRequest support for most mime types
- content_type = 'text/plain'
- else:
- content_type = self.mime_type
- headers = [
- ('Content-type', content_type),
- ('Content-length', len(res)),
- ]
- headers.extend(response['headers'])
- start_response(response['status'], headers)
- return [res]
-
-def factory(app, global_conf, **kw):
- return JSONFilter(app, **kw)
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/scanner.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/scanner.py
deleted file mode 100644
index 64f4999fb5..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/django/utils/simplejson/scanner.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""
-Iterator based sre token scanner
-"""
-import sre_parse, sre_compile, sre_constants
-from sre_constants import BRANCH, SUBPATTERN
-from re import VERBOSE, MULTILINE, DOTALL
-import re
-
-__all__ = ['Scanner', 'pattern']
-
-FLAGS = (VERBOSE | MULTILINE | DOTALL)
-class Scanner(object):
- def __init__(self, lexicon, flags=FLAGS):
- self.actions = [None]
- # combine phrases into a compound pattern
- s = sre_parse.Pattern()
- s.flags = flags
- p = []
- for idx, token in enumerate(lexicon):
- phrase = token.pattern
- try:
- subpattern = sre_parse.SubPattern(s,
- [(SUBPATTERN, (idx + 1, sre_parse.parse(phrase, flags)))])
- except sre_constants.error:
- raise
- p.append(subpattern)
- self.actions.append(token)
-
- p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
- self.scanner = sre_compile.compile(p)
-
-
- def iterscan(self, string, idx=0, context=None):
- """
- Yield match, end_idx for each match
- """
- match = self.scanner.scanner(string, idx).match
- actions = self.actions
- lastend = idx
- end = len(string)
- while True:
- m = match()
- if m is None:
- break
- matchbegin, matchend = m.span()
- if lastend == matchend:
- break
- action = actions[m.lastindex]
- if action is not None:
- rval, next_pos = action(m, context)
- if next_pos is not None and next_pos != matchend:
- # "fast forward" the scanner
- matchend = next_pos
- match = self.scanner.scanner(string, matchend).match
- yield rval, matchend
- lastend = matchend
-
-def pattern(pattern, flags=FLAGS):
- def decorator(fn):
- fn.pattern = pattern
- fn.regex = re.compile(pattern, flags)
- return fn
- return decorator
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/elemutil.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/elemutil.py
deleted file mode 100644
index ad971ba6ba..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/elemutil.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# 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.
-
-# Functions to help represent data as lists of elements and attributes
-
-from util import *
-
-element = "'element"
-attribute = "'attribute"
-atsign = "'@"
-
-# Return true if a value is an element
-def isElement(v):
- if not isList(v) or isNil(v) or v == None or car(v) != element:
- return False
- return True
-
-# Return true if a value is an attribute
-def isAttribute(v):
- if not isList(v) or isNil(v) or v == None or car(v) != attribute:
- return False
- return True
-
-# Return the name of attribute
-def attributeName(l):
- return cadr(l)
-
-# Return the value of attribute
-def attributeValue(l):
- return caddr(l)
-
-# Return the name of an element
-def elementName(l):
- return cadr(l)
-
-# Return true if an element has children
-def elementHasChildren(l):
- return not isNil(cddr(l))
-
-# Return the children of an element
-def elementChildren(l):
- return cddr(l)
-
-# Return true if an element has a value
-def elementHasValue(l):
- r = reverse(l)
- if isSymbol(car(r)):
- return False
- if isList(car(r)) and not isNil(car(r)) and isSymbol(car(car(r))):
- return False
- return True
-
-# Return the value of an element
-def elementValue(l):
- return car(reverse(l))
-
-# Convert an element to a value
-def elementToValueIsList(v):
- if not isList(v):
- return False
- return isNil(v) or not isSymbol(car(v))
-
-def elementToValue(t):
- if isTaggedList(t, attribute):
- return (atsign + attributeName(t)[1:], attributeValue(t))
- if isTaggedList(t, element):
- if elementHasValue(t):
- if not elementToValueIsList(elementValue(t)):
- return (elementName(t), elementValue(t))
- return cons(elementName(t), (elementsToValues(elementValue(t)),))
- return cons(elementName(t), elementsToValues(elementChildren(t)))
- if not isList(t):
- return t
- return elementsToValues(t)
-
-# Convert a list of elements to a list of values
-def elementToValueIsSymbol(v):
- if not isList(v):
- return False
- if (isNil(v)):
- return False
- if not isSymbol(car(v)):
- return False
- return True
-
-def elementToValueGroupValues(v, l):
- if isNil(l) or not elementToValueIsSymbol(v) or not elementToValueIsSymbol(car(l)):
- return cons(v, l)
- if car(car(l)) != car(v):
- return cons(v, l)
- if not elementToValueIsList(cadr(car(l))):
- g = (car(v), (cdr(v), cdr(car(l))))
- return elementToValueGroupValues(g, cdr(l))
- g = (car(v), cons(cdr(v), cadr(car(l))))
- return elementToValueGroupValues(g, cdr(l))
-
-def elementsToValues(e):
- if isNil(e):
- return e
- return elementToValueGroupValues(elementToValue(car(e)), elementsToValues(cdr(e)))
-
-# Convert a value to an element
-def valueToElement(t):
- if isList(t) and not isNil(t) and isSymbol(car(t)):
- n = car(t)
- v = cadr(t)
- if not isList(v):
- if n[0:2] == atsign:
- return (attribute, n[1:], v)
- return (element, n, v)
- if isNil(v) or not isSymbol(car(v)):
- return cons(element, cons(n, (valuesToElements(v),)))
- return cons(element, cons(n, valuesToElements(cdr(t))))
- if not isList(t):
- return t
- return valuesToElements(t)
-
-# Convert a list of values to a list of elements
-def valuesToElements(l):
- if isNil(l):
- return l
- return cons(valueToElement(car(l)), valuesToElements(cdr(l)))
-
-# Return a selector lambda function which can be used to filter elements
-def evalSelect(s, v):
- if isNil(s):
- return True
- if isNil(v):
- return False
- if car(s) != car(v):
- return False
- return evalSelect(cdr(s), cdr(v))
-
-def selector(s):
- return lambda v: evalSelect(s, v)
-
-# Return the value of the attribute with the given name
-def namedAttributeValue(name, l):
- f = filter(lambda v: isAttribute(v) and attributeName(v) == name, l)
- if isNil(f):
- return None
- return caddr(car(f))
-
-# Return child elements with the given name
-def namedElementChildren(name, l):
- return filter(lambda v: isElement(v) and elementName(v) == name, l)
-
-# Return the child element with the given name
-def namedElementChild(name, l):
- f = namedElementChildren(name, l)
- if isNil(f):
- return None
- return car(f)
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/invoker.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/invoker.py
deleted file mode 100644
index 48107671d6..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/invoker.py
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/python
-# 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.
-
-# Component invocation functions
-
-from sys import stderr, argv
-from util import *
-from jsonutil import *
-
-# JSON request id
-id = 1
-
-# Make a callable reference client
-class proxy:
- def __init__(self, jpx):
- self.jpx = jpx
-
- def __call__(self, func, *args):
-
- # Create a JSON-RPC request
- global id
- req = StringIO()
- writeStrings(jsonRequest(id, func, args), req)
- id = id + 1
-
- # Eval the Java proxy
- res = self.jpx.eval(req.getvalue())
-
- # Extract result from JSON-RPC response
- return jsonResultValue((res,))
-
- def __repr__(self):
- return repr((jpx,))
-
-def mkproxies(jpx):
- if isNil(jpx):
- return ()
- return cons(proxy(car(jpx)), mkproxies(cdr(jpx)))
-
-class prop:
- def __init__(self, jpy):
- self.jpy = jpy
-
- def __call__(self):
- # Eval the property
- res = self.jpy.eval()
- return res
-
-def __repr__(self):
- return repr((jpy,))
-
-def mkprops(jpy):
- if isNil(jpy):
- return ()
- return cons(prop(car(jpy)), mkprops(cdr(jpy)))
-
-# Make a callable component
-class component:
- def __init__(self, name, impl, jpx, jpy):
- self.name = name
- self.impl = impl[0:len(impl) - 3]
- self.mod = __import__(self.impl)
- self.proxies = mkproxies(jpx)
- self.props = mkprops(jpy)
-
- def __call__(self, func, *args):
- return self.mod.__getattribute__(func)(*(args + self.proxies + self.props))
-
- def __repr__(self):
- return repr((self.name, self.impl, self.mod, self.props, self.proxies))
-
-# Converts the args received in a JSON request to a list of key value pairs
-def jsonArgs(a):
- if isNil(a):
- return ((),)
- l = car(a);
- return cons(l, jsonArgs(cdr(a)))
-
-# Apply a JSON function request to a component
-def apply(jsreq, comp):
- json = elementsToValues(readJSON((jsreq,)))
- args = jsonArgs(json)
- jid = cadr(assoc("'id", args))
- func = funcName(cadr(assoc("'method", args)))
- params = cadr(assoc("'params", args))
- v = comp(func, *params)
- return jsonResult(jid, v)[0]
-
-# Make a component that can be called with a JSON function request
-def mkcomponent(name, impl, jpx, jpy):
- comp = component(name, impl, jpx, jpy)
- return lambda jsreq: apply(jsreq, comp)
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/jsonutil.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/jsonutil.py
deleted file mode 100644
index f69559de54..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/jsonutil.py
+++ /dev/null
@@ -1,142 +0,0 @@
-# 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.
-
-# JSON data conversion functions
-
-try:
- import json
-except:
- from django.utils import simplejson as json
-
-from StringIO import StringIO
-from util import *
-from elemutil import *
-
-# Return true if a list represents a JS array
-def isJSArray(l):
- if isNil(l):
- return True
- v = car(l)
- if isSymbol(v):
- return False
- if isList(v):
- if not isNil(v) and isSymbol(car(v)):
- return False
- return True
-
-# Converts JSON properties to values
-def jsPropertiesToValues(propertiesSoFar, o, i):
- if isNil(i):
- return propertiesSoFar
- p = car(i)
- jsv = o[p]
- v = jsValToValue(jsv)
-
- if isinstance(p, basestring):
- n = str(p)
- if n[0:1] == "@":
- return jsPropertiesToValues(cons((attribute, "'" + n[1:], v), propertiesSoFar), o, cdr(i))
- if isList(v) and not isJSArray(v):
- return jsPropertiesToValues(cons(cons(element, cons("'" + n, v)), propertiesSoFar), o, cdr(i))
- return jsPropertiesToValues(cons((element, "'" + n, v), propertiesSoFar), o, cdr(i))
- return jsPropertiesToValues(cons(v, propertiesSoFar), o, cdr(i))
-
-# Converts a JSON val to a value
-def jsValToValue(jsv):
- if isinstance(jsv, dict):
- return jsPropertiesToValues((), jsv, tuple(jsv.keys()))
- if isList(jsv):
- return jsPropertiesToValues((), jsv, tuple(reversed(range(0, len(jsv)))))
- if isinstance(jsv, basestring):
- return str(jsv)
- return jsv
-
-# Convert a list of strings representing a JSON document to a list of values
-def readJSON(l):
- s = StringIO()
- writeStrings(l, s)
- val = json.loads(s.getvalue())
- return jsValToValue(val)
-
-# Convert a list of values to JSON array elements
-def valuesToJSElements(a, l, i):
- if isNil(l):
- return a
- pv = valueToJSVal(car(l))
- a[i] = pv
- return valuesToJSElements(a, cdr(l), i + 1)
-
-# Convert a value to a JSON value
-def valueToJSVal(v):
- if not isList(v):
- return v
- if isJSArray(v):
- return valuesToJSElements(list(range(0, len(v))), v, 0)
- return valuesToJSProperties({}, v)
-
-# Convert a list of values to JSON properties
-def valuesToJSProperties(o, l):
- if isNil(l):
- return o
- token = car(l)
- if isTaggedList(token, attribute):
- pv = valueToJSVal(attributeValue(token))
- o["@" + attributeName(token)[1:]] = pv
- elif isTaggedList(token, element):
- if elementHasValue(token):
- pv = valueToJSVal(elementValue(token))
- o[elementName(token)[1:]] = pv
- else:
- child = {}
- o[elementName(token)[1:]] = child
- valuesToJSProperties(child, elementChildren(token))
- return valuesToJSProperties(o, cdr(l))
-
-# Convert a list of values to a list of strings representing a JSON document
-def writeJSON(l):
- jsv = valuesToJSProperties({}, l)
- s = json.dumps(jsv, separators=(',',':'))
- return (s,)
-
-# Convert a list + params to a JSON-RPC request
-def jsonRequest(id, func, params):
- r = (("'id", id), ("'method", func), ("'params", params))
- return writeJSON(valuesToElements(r))
-
-# Convert a value to a JSON-RPC result
-def jsonResult(id, val):
- return writeJSON(valuesToElements((("'id", id), ("'result", val))))
-
-# Convert a JSON-RPC result to a value
-def jsonResultValue(s):
- jsres = readJSON(s)
- res = elementsToValues(jsres)
- val = cadr(assoc("'result", res))
- if isList(val) and not isJSArray(val):
- return (val,)
- return val
-
-# Return a portable function name from a JSON-RPC function name
-def funcName(f):
- if f.startswith("."):
- return f[1:]
- if f.startswith("system."):
- return f[7:]
- if f.startswith("Service."):
- return f[8:]
- return f
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/rssutil.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/rssutil.py
deleted file mode 100644
index 4f060d2321..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/rssutil.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# 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.
-
-# RSS data conversion functions
-
-from util import *
-from elemutil import *
-from xmlutil import *
-
-# Convert a list of elements to a list of values representing an RSS entry
-def entryElementsToValues(e):
- lt = filter(selector((element, "'title")), e)
- t = "" if isNil(lt) else elementValue(car(lt))
- li = filter(selector((element, "'link")), e)
- i = "" if isNil(li) else elementValue(car(li))
- lc = filter(selector((element, "'description")), e)
- return (t, i, elementValue(car(lc)))
-
-# Convert a list of elements to a list of values representing RSS entries
-def entriesElementsToValues(e):
- if isNil(e):
- return e
- return cons(entryElementsToValues(car(e)), entriesElementsToValues(cdr(e)))
-
-# Convert a list of strings to a list of values representing an RSS entry
-def readRSSEntry(l):
- e = readXML(l)
- if isNil(e):
- return ()
- return entryElementsToValues(car(e))
-
-# Convert a list of values representy an RSS entry to a value
-def entryValue(e):
- v = elementsToValues((caddr(e),))
- return cons(car(e), (cadr(e), cdr(car(v))))
-
-# Return true if a list of strings represents an RSS feed
-def isRSSFeed(l):
- if isNil(l):
- return False
- if car(l)[0:5] != "<?xml":
- return False
- return contains(car(l), "<rss")
-
-# Convert a list of strings to a list of values representing an RSS feed
-def readRSSFeed(l):
- f = readXML(l)
- if isNil(f):
- return ()
- c = filter(selector((element, "'channel")), car(f))
- t = filter(selector((element, "'title")), car(c))
- i = filter(selector((element, "'link")), car(c))
- e = filter(selector((element, "'item")), car(c))
- if isNil(e):
- return (elementValue(car(t)), elementValue(car(i)))
- return cons(elementValue(car(t)), cons(elementValue(car(i)), entriesElementsToValues(e)))
-
-# Convert an RSS feed containing elements to an RSS feed containing values
-def feedValuesLoop(e):
- if (isNil(e)):
- return e
- return cons(entryValue(car(e)), feedValuesLoop(cdr(e)))
-
-def feedValues(e):
- return cons(car(e), cons(cadr(e), feedValuesLoop(cddr(e))))
-
-# Convert a list of values representy an RSS entry to a list of elements
-def entryElement(l):
- return (element, "'item",
- (element, "'title", car(l)),
- (element, "'link", cadr(l)),
- (element, "'description", caddr(l)))
-
-# Convert a list of values representing RSS entries to a list of elements
-def entriesElements(l):
- if isNil(l):
- return l
- return cons(entryElement(car(l)), entriesElements(cdr(l)))
-
-# Convert a list of values representing an RSS entry to an RSS entry
-def writeRSSEntry(l):
- return writeXML((entryElement(l),), True)
-
-# Convert a list of values representing an RSS feed to an RSS feed
-def writeRSSFeed(l):
- c = ((element, "'title", car(l)),
- (element, "'link", cadr(l)),
- (element, "'description", car(l)))
- ce = c if isNil(cddr(l)) else append(c, entriesElements(cddr(l)))
- fe = (element, "'rss", (attribute, "'version", "2.0"), append((element, "'channel"), ce))
- return writeXML((fe,), True)
-
-# Convert an RSS entry containing a value to an RSS entry containing an item element
-def entryValuesToElements(v):
- return cons(car(v), cons(cadr(v), valuesToElements((cons("'item", caddr(v)),))))
-
-# Convert an RSS feed containing values to an RSS feed containing elements
-def feedValuesToElementsLoop(v):
- if isNil(v):
- return v
- return cons(entryValuesToElements(car(v)), feedValuesToElementsLoop(cdr(v)))
-
-def feedValuesToElements(v):
- return cons(car(v), cons(cadr(v), feedValuesToElementsLoop(cddr(v))))
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/util.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/util.py
deleted file mode 100644
index 560101e32d..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/util.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# 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.
-
-# Simple utility functions
-from sys import maxint
-
-# Scheme-like lists
-def cons(a, b):
- return (a,) + b
-
-def car(l):
- return l[0]
-
-def first(l):
- return car(l)
-
-def cdr(l):
- return l[1:]
-
-def rest(l):
- return cdr(l)
-
-def cadr(l):
- return car(cdr(l))
-
-def cddr(l):
- return cdr(cdr(l))
-
-def caddr(l):
- return car(cddr(l))
-
-def append(a, b):
- return a + b
-
-def reverse(l):
- r = list(l)
- r.reverse()
- return tuple(r)
-
-def isNil(l):
- if isinstance(l, streampair):
- return l.isNil()
- return l == ()
-
-def isSymbol(v):
- return isinstance(v, basestring) and v[0:1] == "'"
-
-def isList(v):
- if getattr(v, '__iter__', False) == False:
- return False
- if isinstance(v, basestring) or isinstance(v, dict):
- return False
- return True
-
-def isTaggedList(v, t):
- return isList(v) and not isNil(v) and car(v) == t
-
-
-# Scheme-like streams
-class streampair(object):
- def __init__(self, car, cdr):
- self.car = car
- self.cdr = cdr
-
- def __repr__(self):
- return repr(self[0:len(self)])
-
- def isNil(self):
- return self.cdr == ()
-
- def __len__(self):
- if self.cdr == ():
- return 0
- return 1 + len(self.cdr())
-
- def __getitem__(self, i):
- if i == 0:
- return self.car
- return self.cdr()[i - 1]
-
- def __getslice__(self, i, j):
- if isNil(self):
- return ()
- if i > 0:
- if j == maxint:
- return self.cdr()[i - 1: j]
- return self.cdr()[i - 1: j - 1]
- if j == maxint:
- return self
- if j == 0:
- return (self.car,)
- return (self.car,) + self.cdr()[: j - 1]
-
- def __eq__(self, other):
- sl = len(self)
- ol = len(other)
- if sl != ol:
- return False
- return self[0: sl] == other[0: ol]
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
-def cons_stream(car, cdr):
- return streampair(car, cdr)
-
-
-# Scheme-like associations
-def assoc(k, l):
- if l == ():
- return None
-
- if k == car(car(l)):
- return car(l)
- return assoc(k, cdr(l))
-
-# Currying / partial function application
-def curry(f, *args):
- return lambda *a: f(*(args + a))
-
-# Split a path into a list of segments
-def tokens(path):
- return tuple(filter(lambda s: len(s) != 0, path.split("/")))
-
-# Write a list of strings to a stream
-def writeStrings(l, os):
- if l == ():
- return os
- os.write(car(l))
- return writeStrings(cdr(l), os)
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/xmlutil.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/xmlutil.py
deleted file mode 100644
index a1bc04629a..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/main/resources/xmlutil.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# 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.
-
-# XML handling functions
-
-from StringIO import StringIO
-from xml.parsers import expat
-import xml.etree.ElementTree as et
-from util import *
-from elemutil import *
-
-# Read a list of XML attributes
-def readAttributes(a):
- if a == ():
- return a
- return cons((attribute, "'" + car(car(a)), cadr(car(a))), readAttributes(cdr(a)))
-
-# Read an XML element
-def readElement(e):
- l = (element, "'" + e.tag) + readAttributes(tuple(e.items())) + readElements(tuple(e.getchildren()))
- if e.text == None:
- return l
- return l + (e.text,)
-
-# Read a list of XML elements
-def readElements(l):
- if l == ():
- return l
- return cons(readElement(car(l)), readElements(cdr(l)))
-
-# Parse a list of strings representing an XML document
-class NamespaceParser(et.XMLTreeBuilder):
- def __init__(self):
- et.XMLTreeBuilder.__init__(self)
- self._parser = parser = expat.ParserCreate(None)
- parser.DefaultHandlerExpand = self._default
- parser.StartElementHandler = self._start
- parser.EndElementHandler = self._end
- parser.CharacterDataHandler = self._data
- try:
- parser.buffer_text = 1
- except AttributeError:
- pass
- try:
- parser.ordered_attributes = 1
- parser.specified_attributes = 1
- parser.StartElementHandler = self._start_list
- except AttributeError:
- pass
-
-def parseXML(l):
- s = StringIO()
- writeStrings(l, s)
- parser = NamespaceParser()
- parser.feed(s.getvalue())
- return parser.close()
-
-# Read a list of values from a list of strings representing an XML document
-def readXML(l):
- e = parseXML(l)
- return (readElement(e),)
-
-# Write a list of XML element and attribute tokens
-def expandElementValues(n, l):
- if isNil(l):
- return l
- return cons(cons(element, cons(n, car(l))), expandElementValues(n, cdr(l)))
-
-def writeList(l, xml):
- if isNil(l):
- return xml
- token = car(l)
- if isTaggedList(token, attribute):
- xml.attrib[attributeName(token)[1:]] = str(attributeValue(token))
- elif isTaggedList(token, element):
- if elementHasValue(token):
- v = elementValue(token)
- if isList(v):
- e = expandElementValues(elementName(token), v)
- writeList(e, xml)
- else:
- child = et.Element(elementName(token)[1:])
- writeList(elementChildren(token), child)
- xml.append(child)
- else:
- child = et.Element(elementName(token)[1:])
- writeList(elementChildren(token), child)
- xml.append(child)
- else:
- xml.text = str(token)
- writeList(cdr(l), xml)
- return xml
-
-# Convert a list of values to a list of strings representing an XML document
-def writeXML(l, xmlTag):
- e = writeList(l, [])
- if not xmlTag:
- return (et.tostring(car(e)),)
- return (et.tostring(car(e), "UTF-8") + "\n",)
-
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ClientTest.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ClientTest.java
deleted file mode 100644
index f69ce3284e..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ClientTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import org.oasisopen.sca.annotation.Reference;
-
-/**
- * Test Java component.
- *
- * @version $Rev$ $Date$
- */
-public class ClientTest implements EchoTest {
-
- @Reference
- public EchoTest ref;
-
- public String echo(final String s1, final String s2) {
- return ref.echo(s1, s2);
- }
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/EchoTest.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/EchoTest.java
deleted file mode 100644
index 557bc968da..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/EchoTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import org.oasisopen.sca.annotation.Remotable;
-
-/**
- * Test client interface.
- *
- * @version $Rev$ $Date$
- */
-@Remotable
-public interface EchoTest {
-
- public String echo(String s1, String s2);
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/InvokeTestCase.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/InvokeTestCase.java
deleted file mode 100644
index 0d4b00d49a..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/InvokeTestCase.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-import static org.apache.tuscany.sca.node.ContributionLocationHelper.getContributionLocation;
-import static org.junit.Assert.assertEquals;
-
-import org.apache.tuscany.sca.node.Contribution;
-import org.apache.tuscany.sca.node.Node;
-import org.apache.tuscany.sca.node.NodeFactory;
-import org.jabsorb.client.Client;
-import org.jabsorb.client.Session;
-import org.jabsorb.client.TransportRegistry;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Tests the Python implementation provider.
- *
- * @version $Rev$ $Date$
- */
-public class InvokeTestCase {
- static Node node;
-
- @BeforeClass
- public static void setUp() throws Exception {
- try {
- final String loc = getContributionLocation("domain-test.composite");
- node = NodeFactory.newInstance().createNode("domain-test.composite", new Contribution("c", loc));
- node.start();
- } catch(Exception e) {
- e.printStackTrace();
- throw e;
- }
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- node.stop();
- }
-
- @Test
- public void testService() throws Exception {
- final Session s = TransportRegistry.i().createSession("http://localhost:8080/python");
- final Client c = new Client(s);
- final Object px = c.openProxy("", EchoTest.class);
- final Object r = c.invoke(px, EchoTest.class.getMethod("echo", String.class, String.class), new Object[] {"Hey", "There"});
- c.closeProxy(px);
- s.close();
- assertEquals("Hey There", r);
- }
-
- @Test
- public void testReference() throws Exception {
- final Session s = TransportRegistry.i().createSession("http://localhost:8080/client");
- final Client c = new Client(s);
- final Object px = c.openProxy("", EchoTest.class);
- final Object r = c.invoke(px, EchoTest.class.getMethod("echo", String.class, String.class), new Object[] {"Hey", "There"});
- c.closeProxy(px);
- s.close();
- assertEquals("Hey There", r);
- }
-
- @Test
- public void testLocal() throws Exception {
- final Session s = TransportRegistry.i().createSession("http://localhost:8080/java-client");
- final Client c = new Client(s);
- final Object px = c.openProxy("", EchoTest.class);
- final Object r = c.invoke(px, EchoTest.class.getMethod("echo", String.class, String.class), new Object[] {"Hey", "There"});
- c.closeProxy(px);
- s.close();
- assertEquals("Hey There", r);
- }
-
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ServerTest.java b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ServerTest.java
deleted file mode 100644
index b0f3b5868f..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/java/org/apache/tuscany/sca/implementation/python/provider/ServerTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.implementation.python.provider;
-
-/**
- * Test Java component.
- *
- * @version $Rev$ $Date$
- */
-public class ServerTest implements EchoTest {
-
- public String echo(final String s1, final String s2) {
- return s1 + " " + s2;
- }
-}
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/client_test.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/client_test.py
deleted file mode 100644
index e3cbaf077f..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/client_test.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# 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.
-
-# JSON-RPC test case
-
-def echo(x, y, ref):
- return ref("echo", x, y)
-
-# ATOMPub test case
-
-def get(id, ref):
- return ref("get", id)
-
-def post(collection, item, ref):
- return ref("post", collection, item)
-
-def put(id, item, ref):
- return ref("put", id, item)
-
-def delete(id, ref):
- return ref("delete", id)
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/domain-test.composite b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/domain-test.composite
deleted file mode 100644
index dfcf4f83ea..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/domain-test.composite
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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:t="http://tuscany.apache.org/xmlns/sca/1.1"
- targetNamespace="http://domain/test"
- name="domain-test">
-
- <component name="python-test">
- <t:implementation.python script="server_test.py"/>
- <service name="test">
- <t:binding.jsonrpc uri="http://localhost:8080/python"/>
- </service>
- </component>
-
- <component name="client-test">
- <t:implementation.python script="client_test.py"/>
- <service name="client">
- <t:binding.jsonrpc uri="http://localhost:8080/client"/>
- </service>
- <reference name="ref" target="python-test">
- </reference>
- </component>
-
- <component name="java-test">
- <implementation.java class="org.apache.tuscany.sca.implementation.python.provider.ServerTest"/>
- <service name="EchoTest">
- <t:binding.jsonrpc uri="http://localhost:8080/java"/>
- </service>
- </component>
-
- <component name="python-to-java-test">
- <t:implementation.python script="client_test.py"/>
- <service name="client">
- <t:binding.jsonrpc uri="http://localhost:8080/python-to-java"/>
- </service>
- <reference name="ref" target="java-test"/>
- </component>
-
- <component name="java-client-test">
- <implementation.java class="org.apache.tuscany.sca.implementation.python.provider.ClientTest"/>
- <service name="EchoTest">
- <t:binding.jsonrpc uri="http://localhost:8080/java-client"/>
- </service>
- <reference name="ref" target="python-to-java-test"/>
- </component>
-
-</composite>
diff --git a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/server_test.py b/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/server_test.py
deleted file mode 100644
index 75f9712f95..0000000000
--- a/sca-java-2.x/branches/2.0-Beta3/modules/implementation-python-runtime/src/test/resources/server_test.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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.
-
-# JSON-RPC test case
-
-def echo(x, y):
- return x + " " + y
-
-# ATOMPub test case
-
-def get(id):
- if id == ():
- return ("Sample Feed", "123456789",
- ("Item", "111", (("'javaClass", "services.Item"), ("'name", "Apple"), ("'currencyCode", "USD"), ("'currencySymbol", "$"), ("'price", 2.99))),
- ("Item", "222", (("'javaClass", "services.Item"), ("'name", "Orange"), ("'currencyCode", "USD"), ("'currencySymbol", "$"), ("'price", 3.55))),
- ("Item", "333", (("'javaClass", "services.Item"), ("name", "Pear"), ("'currencyCode", "USD"), ("'currencySymbol", "$"), ("'price", 1.55))))
-
- entry = (("'javaClass", "services.Item"), ("'name", "Apple"), ("'currencyCode", "USD"), ("'currencySymbol", "$"), ("'price", 2.99))
- return ("Item", id[0], entry)
-
-def post(collection, item):
- return ("123456789",)
-
-def put(id, item):
- return True
-
-def delete(id):
- return True