From 43c164ed179778769fee2f53d0ffcee2993214d3 Mon Sep 17 00:00:00 2001 From: antelder Date: Thu, 27 May 2010 10:40:41 +0000 Subject: Move module to contrib as its not in the build or being actively worked on git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@948776 13f79535-47bb-0310-9956-ffa450edef68 --- .../trunk/modules/sca-client-javascript/LICENSE | 205 ------- .../sca-client-javascript/META-INF/MANIFEST.MF | 18 - .../trunk/modules/sca-client-javascript/NOTICE | 6 - .../trunk/modules/sca-client-javascript/pom.xml | 46 -- .../sca/client/javascript/ScriptEngine.java | 662 --------------------- .../sca/client/javascript/TuscanyShell.java | 44 -- 6 files changed, 981 deletions(-) delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/LICENSE delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/META-INF/MANIFEST.MF delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/NOTICE delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/pom.xml delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/ScriptEngine.java delete mode 100644 sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/TuscanyShell.java (limited to 'sca-java-2.x/trunk') diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/LICENSE b/sca-java-2.x/trunk/modules/sca-client-javascript/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/LICENSE +++ /dev/null @@ -1,205 +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. - - - diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/META-INF/MANIFEST.MF b/sca-java-2.x/trunk/modules/sca-client-javascript/META-INF/MANIFEST.MF deleted file mode 100644 index 94192998f5..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/META-INF/MANIFEST.MF +++ /dev/null @@ -1,18 +0,0 @@ -Manifest-Version: 1.0 -SCA-Version: 1.1 -Bundle-Name: Apache Tuscany SCA Client JavaScript -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 Client JavaScript -Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0", - org.apache.tuscany.sca.core;version="2.0.0", - org.apache.tuscany.sca.interfacedef;version="2.0.0", - org.apache.tuscany.sca.interfacedef.java;version="2.0.0", - org.apache.tuscany.sca.runtime;version="2.0.0", - org.oasisopen.sca;version="2.0.0", - org.oasisopen.sca.client;version="2.0.0" -Bundle-SymbolicName: org.apache.tuscany.sca.client.javascript -Bundle-DocURL: http://www.apache.org/ - diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/NOTICE b/sca-java-2.x/trunk/modules/sca-client-javascript/NOTICE deleted file mode 100644 index 9ddba06a32..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2010 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/pom.xml b/sca-java-2.x/trunk/modules/sca-client-javascript/pom.xml deleted file mode 100644 index b8a31f8cc6..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 4.0.0 - - org.apache.tuscany.sca - tuscany-modules - 2.0-SNAPSHOT - ../pom.xml - - - tuscany-sca-client-javascript - Apache Tuscany SCA Client JavaScript - - - - org.apache.tuscany.sca - tuscany-sca-client-impl - 2.0-SNAPSHOT - - - org.apache.tuscany.sca - tuscany-implementation-java-runtime - 2.0-SNAPSHOT - - - - diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/ScriptEngine.java b/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/ScriptEngine.java deleted file mode 100644 index 151e2f2715..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/ScriptEngine.java +++ /dev/null @@ -1,662 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * 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. - */ - -package org.apache.tuscany.sca.client.javascript; - -import java.io.BufferedReader; -import java.io.CharArrayWriter; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.lang.reflect.Method; -import java.net.URI; -import java.net.URL; -import java.net.URLClassLoader; - -import org.oasisopen.sca.NoSuchDomainException; -import org.oasisopen.sca.client.SCAClientFactory; - -import sun.org.mozilla.javascript.internal.Context; -import sun.org.mozilla.javascript.internal.Function; -import sun.org.mozilla.javascript.internal.Scriptable; -import sun.org.mozilla.javascript.internal.ScriptableObject; -import sun.org.mozilla.javascript.internal.WrappedException; -/** - * - * This class implements a Scripting Engine for the Tuscany runitme. This engine - * uses the Rhino javaScript Engine. - * - *

The default script functions supported by this engine are the following: - *

- */ -public class ScriptEngine extends ScriptableObject implements Runnable{ - private static final long serialVersionUID = 1L; - - /** - * The context with which this script engine will be run - */ - private Context jsContext = null; - - /** - * Set of parameters passes to the script engine - */ - private String[] params = null; - - /** - * instance of Tuscany runtime - */ - private SCAClientFactory tuscany; - - /** - * A reference to the old class loader - */ - private ClassLoader oldClassLoader = null; - - /** - * Flag to indicate, if the shoutdown has requested by the user - */ - private boolean shutdown; - - /** - * The current output stream - */ - private static PrintStream out = System.out; - - /** - * The current error output stream - */ - private PrintStream err = System.err; - - /** - * The current input stream - */ - private InputStream in = System.in; - - /** - * The prompt used - */ - private String prompt = "js> "; - - /** - * The last exception that occured, used for debugging - */ - private Throwable lastException = null; - - /** - * Names of the global functions particular to the shell. Note that these functions - * are not part of ECMA. - */ - public static final String[] SCRIPT_FUNCTIONS = { - "echo", - "version", - "load", - "help", - "exit", - "printStackTrace", - "loadModule", - "listComponents", - "getComponent", - "listServices", - "getService", }; - - /** - * get the class name - * @return "global" - */ - @Override - public String getClassName() { - return "global"; - } - - /** - * Construct a script engine - * - * @param command line arguments - */ - public ScriptEngine(String[] params) { - this.params = params; - } - - /** - * Run the script engine. Invoking this method will initialize the script engine, - * Tuscany Runtime and load any SCA modules if found in the classpath. - * - */ - public void run() { - // Associate a new Context with this thread - jsContext = Context.enter(); - try { - // initialize standard objects - jsContext.initStandardObjects(this); - // define supported script functions - this.defineFunctionProperties(SCRIPT_FUNCTIONS, - ScriptEngine.class, - ScriptableObject.DONTENUM); - - // init the tuscany runtime - this.initTuscanyRuntime(); - // initialize the script engine - this.startScriptEngine(); - } - finally { -// tuscany.stop(); - Thread.currentThread().setContextClassLoader(oldClassLoader); - Context.exit(); - } - } - - /** - * Print the help message. - * - * This method is defined as a script function. - */ - public void help() { - final String helpMsg = - "Command Description \n" + - "======= =========== \n" + - "help() Display this message. \n" + - "load(['f1.js', ...]) Load and execute javaScript source files named f1.js, etc. \n" + - "echo([expr ...]) Evaluate and print a variable or an expressions. \n" + - "exit() Exit this shell. \n" + - "version([number]) Get or set the javaScript version. \n" + - "printStackTrace() Print the stacktrace of the last exception \n" + - "loadModule(jar|war) Not yet implemented. \n" + - "listComponents() Not yet implemented. \n" + - "getComponent('name') Get an instance of the component with the given name. \n" + - "listServices() Not yet implemented. \n" + - "getService('name') Not yet implemented. \n"; - - out.println(); - out.println(helpMsg); - } - - /** - * Load a given module with the tuscany runtime - * - * This method is defined as a script function. - * - * @param moduleName absolute path of the module - */ - public void loadModule(final String moduleName) { - try { - File file = new File(moduleName); - URL[] urls = new URL[] {file.toURL()}; - final ClassLoader newCL = new URLClassLoader(urls); - Thread.currentThread().setContextClassLoader(newCL); - } catch (Exception e) { - err.println(e.getMessage()); - lastException = e; - } - // TODO complete this method - /* - ModuleContext context = CurrentModuleContext.getContext(); - out.println(context.toString()); - tuscany.stop(); - - try { - File file = new File(moduleName); - URL[] urls = new URL[] {file.toURL(), }; - final ClassLoader newCL = new URLClassLoader(urls); - Thread.currentThread().setContextClassLoader(newCL); - - //Class c = Class.forName("customerinfo.CustomerInfoClient", true, newCL); - //out.println("c = " + c); - - tuscany = new TuscanyRuntime(moduleName, null); - tuscany.start(); - - context = CurrentModuleContext.getContext(); - out.println(context.toString()); - - //Object component = context.locateService("CustomerInfoServiceComponent"); - //out.println(component); - } - catch (Exception e) { - err.println(e.getMessage()); - lastException = e; - } - */ - } - - /** - * List the components available within the current module - * - * This method is defined as a script function. - */ - public void listComponents() { - // TODO complete this method - } - - /** - * Get the component available within the current module with a - * given name - * - * This method is defined as a script function. - * - * @param name name of the component - * @return service component object represented by the given name - */ - public Object getComponent(String name) { -// ModuleContext tuscanyContext = CurrentModuleContext.getContext(); -// Object component = tuscanyContext.locateService(name); - -// return component; - return null; - } - - /** - * List the external services available within the current module - * - * This method is defined as a script function. - */ - public void listServices() { - // FIXME -// EndpointRegistry epr = tuscany.getEndpointRegistry(); -// for (Endpoint e : epr.getEndpoints()) { -// out.println(e.getURI()); -// } - } - - public Object getService(String serviceName) { - // FIXME -// ExtensionPointRegistry extensionsRegistry = tuscany.getExtensionsRegistry(); -// FactoryExtensionPoint factories = extensionsRegistry.getExtensionPoint(FactoryExtensionPoint.class); -// AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class); -// -// EndpointReference endpointReference = assemblyFactory.createEndpointReference(); -// endpointReference.setReference(assemblyFactory.createComponentReference()); -// Endpoint targetEndpoint = assemblyFactory.createEndpoint(); -// targetEndpoint.setURI(serviceName); -// endpointReference.setTargetEndpoint(targetEndpoint); -// EndpointRegistry epr = tuscany.getEndpointRegistry(); -// List er = epr.findEndpoint(endpointReference); -// if (er.size() < 1) { -// err.println("service not found " + serviceName); -// return null; -// } -// JavaInterface ifac = (JavaInterface)er.get(0).getComponentServiceInterfaceContract().getInterface(); -// return getService(serviceName, ifac.getName()); - return null; - } - - /** - * Get an external service defined within the current module with a given name - * - * This method is defined as a script function. - * - * @param name name of the service - * @return service object represented by the given name - */ - protected Object getService(String serviceName, String type) { - try { - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - Class serviceInterface = cl.loadClass(type); - Object service = tuscany.getService(serviceInterface, serviceName); - printService(serviceInterface); - return service; - } catch (Exception e) { - err.println(e.getClass().getSimpleName() + ": " + e.getMessage()); - lastException = e; - return null; - } - } - - private void printService(Class serviceInterface) { - out.println(serviceInterface.getName()); - for (Method m : serviceInterface.getMethods()) { - out.print(" " + m.getReturnType().getName() + " " + m.getName() + "("); - boolean one = false; - for (Class arg : m.getParameterTypes()) { - if (one) { - out.print(", "); - } - out.print(arg.getName()); - one = true; - } - out.println(")"); - } - } - - /** - * Echo a variable or a message. - * - * This method is defined as a script function. - * - * @param jsContext - * @param thisObj - * @param args - * @param function - */ - public static void echo(Context jsContext, Scriptable thisObj, Object[] args, Function function) - { - if (args.length > 0) { - out.println(args[0]); - for (int i=1; i < args.length; i++) { - out.print(" " + Context.toString(args[i])); - } - } - out.println(); - } - - /** - * print the stacktrace of the last exception - * - * This method is defined as a script function. - */ - public void printStackTrace() { - if (lastException == null) { - out.println("No stacktrace available"); - } - else { - err.println(getStackTrace(lastException)); - } - } - - /** - * Exit the shell when it is in the interactive mode. - * - * This method is defined as a script function. - */ - public void exit(){ - shutdown = true; - } - - /** - * Get and set the language version. - * - * This method is defined as a JavaScript function. - * - * @param jsContext - * @param thisObj - * @param args - * @param function - */ - public static double version(Context jsContext, Scriptable thisObj, Object[] args, Function function) - { - if (args.length > 0) { - int i = (int)Context.toNumber(args[0]); - jsContext.setLanguageVersion(i); - } - return (double) jsContext.getLanguageVersion(); - } - - /** - * Load and execute a set of JavaScript source files. - * - * This method is defined as a JavaScript function. - * - * @param jsContext - * @param thisObj - * @param args - * @param function - */ - public static void load(Context jsContext, Scriptable thisObj, Object[] args, Function function) - { - ScriptEngine engine = (ScriptEngine)getTopLevelScope(thisObj); - for (int i = 0; i < args.length; i++) { - engine.processFile(Context.toString(args[i])); - } - } - - /** - * Get the current output stream - * - * @return current output stream - */ - public PrintStream getOut() { - return out; - } - - /** - * Set the current output stream - * @param out the new output stream - */ - public void setOut(PrintStream out) { - ScriptEngine.out = out; - } - - /** - * Get the current error output stream - * - * @return Returns the current error output stream. - */ - public PrintStream getErr() { - return err; - } - - /** - * Set the current error output stream - * @param err The new error output stream to set. - */ - public void setErr(PrintStream err) { - this.err = err; - } - - /** - * Get the current input stream - * - * @return Returns the current input stream. - */ - public InputStream getIn() { - return in; - } - - /** - * Set the current input stream - * @param in The new input stream to set. - */ - public void setIn(InputStream in) { - this.in = in; - } - - /** - * initialize the Tuscany runtime - * - */ - protected void initTuscanyRuntime() { - - // Required to allow the SDO runtime to use the correct classloader - oldClassLoader = Thread.currentThread().getContextClassLoader(); -// Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); - - try { - tuscany = SCAClientFactory.newInstance(URI.create("tuscany:foo")); - } catch (NoSuchDomainException e) { - throw new RuntimeException(e); - } - -// // Obtain and start the Tuscany runtime -// try { -// tuscany = new TuscanyRuntime("TuscanyClient", null); -// tuscany.start(); -// -// // this will get the module name; either specified by user or from the classpath -// String moduleName = getCurrentModuleName(); -// // TODO how do we get all the components, services exposed by this module ? -// -// } -// catch (ConfigurationException ce) { -// err.println("Failed to start Tuscany runtime: " + ce.getMessage()); -// //ce.printStackTrace(err); -// lastException = ce; -// } - } - - - /** - * start the script engine - * - */ - protected void startScriptEngine() { - - out.println("Tuscany SCA Shell 0.1, type help() for a list of supported functions."); - - // set up "arguments" in the global scope - if (params.length > 1) { - int length = params.length - 1; - Object obj[] = new Object[length]; - System.arraycopy(params, 1, obj, 0, length); - - Scriptable argsObj = jsContext.newArray(this, obj); - this.defineProperty("arguments", argsObj, ScriptableObject.DONTENUM); - } - - if (params.length == 0) { - // no file name specified, go to interactive mode - this.startInteractiveMode(); - } - else { - // TODO this could be a jar file or a script file - // process the specified file - this.processFile(params[0]); - } - System.gc(); - } - - - - /** - * Evaluate JavaScript source in the interactive mode. - * - */ - private void startInteractiveMode() - { - // see if org.mozilla.javascript.tools.shell.Main.processSource() can handle this - //Main.setErr(this.getErr()); - //Main.setOut(this.getOut()); - //Main.setIn(this.getIn()); - //Main.processSource(jsContext, filename); - - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - int currentLine = 1; - boolean done = false; - while (!shutdown && !done) { - out.print(prompt); - out.flush(); - int lineToCompile = currentLine; - try { - StringBuffer source = new StringBuffer(); - // read the next line entered by user - boolean compilable = false; - while(!compilable) { - String nextLine = reader.readLine(); - if (nextLine != null) { - currentLine += 1; - source.append(nextLine).append("\n"); - compilable = jsContext.stringIsCompilableUnit(source.toString()); - } - else { - // TODO check if this can handle Ctrl+C - System.out.println("=== Ctrl+C pressed =="); - // break both the loops - done = true; - compilable = true; - } - } - Object result = jsContext.evaluateString(this, source.toString(), "", lineToCompile, null); - if (result != Context.getUndefinedValue()) { - out.println(Context.toString(result)); - } - } - catch (Exception e) { - if (e instanceof WrappedException) { - WrappedException we = (WrappedException)e; - err.println(we.getWrappedException().getMessage()); - } - err.println(e.getMessage()); - //e.printStackTrace(err); - lastException = e; - } - } - out.println(); - } - - /** - * Read the contents from a script file and execute it. - * - * @param filename the name of the file to compile - */ - private void processFile(String fileName) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(fileName)); - jsContext.evaluateReader(this, reader, fileName, 1, null); - } - catch (Exception e) { - if (e instanceof WrappedException) { - WrappedException we = (WrappedException)e; - err.println(we.getWrappedException().getMessage()); - } - err.println(e.getLocalizedMessage()); - //e.printStackTrace(err); - lastException = e; - } - finally { - try { - reader.close(); - } - catch (IOException ioe) { - err.println(ioe.getLocalizedMessage()); - //ioe.printStackTrace(err); - lastException = ioe; - } - } - } - - /** - * Find the SCA module name. If the user have specified one, use that, - * otherwise, if there is a module definition in the path, pick it up. - * - * @return name of the module - */ - private String getCurrentModuleName() { - String moduleName = ""; - - // TODO parse the arguments to see if there is an SCA module name - return moduleName; - } - - /** - * Get the stacktrace for a give exception - * - * @param t Throwable from which the stacktrace need to be obtained - * @return char array containing the stack trace - */ - private char[] getStackTrace(Throwable t) { - CharArrayWriter charWriter = new CharArrayWriter(2048); - PrintWriter writer = new PrintWriter(charWriter); - t.printStackTrace(writer); - - return charWriter.toCharArray(); - } -} diff --git a/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/TuscanyShell.java b/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/TuscanyShell.java deleted file mode 100644 index abdbb2c677..0000000000 --- a/sca-java-2.x/trunk/modules/sca-client-javascript/src/main/java/org/apache/tuscany/sca/client/javascript/TuscanyShell.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * - * Copyright 2005 The Apache Software Foundation or its licensors, as applicable. - * - * 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. - */ - -package org.apache.tuscany.sca.client.javascript; - -/** - * - * This class provides a scripting shell that can be used as a Tuscany client. This shell - * extends from the Rhino JavaScript Engine's shell and provides capablities for working - * with the Tuscany Runtime. - * - *

This shell initializt the Tuscany Engine, using the input parameters that point to - * an SCA jar or war or a directory with an sca.module file. The Shell will load that module - * and then all the components and external services in the sca.module become available in the - * Shell, so that you can invoke them dynamically - * - */ -public class TuscanyShell { - - /** - * Main entry point into the shell. This method invokes the - * ScriptEngine. - * - */ - public static void main(String args[]) { - ScriptEngine engine = new ScriptEngine(args); - new Thread(engine).start(); - } - -} -- cgit v1.2.3