From 6d0e93c68d3aeaeb4bb6d96ac0460eec40ef786e Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 11 Nov 2009 23:13:23 +0000 Subject: Moving 1.x branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835143 13f79535-47bb-0310-9956-ffa450edef68 --- .../services/containers/container.ruby/LICENSE.txt | 202 --------------------- .../services/containers/container.ruby/NOTICE.txt | 14 -- .../sca/services/containers/container.ruby/pom.xml | 81 --------- .../tuscany/container/ruby/RubyComponent.java | 134 -------------- .../container/ruby/RubyComponentBuilder.java | 94 ---------- .../tuscany/container/ruby/RubyComponentType.java | 58 ------ .../container/ruby/RubyComponentTypeLoader.java | 118 ------------ .../tuscany/container/ruby/RubyImplementation.java | 48 ----- .../container/ruby/RubyImplementationLoader.java | 123 ------------- .../tuscany/container/ruby/RubyIntrospector.java | 173 ------------------ .../apache/tuscany/container/ruby/RubyInvoker.java | 55 ------ .../container/ruby/RubyRefInvocInterceptor.java | 92 ---------- .../tuscany/container/ruby/RubyReferenceProxy.java | 127 ------------- .../container/ruby/rubyscript/RubySCAConfig.java | 159 ---------------- .../container/ruby/rubyscript/RubyScript.java | 160 ---------------- .../ruby/rubyscript/RubyScriptInstance.java | 61 ------- .../container/ruby/rubyscript/RubyUtils.java | 71 -------- .../src/main/resources/META-INF/sca/default.scdl | 46 ----- .../main/resources/META-INF/sca/ruby.system.scdl | 40 ---- .../test/java/helloworld/HelloWorldService.java | 24 --- .../java/helloworld/HelloWorldServiceImpl.java | 42 ----- .../ruby/RubyImplementationLoaderTestCase.java | 109 ----------- .../ruby/RubyScriptIntrospectorTestCase.java | 130 ------------- .../container/ruby/ScriptInvokeTestCase.java | 54 ------ .../tuscany/container/ruby/WireTestCase.java | 186 ------------------- .../ruby/function/HelloWorldTestCase.java | 75 -------- .../tuscany/container/ruby/mock/Greeting.java | 26 --- .../ruby/function/HelloWorld.componentType | 28 --- .../tuscany/container/ruby/function/HelloWorld.rb | 33 ---- .../ruby/function/IntrospectableHelloWorld.rb | 30 --- .../container/ruby/function/helloworld.scdl | 44 ----- .../ruby/function/propertyTest.componentType | 26 --- .../container/ruby/function/propertyTest.rb | 24 --- .../tuscany/container/ruby/jruby/helloworld.wsdl | 78 -------- .../org/apache/tuscany/container/ruby/mock/test.rb | 1 - 35 files changed, 2766 deletions(-) delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/LICENSE.txt delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/NOTICE.txt delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/pom.xml delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentBuilder.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentType.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentTypeLoader.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementation.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementationLoader.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyInvoker.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyRefInvocInterceptor.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyReferenceProxy.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubySCAConfig.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScript.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScriptInstance.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyUtils.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/default.scdl delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/ruby.system.scdl delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldService.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldServiceImpl.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyImplementationLoaderTestCase.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyScriptIntrospectorTestCase.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/ScriptInvokeTestCase.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/mock/Greeting.java delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.rb delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/IntrospectableHelloWorld.rb delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/helloworld.scdl delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.componentType delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.rb delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/jruby/helloworld.wsdl delete mode 100644 branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/mock/test.rb (limited to 'branches/sca-java-M2/sca/services/containers/container.ruby') diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/LICENSE.txt b/branches/sca-java-M2/sca/services/containers/container.ruby/LICENSE.txt deleted file mode 100644 index d645695673..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/LICENSE.txt +++ /dev/null @@ -1,202 +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/branches/sca-java-M2/sca/services/containers/container.ruby/NOTICE.txt b/branches/sca-java-M2/sca/services/containers/container.ruby/NOTICE.txt deleted file mode 100644 index d83ebbe236..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/NOTICE.txt +++ /dev/null @@ -1,14 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2006 The Apache Software Foundation - -Apache Tuscany is an effort undergoing incubation at The Apache Software -Foundation (ASF), sponsored by the Apache Web Services PMC. Incubation is -required of all newly accepted projects until a further review indicates that -the infrastructure, communications, and decision making process have stabilized -in a manner consistent with other successful ASF projects. While incubation -status is not necessarily a reflection of the completeness or stability of the -code, it does indicate that the project has yet to be fully endorsed by the ASF. - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/pom.xml b/branches/sca-java-M2/sca/services/containers/container.ruby/pom.xml deleted file mode 100644 index a46f757503..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - org.apache.tuscany.sca.services.containers - parent - 1.0-incubator-M2-SNAPSHOT - - - 4.0.0 - ruby - Apache Tuscany Ruby Container - Apache Tuscany Ruby Container - - - - org.apache.tuscany.sca.kernel - tuscany-spi - ${sca.version} - compile - - - org.jruby - jruby - 0.9.1 - compile - - - org.apache.tuscany.sca.services.idl - wsdl - ${sca.version} - compile - - - org.apache.tuscany.sca - test - ${sca.version} - test - - - org.easymock - easymock - - - org.easymock - easymockclassextension - - - cglib - cglib-nodep - 2.1_3 - compile - - - org.apache.ws.commons.axiom - axiom-api - - - org.apache.ws.commons.axiom - axiom-impl - - - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java deleted file mode 100644 index 7a244b828c..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponent.java +++ /dev/null @@ -1,134 +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.container.ruby; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.container.ruby.rubyscript.RubyScriptInstance; -import org.apache.tuscany.spi.ObjectCreationException; -import org.apache.tuscany.spi.component.CompositeComponent; -import org.apache.tuscany.spi.component.ScopeContainer; -import org.apache.tuscany.spi.component.TargetException; -import org.apache.tuscany.spi.component.WorkContext; -import org.apache.tuscany.spi.extension.AtomicComponentExtension; -import org.apache.tuscany.spi.model.Operation; -import org.apache.tuscany.spi.wire.InboundWire; -import org.apache.tuscany.spi.wire.OutboundWire; -import org.apache.tuscany.spi.wire.TargetInvoker; -import org.apache.tuscany.spi.wire.WireService; - -/** - * The Ruby component implementation. - */ -public class RubyComponent extends AtomicComponentExtension { - - private final List> services; - - private final Map properties; - - private RubyScript rubyScript; - - private String rubyClassName; - - public RubyComponent(String name, - RubyScript rubyScript, - String rubyClassName, - List> services, - Map propValues, - CompositeComponent parent, - ScopeContainer scopeContainer, - WireService wireService, - WorkContext workContext) { - super(name, parent, scopeContainer, wireService, workContext, null, 0); - - this.rubyScript = rubyScript; - this.rubyClassName = rubyClassName; - this.services = services; - this.scope = scopeContainer.getScope(); - //this.properties = new HashMap(); - this.properties = propValues; - } - - public Object createInstance() throws ObjectCreationException { - - Map context = new HashMap(getProperties()); - - for (List referenceWires : getOutboundWires().values()) { - for (OutboundWire wire : referenceWires) { - Object wireProxy = wireService.createProxy(wire); - //since all types that may be used in the reference interface may not be known to Rhino - //using the wireProxy as is will fail result in type conversion exceptions in cases where - //Rhino does not know enough of the tpypes used. Hence introduce a interceptor proxy, - //with weak typing (java.lang.Object) so that Rhino's call to the proxy succeeds. Then - //within this interceptor proxy perform data mediations required to correctly call the - //referenced service. - Class businessInterface = wire.getServiceContract().getInterfaceClass(); - RubyReferenceProxy interceptingProxy = new RubyReferenceProxy(businessInterface, - wireProxy, - rubyScript.getRubyEngine()); - context.put(wire.getReferenceName(), interceptingProxy.createProxy()); - } - } - - Object instance = rubyScript.createScriptInstance(context, rubyClassName); - - return instance; - } - - public TargetInvoker createTargetInvoker(String targetName, Operation operation) { - /*Method[] methods = operation.getServiceContract().getInterfaceClass().getMethods(); - Method method = findMethod(operation, - methods);*/ - return new RubyInvoker(operation.getName(), this, operation.getOutputType().getPhysical().getClass()); - } - - // TODO: move all the following up to AtomicComponentExtension? - - public List> getServiceInterfaces() { - return services; - } - - public Map getProperties() { - return properties; - } - - public RubyScriptInstance getTargetInstance() throws TargetException { - return (RubyScriptInstance) scopeContainer.getInstance(this); - } - - public Object getServiceInstance() throws TargetException { - return getServiceInstance(null); - } - - @SuppressWarnings("unchecked") - public Object getServiceInstance(String service) throws TargetException { - InboundWire wire = getInboundWire(service); - if (wire == null) { - TargetException e = new TargetException("ServiceDefinition not found"); // TODO better error message - e.setIdentifier(service); - throw e; - } - return wireService.createProxy(wire); - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentBuilder.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentBuilder.java deleted file mode 100644 index bdbbd1871c..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentBuilder.java +++ /dev/null @@ -1,94 +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.container.ruby; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.spi.builder.BuilderConfigException; -import org.apache.tuscany.spi.component.Component; -import org.apache.tuscany.spi.component.CompositeComponent; -import org.apache.tuscany.spi.component.ScopeContainer; -import org.apache.tuscany.spi.deployer.DeploymentContext; -import org.apache.tuscany.spi.extension.ComponentBuilderExtension; -import org.apache.tuscany.spi.model.ComponentDefinition; -import org.apache.tuscany.spi.model.Property; -import org.apache.tuscany.spi.model.PropertyValue; -import org.apache.tuscany.spi.model.Scope; -import org.apache.tuscany.spi.model.ServiceDefinition; - -/** - * Extension point for creating {@link RubyComponent}s from an assembly configuration - */ -public class RubyComponentBuilder extends ComponentBuilderExtension { - - protected Class getImplementationType() { - return RubyImplementation.class; - } - - @SuppressWarnings("unchecked") - public Component build(CompositeComponent parent, - ComponentDefinition componentDefinition, - DeploymentContext deploymentContext) throws BuilderConfigException { - - String name = componentDefinition.getName(); - RubyImplementation implementation = componentDefinition.getImplementation(); - RubyComponentType componentType = implementation.getComponentType(); - - // get list of services provided by this component - Collection collection = componentType.getServices().values(); - List> services = new ArrayList>(collection.size()); - for (ServiceDefinition serviceDefinition : collection) { - services.add(serviceDefinition.getServiceContract().getInterfaceClass()); - } - - Map propertyValues = new Hashtable(); - Collection> propValueSettings = componentDefinition.getPropertyValues().values(); - for (PropertyValue propertyValue : propValueSettings) { - propertyValues.put(propertyValue.getName(), - propertyValue.getValueFactory().getInstance()); - } - - RubyScript rubyScript = implementation.getRubyScript(); - - // TODO: have ComponentBuilderExtension pass ScopeContainer in on build method? - ScopeContainer scopeContainer; - Scope scope = componentType.getLifecycleScope(); - if (Scope.MODULE == scope) { - scopeContainer = deploymentContext.getModuleScope(); - } else { - scopeContainer = scopeRegistry.getScopeContainer(scope); - } - - return new RubyComponent(name, - rubyScript, - implementation.getRubyClassName(), - services, - propertyValues, - parent, - scopeContainer, - wireService, - workContext); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentType.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentType.java deleted file mode 100644 index 1b98cf86d6..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentType.java +++ /dev/null @@ -1,58 +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.container.ruby; - -import org.apache.tuscany.spi.model.ComponentType; -import org.apache.tuscany.spi.model.Property; -import org.apache.tuscany.spi.model.ReferenceDefinition; -import org.apache.tuscany.spi.model.Scope; -import org.apache.tuscany.spi.model.ServiceDefinition; - -public class RubyComponentType extends - ComponentType> { - - private Scope lifecycleScope = Scope.MODULE; - - public RubyComponentType() { - } - - @SuppressWarnings("unchecked") - public RubyComponentType(ComponentType ct) { - // TODO: A bit hacky but this is so the non-Ruby .componentType side file can be used for now - setInitLevel(ct.getInitLevel()); - for (Object property : ct.getProperties().values()) { - add((Property) property); - } - for (Object reference : ct.getReferences().values()) { - add((ReferenceDefinition) reference); - } - for (Object service : ct.getServices().values()) { - add((ServiceDefinition) service); - } - } - - public Scope getLifecycleScope() { - return lifecycleScope; - } - - public void setLifecycleScope(Scope lifecycleScope) { - this.lifecycleScope = lifecycleScope; - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentTypeLoader.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentTypeLoader.java deleted file mode 100644 index 6fc5f87c68..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyComponentTypeLoader.java +++ /dev/null @@ -1,118 +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.container.ruby; - -import java.net.URL; - -import org.apache.tuscany.container.ruby.rubyscript.RubySCAConfig; -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.spi.annotation.Autowire; -import org.apache.tuscany.spi.component.CompositeComponent; -import org.apache.tuscany.spi.deployer.DeploymentContext; -import org.apache.tuscany.spi.extension.ComponentTypeLoaderExtension; -import org.apache.tuscany.spi.idl.InvalidServiceContractException; -import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry; -import org.apache.tuscany.spi.loader.LoaderException; -import org.apache.tuscany.spi.loader.MissingResourceException; -import org.apache.tuscany.spi.model.ComponentType; - -/** - * @version $Rev$ $Date$ - */ -public class RubyComponentTypeLoader extends ComponentTypeLoaderExtension { - - private JavaInterfaceProcessorRegistry processorRegistry; - - public RubyComponentTypeLoader(@Autowire - JavaInterfaceProcessorRegistry processorRegistry) { - this.processorRegistry = processorRegistry; - } - - @Override - protected Class getImplementationClass() { - return RubyImplementation.class; - } - - protected RubyComponentType loadByIntrospection(CompositeComponent parent, - RubyImplementation implementation, - DeploymentContext deploymentContext) throws - MissingResourceException, - InvalidServiceContractException { - - RubyScript rubyScript = implementation.getRubyScript(); - RubySCAConfig scaConfig = rubyScript.getSCAConfig(); - if (!scaConfig.hasSCAConfig()) { - throw new IllegalArgumentException( - "must use either .componentType side file or Ruby Global variable $SCA definition"); - } - - // FIXME this should be a system service, not instantiated here - RubyComponentType componentType = new RubyIntrospector(null, processorRegistry) - .introspectScript(scaConfig, rubyScript.getClassLoader()); - - return componentType; - } - - protected String getResourceName(RubyImplementation implementation) { - return implementation.getRubyScript().getScriptName(); - } - - // TODO: must be possible to move all the following up in to ComponentTypeLoaderExtension - - public void load(CompositeComponent parent, - RubyImplementation implementation, - DeploymentContext deploymentContext) throws LoaderException { - - URL resource = implementation.getRubyScript().getClassLoader().getResource(getSideFileName(implementation)); - RubyComponentType componentType; - if (resource == null) { - try { - componentType = loadByIntrospection(parent, implementation, deploymentContext); - } catch (InvalidServiceContractException e) { - throw new LoaderException("Invalid service contract", e); - } - } else { - componentType = loadFromSidefile(resource, deploymentContext); - } - - implementation.setComponentType(componentType); - - - } - - protected RubyComponentType loadFromSidefile(URL url, DeploymentContext deploymentContext) throws LoaderException { - ComponentType ct = loaderRegistry.load(null, - url, - ComponentType.class, - deploymentContext); - RubyComponentType jsct = new RubyComponentType(ct); - return jsct; - } - - private String getSideFileName(RubyImplementation implementation) { - String baseName = getResourceName(implementation); - int lastDot = baseName.lastIndexOf('.'); - if (lastDot != -1) { - baseName = baseName.substring(0, - lastDot); - } - return baseName + ".componentType"; - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementation.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementation.java deleted file mode 100644 index 6f07399d0a..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementation.java +++ /dev/null @@ -1,48 +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.container.ruby; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.spi.model.AtomicImplementation; - -/** - * Model object for a JavaScript implementation. - */ -public class RubyImplementation extends AtomicImplementation { - - private RubyScript rubyScript; - - private String rubyClassName; - - public String getRubyClassName() { - return rubyClassName; - } - - public void setRubyClassName(String rubyClassName) { - this.rubyClassName = rubyClassName; - } - - public RubyScript getRubyScript() { - return rubyScript; - } - - public void setRubyScript(RubyScript rubyScript) { - this.rubyScript = rubyScript; - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementationLoader.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementationLoader.java deleted file mode 100644 index 322e3d84e8..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyImplementationLoader.java +++ /dev/null @@ -1,123 +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.container.ruby; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.URL; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.spi.annotation.Autowire; -import org.apache.tuscany.spi.component.CompositeComponent; -import org.apache.tuscany.spi.deployer.DeploymentContext; -import org.apache.tuscany.spi.extension.LoaderExtension; -import org.apache.tuscany.spi.loader.LoaderException; -import org.apache.tuscany.spi.loader.LoaderRegistry; -import org.apache.tuscany.spi.loader.LoaderUtil; -import org.apache.tuscany.spi.loader.MissingResourceException; -import org.osoa.sca.annotations.Constructor; - -/** - * Loader for handling JavaScript elements. - */ -public class RubyImplementationLoader extends LoaderExtension { - private static final QName IMPLEMENTATION_RUBY = new QName( - "http://incubator.apache.org/tuscany/xmlns/container/rb/1.0-incubator-M2", "implementation.rb"); - - @Constructor({"registry"}) - public RubyImplementationLoader(@Autowire - LoaderRegistry registry) { - super(registry); - } - - public QName getXMLType() { - return IMPLEMENTATION_RUBY; - } - - public RubyImplementation load(CompositeComponent parent, - XMLStreamReader reader, - DeploymentContext deploymentContext) throws XMLStreamException, - LoaderException { - - String script = reader.getAttributeValue(null, - "script"); - String rubyClassName = reader.getAttributeValue(null,"class"); - - if ( script == null ) { - throw new MissingResourceException("No script supplied"); - } - - ClassLoader cl = deploymentContext.getClassLoader(); - String source = loadSource(cl, - script); - - LoaderUtil.skipToEndElement(reader); - - RubyImplementation implementation = new RubyImplementation(); - RubyScript rubyScript = new RubyScript(script, source, null, cl); - implementation.setRubyScript(rubyScript); - implementation.setRubyClassName(rubyClassName); - registry.loadComponentType(parent, - implementation, - deploymentContext); - return implementation; - } - - protected String loadSource(ClassLoader cl, String resource) throws LoaderException { - URL url = cl.getResource(resource); - if (url == null) { - throw new MissingResourceException(resource); - } - InputStream is; - try { - is = url.openStream(); - } catch (IOException e) { - MissingResourceException mre = new MissingResourceException(resource, e); - mre.setIdentifier(resource); - throw mre; - } - try { - Reader reader = new InputStreamReader(is, "UTF-8"); - char[] buffer = new char[1024]; - StringBuilder source = new StringBuilder(); - int count; - while ((count = reader.read(buffer)) > 0) { - source.append(buffer, - 0, - count); - } - return source.toString(); - } catch (IOException e) { - LoaderException le = new LoaderException(e); - le.setIdentifier(resource); - throw le; - } finally { - try { - is.close(); - } catch (IOException e) { - // ignore - } - } - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java deleted file mode 100644 index d5ef41d835..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyIntrospector.java +++ /dev/null @@ -1,173 +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.container.ruby; - -import java.util.Iterator; -import java.util.Map; - -import javax.wsdl.Definition; -import javax.wsdl.PortType; -import javax.wsdl.WSDLException; -import javax.wsdl.factory.WSDLFactory; -import javax.wsdl.xml.WSDLReader; -import javax.xml.namespace.QName; - -import org.apache.tuscany.container.ruby.rubyscript.RubySCAConfig; -import org.apache.tuscany.idl.wsdl.WSDLDefinitionRegistry; -import org.apache.tuscany.idl.wsdl.WSDLServiceContract; -import org.apache.tuscany.spi.annotation.Autowire; -import org.apache.tuscany.spi.idl.InvalidServiceContractException; -import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry; -import org.apache.tuscany.spi.loader.MissingResourceException; -import org.apache.tuscany.spi.model.ComponentType; -import org.apache.tuscany.spi.model.Scope; -import org.apache.tuscany.spi.model.ServiceContract; -import org.apache.tuscany.spi.model.ServiceDefinition; - -/** - * Introspects JavaScript files for SCA configuration - */ -public class RubyIntrospector { - - private WSDLDefinitionRegistry wsdlRegistry; - private JavaInterfaceProcessorRegistry processorRegistry; - - public RubyIntrospector(@Autowire WSDLDefinitionRegistry wsdlRegistry, - @Autowire JavaInterfaceProcessorRegistry processorRegistry) { - this.wsdlRegistry = wsdlRegistry; - this.processorRegistry = processorRegistry; - } - - public RubyComponentType introspectScript(RubySCAConfig scaConfig, ClassLoader cl) - throws MissingResourceException, InvalidServiceContractException { - RubyComponentType componentType = new RubyComponentType(); - introspectJavaInterface(componentType, cl, scaConfig.getJavaInterface()); - introspectWSDLInterface(componentType, cl, scaConfig.getWSDLNamespace(), scaConfig.getWSDLPortType(), - scaConfig.getWSDLLocation()); - introspectReferences(componentType, cl, scaConfig.getReferences()); - introspectProperties(componentType, cl, scaConfig.getProperties()); - introspectScope(componentType, scaConfig.getScope()); - return componentType; - } - - private void introspectScope(RubyComponentType componentType, Scope scope) { - if (scope != null) { - componentType.setLifecycleScope(scope); - } - } - - @SuppressWarnings("unchecked") - private void introspectJavaInterface(ComponentType componentType, ClassLoader cl, String serviceClass) - throws MissingResourceException, InvalidServiceContractException { - if (serviceClass != null) { - ServiceDefinition service = new ServiceDefinition(); - try { - ServiceContract sc = processorRegistry.introspect(Class.forName(serviceClass)); - service.setServiceContract(sc); - componentType.add(service); - } catch (ClassNotFoundException e) { - throw new MissingResourceException("Interface not found", e); - } - } - } - - @SuppressWarnings("unchecked") - private void introspectWSDLInterface(ComponentType componentType, ClassLoader cl, String wsdlNamespace, - String wsdlPortType, String wsdlLocation) { - if (wsdlNamespace == null && wsdlPortType == null && wsdlLocation == null) { - return; - } - - PortType portType = null; - if (wsdlLocation != null) { - portType = readWSDLPortType(wsdlNamespace, wsdlPortType, wsdlLocation, portType); - } else { - portType = getPortType(wsdlNamespace, wsdlPortType); - } - - ServiceDefinition service = new ServiceDefinition(); - WSDLServiceContract wsdlSC = new WSDLServiceContract(); - wsdlSC.setPortType(portType); - service.setServiceContract(wsdlSC); - componentType.add(service); - } - - private PortType readWSDLPortType(String wsdlNamespace, String wsdlPortType, String wsdlLocation, - PortType portType) { - Definition wsdlDefinition; - try { - WSDLReader reader = WSDLFactory.newInstance().newWSDLReader(); - reader.setFeature("javax.wsdl.verbose", false); - wsdlDefinition = reader.readWSDL(wsdlLocation.toString()); - } catch (WSDLException e) { - throw new RuntimeException(e); - - } - Map portTypes = wsdlDefinition.getPortTypes(); - for (Iterator i = portTypes.keySet().iterator(); i.hasNext();) { - QName portTypeQN = (QName) i.next(); - if (wsdlNamespace != null) { - if (!portTypeQN.getNamespaceURI().equals(wsdlNamespace)) { - continue; - } - } - if (wsdlPortType != null) { - if (!portTypeQN.getLocalPart().equals(wsdlPortType)) { - continue; - } - } - if (portType != null) { - throw new RuntimeException("multiple matching portTypes in wsdl: " + wsdlLocation); - } - portType = (PortType) portTypes.get(portTypeQN); - } - if (portType == null) { - throw new RuntimeException("portType not found in wsdl: " + wsdlLocation); - } - return portType; - } - - private PortType getPortType(String wsdlNamespace, String wsdlPortType) { - if (wsdlPortType == null) { - throw new IllegalArgumentException("must specify the wsdlPortType in script SCA config"); - } - PortType portType = null; - if (wsdlNamespace != null) { - QName portTypeQN = new QName(wsdlNamespace.toString(), wsdlPortType.toString()); - portType = wsdlRegistry.getPortType(portTypeQN); - if (portType == null) { - throw new IllegalArgumentException("no WSDL registered for portType: " + portTypeQN); - } - } else { - // wsdlRegistry.getPortType(wsdlPortType.toString()); - if (portType == null) { - throw new IllegalArgumentException("no WSDL registered for portType:" + wsdlPortType); - } - } - return portType; - } - - - private void introspectProperties(ComponentType componentType, ClassLoader cl, Map properties) { - } - - private void introspectReferences(ComponentType componentType, ClassLoader cl, Map references) { - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyInvoker.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyInvoker.java deleted file mode 100644 index a40f04612e..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyInvoker.java +++ /dev/null @@ -1,55 +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.container.ruby; - -import java.lang.reflect.InvocationTargetException; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScriptInstance; -import org.apache.tuscany.spi.extension.TargetInvokerExtension; - -/** - * Dispatches to a JavaScript implementation instance - * - * @version $$Rev$$ $$Date$$ - */ -public class RubyInvoker extends TargetInvokerExtension { - - private RubyComponent context; - - private String functionName; - - private Class returnType; - - public RubyInvoker(String functionName, RubyComponent context, Class returnType) { - this.functionName = functionName; - this.context = context; - this.returnType = returnType; - } - - /** - * Invokes a function on a script instance - */ - public Object invokeTarget(final Object payload) throws InvocationTargetException { - RubyScriptInstance target = context.getTargetInstance(); - return target.invokeFunction(functionName, - (Object[]) payload, - returnType); - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyRefInvocInterceptor.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyRefInvocInterceptor.java deleted file mode 100644 index bf62d1fcab..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyRefInvocInterceptor.java +++ /dev/null @@ -1,92 +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.container.ruby; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; - -import org.jruby.IRuby; -import org.jruby.RubyObject; -import org.jruby.javasupport.JavaUtil; - -/** - * This Interceptor encasulates the data mediation required by the JavaScriptReferenceProxy. The - * invocation handler of this class traps the javascript reference calls, performs data mediation - * and calls then calls the actual referred service. This classes implementation is subject to - * review and change when the DataMediation infrastructure of Tuscany is ready. - * - */ -public class RubyRefInvocInterceptor implements InvocationHandler { - private Object actualProxy; - - private Class wireInterface; - - private IRuby rubyEngine; - - RubyRefInvocInterceptor(Object wireProxy, Class wireIfc, IRuby rubyEng) { - this.actualProxy = wireProxy; - this.wireInterface = wireIfc; - this.rubyEngine = rubyEng; - } - - public Object invoke(Object arg0, Method method, Object[] args) throws Throwable { - if ( method.getName().equals("hashCode")) - return new Integer(1); - - Method invokedMethod = getInvokedMethod(method.getName()); - Object[] tranformedArgs = new Object[args.length]; - for (int count = 0; count < args.length; ++count) { - tranformedArgs[count] = fromRubyToJava(invokedMethod.getParameterTypes()[count], args[count]); - } - - Object response = invokedMethod.invoke(actualProxy, tranformedArgs); - response = fromJavaToRuby(response); - return response; - } - - private Method getInvokedMethod(String methodName) { - Method[] methods = wireInterface.getMethods(); - - for (int count = 0; count < methods.length; ++count) { - if (methods[count].getName().equals(methodName)) { - return methods[count]; - } - } - throw new RuntimeException("Unable to find invocation method"); - } - - protected Object fromRubyToJava(Class reqArgType, Object rubyArg) throws Exception { - Object javaArg = null; - - //for known cases the JRuby runtime handles the conversion before calling the Java objects - //so nothing to do. When it cannot convert it simply passed the instance of RubyObject - if ( rubyArg instanceof RubyObject ) { - //need to deal with this - } else { - javaArg = rubyArg; - } - - return javaArg; - } - - protected Object fromJavaToRuby(Object retVal) throws RuntimeException { - Object rubyRetVal = JavaUtil.convertJavaToRuby(rubyEngine, retVal, retVal.getClass()); - return rubyRetVal; - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyReferenceProxy.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyReferenceProxy.java deleted file mode 100644 index 4d91194484..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/RubyReferenceProxy.java +++ /dev/null @@ -1,127 +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.container.ruby; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; - -import org.jruby.IRuby; -import org.jruby.RubyException; - -import net.sf.cglib.asm.ClassWriter; -import net.sf.cglib.asm.CodeVisitor; -import net.sf.cglib.asm.Constants; -import net.sf.cglib.asm.Type; - -/** - * This is a proxy that will mediate reference calls from the JavaScript. The mediation code here will be reviewed when the DataMediation - * infrastructure is ready. This proxy assmes that there is no verloading of service methods on the reference interface i.e. there are no two service - * methods that have the same method name or operation name. - */ -public class RubyReferenceProxy { - - private Class interfaze; - - private Object wireProxy; - - private IRuby rubyEngine; - - public RubyReferenceProxy(Class interfaze, Object wireProxy, IRuby rubyEng) { - this.interfaze = interfaze; - this.wireProxy = wireProxy; - this.rubyEngine = rubyEng; - } - - public Object createProxy() { - try { - GenericProxyClassLoader classloader = new GenericProxyClassLoader(); - final byte[] byteCode = generateGenericInterface(interfaze); - - Class genericInterface = classloader.defineClass(byteCode); - InvocationHandler proxyHandler = new RubyRefInvocInterceptor(wireProxy, interfaze, rubyEngine); - // return genericInterface.cast(Proxy.newProxyInstance(classloader, new Class[]{genericInterface}, proxyHandler)); - return Proxy.newProxyInstance(classloader, - new Class[]{genericInterface}, - proxyHandler); - } catch (Exception e) { - return null; - } - } - - private static byte[] generateGenericInterface(Class serviceInterface) { - String interfazeName = serviceInterface.getCanonicalName(); - ClassWriter cw = new ClassWriter(false); - - cw.visit(Constants.V1_5, - Constants.ACC_PUBLIC + Constants.ACC_ABSTRACT + Constants.ACC_INTERFACE, - interfazeName.replace('.', - '/'), - "java/lang/Object", - null, - serviceInterface.getSimpleName() + ".java"); - - StringBuffer argsAndReturn = new StringBuffer("("); - Method[] methods = serviceInterface.getMethods(); - for (int count = 0; count < methods.length; ++count) { - argsAndReturn = new StringBuffer("("); - Class[] paramTypes = methods[count].getParameterTypes(); - Class returnType = methods[count].getReturnType(); - - for (int paramCount = 0; paramCount < paramTypes.length; ++paramCount) { - argsAndReturn.append(Type.getType(Object.class)); - } - argsAndReturn.append(")"); - argsAndReturn.append(Type.getType(Object.class)); - - Class[] exceptionTypes = methods[count].getExceptionTypes(); - String[] exceptions = new String[exceptionTypes.length]; - for (int excCount = 0; excCount < exceptionTypes.length; ++excCount) { - exceptions[excCount] = exceptionTypes[excCount].getName(); - exceptions[excCount] = exceptions[excCount].replace('.', - '/'); - } - - CodeVisitor cv = cw.visitMethod(Constants.ACC_PUBLIC + Constants.ACC_ABSTRACT, - methods[count].getName(), - argsAndReturn.toString(), - exceptions, - null); - cw.visitEnd(); - } - - cw.visitEnd(); - - return cw.toByteArray(); - } - - private class GenericProxyClassLoader extends ClassLoader { - public Class defineClass(byte[] byteArray) { - try { - return defineClass(null, - byteArray, - 0, - byteArray.length); - } catch (Throwable e) { - return null; - } - } - - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubySCAConfig.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubySCAConfig.java deleted file mode 100644 index 4d14d8a56a..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubySCAConfig.java +++ /dev/null @@ -1,159 +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.container.ruby.rubyscript; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.tuscany.spi.model.Scope; -import org.jruby.RubyHash; -import org.jruby.RubyObject; -import org.jruby.internal.runtime.GlobalVariables; -import org.jruby.runtime.builtin.IRubyObject; - -/** - * Represents the variable defining the SCA aspects of the script - * - * SCA = { - * javaInterface : "my.pkg.ClassName", - * wsdlPortType : "wsdlPortTypeName", - * wsdlNameSpace : "http://my.namespace.com", - * wsdlLocation : "\wsdl\mywsdl.txt", - * properties : { "foo" : ["java.lang.String", "defaultValue"],}, - * references : {}, - * scope : 'stateless'|'request'|'conversational'|'composite', - * } - * - * The config must define the service with either javaInterface or wsdl. When - * using wsdl the three parameters are optional. If wsdlLocation is used that is the - * WSDL document used, and the namespace and portType parameters are only required if - * the WSDL definition defines multiple portTypes. - */ -public class RubySCAConfig { - - private boolean hasSCAConfig; - - private String javaInterface; - - private String wsdlLocation; - - private String wsdlNamespace; - - private String wsdlPortType; - - private Map properties; - - private Map references; - - private Scope scope; - - public RubySCAConfig(GlobalVariables globalVariables) { - IRubyObject rubyObject = globalVariables.get("$SCA"); - if (rubyObject != null && !rubyObject.isNil()) { - hasSCAConfig = true; - RubyHash scaVar = (RubyHash) rubyObject; - Object o = scaVar.get("javaInterface"); - if ( o != null ) { - this.javaInterface = o.toString(); - } - o = scaVar.get("wsdlLocation"); - if (o != null ) { - this.wsdlLocation = o.toString(); - } - o = scaVar.get("wsdlPortType"); - if (o != null ) { - this.wsdlPortType = o.toString(); - } - o = scaVar.get("wsdlNamespace"); - if (o != null ) { - this.wsdlNamespace = o.toString(); - } - if (javaInterface != null) { - if (wsdlLocation != null || wsdlPortType != null || wsdlNamespace != null) { - throw new IllegalArgumentException("script SCA config defines both Java and WSDL service interface"); - } - } else { - if (wsdlLocation == null && wsdlPortType == null && wsdlNamespace == null) { - throw new IllegalArgumentException("script SCA config must define either Java or WSDL service interface"); - } - } - - this.properties = new HashMap(); - o = scaVar.get("properties"); - if (o != null ) { - // TODO parse properties - } - - this.references = new HashMap(); - o = scaVar.get("references"); - if (o != null ) { - // TODO parse references - } - - o = scaVar.get("scope"); - if (o != null ) { - if ("stateless".equalsIgnoreCase(String.valueOf(o))) { - this.scope = Scope.STATELESS; - } else if ("request".equalsIgnoreCase(String.valueOf(o))) { - this.scope = Scope.REQUEST; - } else if ("conversational".equalsIgnoreCase(String.valueOf(o))) { - this.scope = Scope.SESSION; // TODO: where's CONVERSATIONAL? - } else if ("composite".equalsIgnoreCase(String.valueOf(o))) { - this.scope = Scope.MODULE; // TODO: composite = MODULE for now? - } else { - throw new IllegalArgumentException("invalid scope value: " + o); - } - } - - } - } - - public boolean hasSCAConfig() { - return hasSCAConfig; - } - - public String getJavaInterface() { - return javaInterface; - } - - public Map getProperties() { - return properties; - } - - public Map getReferences() { - return references; - } - - public String getWSDLLocation() { - return wsdlLocation; - } - - public String getWSDLNamespace() { - return wsdlNamespace; - } - - public String getWSDLPortType() { - return wsdlPortType; - } - - public Scope getScope() { - return scope; - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScript.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScript.java deleted file mode 100644 index 87d995eabd..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScript.java +++ /dev/null @@ -1,160 +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.container.ruby.rubyscript; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Vector; - -import org.jruby.IRuby; -import org.jruby.RubyString; -import org.jruby.javasupport.JavaEmbedUtils; -import org.jruby.javasupport.JavaUtil; -import org.jruby.runtime.builtin.IRubyObject; - -/** - * A RhinoScript represents a compiled JavaScript script - */ -public class RubyScript { - protected final String NEW = ".new"; - protected final String EQUAL = "="; - - protected String scriptName; - - protected String script; - - protected Map responseClasses; - - protected ClassLoader classLoader; - - private IRuby rubyEngine = JavaEmbedUtils.initialize(new Vector()); - - /** - * Create a new RubyScript. - * - * @param scriptName - * the name of the script. Can be anything, only used in messages to identify the script - * @param script - * the complete script - */ - public RubyScript(String scriptName, String script) { - this(scriptName, script, (Map) null, null); - } - - /** - * Create a new RubyScript. - * - * @param scriptName - * the name of the script. Can be anything, only used in messages to identify the script - * @param script - * the complete script - * @param context - * name-value pairs that are added in to the scope where the script is compiled. May be null. The value objects are made available to - * the script by using a variable with the name. - * @param classLoader - * the ClassLoader to be used to locate any user Java classes used in the script - */ - public RubyScript(String scriptName, String script, Map context, ClassLoader classLoader) { - this.scriptName = scriptName; - this.script = script; - this.responseClasses = new HashMap(); - this.classLoader = classLoader; - rubyEngine.loadScript((RubyString) JavaUtil.convertJavaToRuby(rubyEngine, - "MyScript.rb", - String.class), - (RubyString) JavaUtil.convertJavaToRuby(rubyEngine, - this.script, - String.class), - false); - } - - /** - * Create a new invokeable instance of the script - * - * @return a IRubyObject - */ -public RubyScriptInstance createScriptInstance(Map context, String rubyClassName) { - if ( rubyClassName == null ) { - return new RubyScriptInstance(rubyEngine.evalScript(script), responseClasses); - } - else { - IRubyObject rubyObject = rubyEngine.evalScript(rubyClassName + NEW); - - Iterator keyIterator = context.keySet().iterator(); - String key = null; - Object value = null; - while ( keyIterator.hasNext()) { - key = keyIterator.next(); - value = JavaUtil.convertJavaToRuby(rubyEngine, - context.get(key), - context.get(key).getClass()); - - JavaEmbedUtils.invokeMethod(rubyEngine, - rubyObject, - key + EQUAL, - new Object[]{value}, null); - } - - return new RubyScriptInstance(rubyObject, responseClasses); - } - } - public String getScript() { - return script; - } - - public String getScriptName() { - return scriptName; - } - - public Map getResponseClasses() { - return responseClasses; - } - - public ClassLoader getClassLoader() { - return classLoader; - } - - /** - * Set the Java type of a response value. JavaScript is dynamically typed so Rhino cannot always work out what the intended Java type of a - * response should be, for example should the statement "return 42" be a Java int, or Integer or Double etc. When Rhino can't determine the type - * it will default to returning a String, using this method enables overriding the Rhino default to use a specific Java type. - */ - public void setResponseClass(String functionName, Class responseClasses) { - this.responseClasses.put(functionName, - responseClasses); - } - - public RubySCAConfig getSCAConfig() { - return new RubySCAConfig(rubyEngine.getGlobalVariables()); - } - - public void setScript(String script) { - this.script = script; - } - - public IRuby getRubyEngine() { - return rubyEngine; - } - - public void setRubyEngine(IRuby rubyEngine) { - this.rubyEngine = rubyEngine; - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScriptInstance.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScriptInstance.java deleted file mode 100644 index 2d93c57fc9..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyScriptInstance.java +++ /dev/null @@ -1,61 +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.container.ruby.rubyscript; - -import java.util.HashMap; -import java.util.Map; - -import org.jruby.javasupport.JavaEmbedUtils; -import org.jruby.runtime.builtin.IRubyObject; - -/** - * An invokeable instance of a JavaScript script. - */ -public class RubyScriptInstance { - - private IRubyObject rubyInstance; - - private Map responseClasses; - - public RubyScriptInstance(IRubyObject rubyInstance, Map responseClasses) { - this.rubyInstance = rubyInstance; - this.responseClasses = responseClasses; - if (this.responseClasses == null) { - this.responseClasses = new HashMap(); - } - } - - public Object invokeFunction(String functionName, Object[] args, Class returnType) { - Object[] rubyArgs = RubyUtils.fromJavaToRuby(rubyInstance.getRuntime(), args); - - Object rubyResponse = JavaEmbedUtils.invokeMethod(rubyInstance.getRuntime(), - rubyInstance, - functionName, - rubyArgs, - returnType); - Object response = RubyUtils.fromRubyToJava(rubyInstance.getRuntime(), - returnType, - rubyResponse); - return response; - } - - - - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyUtils.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyUtils.java deleted file mode 100644 index c19f233b94..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/java/org/apache/tuscany/container/ruby/rubyscript/RubyUtils.java +++ /dev/null @@ -1,71 +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.container.ruby.rubyscript; - -import java.io.ByteArrayInputStream; - -import javax.xml.stream.XMLStreamReader; - -import org.apache.axiom.om.OMAbstractFactory; -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.impl.builder.StAXOMBuilder; -import org.apache.axiom.om.util.StAXUtils; -import org.jruby.IRuby; -import org.jruby.RubyObject; -import org.jruby.javasupport.JavaUtil; - -/** - * @author administrator - * - */ -public class RubyUtils { - public static Object fromRubyToJava(IRuby rubyEngine, Class reqArgType, Object rubyArg) { - Object javaArg = null; - - //for known cases the JRuby runtime handles the conversion before calling the Java objects - //so nothing to do. When it cannot convert it simply passed the instance of RubyObject - if ( rubyArg instanceof RubyObject ) { - //need to deal with this - } else { - javaArg = rubyArg; - } - - return javaArg; - } - - public static Object[] fromJavaToRuby(IRuby rubyEngine, Object[] arg) { - Object[] jsArgs; - if (arg == null) { - jsArgs = new Object[0]; - } else { - jsArgs = new Object[arg.length]; - for (int i = 0; i < jsArgs.length; i++) { - jsArgs[i] = fromJavaToRuby(rubyEngine, arg[i]); - } - } - - return jsArgs; - } - - public static Object fromJavaToRuby(IRuby rubyEngine, Object javaObj) { - Object rubyObj = JavaUtil.convertJavaToRuby(rubyEngine, javaObj, javaObj.getClass()); - return rubyObj; - } - -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/default.scdl b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/default.scdl deleted file mode 100644 index 7a329afb7a..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/default.scdl +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - org.apache.tuscany.sca.services.containers - ruby - 1.0-incubator-M2-SNAPSHOT - - - - - - - - - - - - - - - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/ruby.system.scdl b/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/ruby.system.scdl deleted file mode 100644 index 686e1ea308..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/main/resources/META-INF/sca/ruby.system.scdl +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldService.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldService.java deleted file mode 100644 index 7e99f6f720..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldService.java +++ /dev/null @@ -1,24 +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 helloworld; - - -public interface HelloWorldService { - String sayHello(String s); -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldServiceImpl.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldServiceImpl.java deleted file mode 100644 index be804d3540..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/helloworld/HelloWorldServiceImpl.java +++ /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. - */ -package helloworld; - -import org.osoa.sca.annotations.Property; - - -public class HelloWorldServiceImpl implements HelloWorldService { - - @Property - public String greeting = "Default hello"; - - public String getGreeting() { - return greeting; - } - - - public void setGreeting(String greeting) { - this.greeting = greeting; - } - - public String sayHello(String s) { - //return greeting + s + " from the JavaWorld!"; - return greeting + " from Java Reference " + s ; //+ " from " + helloSayer.firstName + " " + helloSayer.lastName; - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyImplementationLoaderTestCase.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyImplementationLoaderTestCase.java deleted file mode 100644 index 289a187461..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyImplementationLoaderTestCase.java +++ /dev/null @@ -1,109 +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.container.ruby; - -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.apache.tuscany.spi.component.CompositeComponent; -import org.apache.tuscany.spi.deployer.DeploymentContext; -import org.apache.tuscany.spi.loader.LoaderException; -import org.apache.tuscany.spi.loader.LoaderRegistry; -import org.apache.tuscany.spi.loader.MissingResourceException; - -import junit.framework.TestCase; -import static org.easymock.EasyMock.expect; -import static org.easymock.classextension.EasyMock.createMock; -import static org.easymock.classextension.EasyMock.replay; -import static org.easymock.classextension.EasyMock.verify; - -/** - * Tests for RubyImplementationLoader - */ -public class RubyImplementationLoaderTestCase extends TestCase { - private CompositeComponent parent; - - private XMLStreamReader reader; - - private DeploymentContext deploymentContext; - - private ClassLoader classLoader; - - private LoaderRegistry registry; - - private RubyImplementationLoader loader; - - public void testNoScriptAttribute() throws LoaderException, XMLStreamException { - expect(reader.getAttributeValue(null, "script")).andReturn(null); - expect(reader.getAttributeValue(null, "class")).andReturn(null); - replay(reader); - replay(deploymentContext); - - try { - loader.load(parent, reader, deploymentContext); - fail(); - } catch (MissingResourceException e) { - // ok - } - verify(reader); - verify(deploymentContext); - } - - public void testNoScriptPresent() throws LoaderException, XMLStreamException { - expect(reader.getAttributeValue(null, "script")).andReturn("foo.groovy"); - expect(reader.getAttributeValue(null, "class")).andReturn(null); - expect(deploymentContext.getClassLoader()).andReturn(classLoader); - - replay(reader); - replay(deploymentContext); - - RubyImplementationLoader mockLoader = new RubyImplementationLoader(registry) { - protected String loadSource(ClassLoader cl, String resource) throws LoaderException { - assertSame(classLoader, cl); - assertEquals("foo.groovy", resource); - throw new MissingResourceException(resource); - } - }; - try { - mockLoader.load(parent, reader, deploymentContext); - fail(); - } catch (MissingResourceException e) { - assertEquals("foo.groovy", e.getMessage()); - } - verify(reader); - verify(deploymentContext); - } - - public void testLoadScript() throws LoaderException { - String script = - loader.loadSource(getClass().getClassLoader(), "org/apache/tuscany/container/ruby/mock/test.rb"); - assertEquals("//Test Script", script); - } - - protected void setUp() throws Exception { - super.setUp(); - registry = createMock(LoaderRegistry.class); - loader = new RubyImplementationLoader(registry); - - parent = createMock(CompositeComponent.class); - reader = createMock(XMLStreamReader.class); - deploymentContext = createMock(DeploymentContext.class); - classLoader = createMock(ClassLoader.class); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyScriptIntrospectorTestCase.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyScriptIntrospectorTestCase.java deleted file mode 100644 index 4f4869355d..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/RubyScriptIntrospectorTestCase.java +++ /dev/null @@ -1,130 +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.container.ruby; - -import helloworld.HelloWorldService; - -import java.io.IOException; -import java.net.URL; -import java.util.Map; - -import javax.wsdl.WSDLException; -import javax.xml.namespace.QName; - -import junit.framework.TestCase; - -import org.apache.tuscany.container.ruby.rubyscript.RubySCAConfig; -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl; -import org.apache.tuscany.idl.wsdl.WSDLDefinitionRegistryImpl; -import org.apache.tuscany.idl.wsdl.WSDLServiceContract; -import org.apache.tuscany.spi.idl.InvalidServiceContractException; -import org.apache.tuscany.spi.idl.java.JavaServiceContract; -import org.apache.tuscany.spi.loader.MissingResourceException; -import org.apache.tuscany.spi.model.ComponentType; -import org.apache.tuscany.spi.model.ServiceContract; -import org.apache.tuscany.spi.model.ServiceDefinition; - -public class RubyScriptIntrospectorTestCase extends TestCase { - - private static final WSDLDefinitionRegistryImpl.Monitor NULL_MONITOR = new WSDLDefinitionRegistryImpl.Monitor() { - public void readingWSDL(String namespace, URL location) { - } - - public void cachingDefinition(String namespace, URL location) { - } - }; - - public void testJavaInterface() throws MissingResourceException, - InvalidServiceContractException { - RubyScript rs = new RubyScript("javaInterfaceTest", - "$SCA = { 'javaInterface' => 'helloworld.HelloWorldService'}", - null, - getClass().getClassLoader()); - RubySCAConfig scaConfig = new RubySCAConfig(rs.getRubyEngine().getGlobalVariables()); - RubyIntrospector introspector = new RubyIntrospector(null, - new JavaInterfaceProcessorRegistryImpl()); - ComponentType comonentType = introspector.introspectScript(scaConfig, - rs.getClassLoader()); - assertNotNull(comonentType); - Map services = comonentType.getServices(); - assertEquals(1, - services.size()); - ServiceDefinition serviceDefinition = (ServiceDefinition) services.values() - .iterator() - .next(); - ServiceContract serviceContract = serviceDefinition.getServiceContract(); - assertTrue(serviceContract instanceof JavaServiceContract); - JavaServiceContract javaServiceContract = (JavaServiceContract) serviceContract; - assertEquals(HelloWorldService.class, - javaServiceContract.getInterfaceClass()); - } - - public void testWSDLLocation() throws WSDLException { - // RhinoScript rs = new RhinoScript("wsdlLocation", - // "SCA = { wsdlLocation : 'src/test/resources/org/apache/tuscany/container/javascript/rhino/helloworld.wsdl',};", null, getClass() - // .getClassLoader()); - // RhinoSCAConfig scaConfig = new RhinoSCAConfig(rs.getScriptScope()); - // JavaScriptIntrospector introspector = new JavaScriptIntrospector(null); - // ComponentType comonentType = introspector.introspectScript(scaConfig, rs.getClassLoader()); - // assertNotNull(comonentType); - // Map services = comonentType.getServices(); - // assertEquals(1, services.size()); - // ServiceDefinition serviceDefinition = (ServiceDefinition) services.values().iterator().next(); - // ServiceContract serviceContract = serviceDefinition.getServiceContract(); - // assertTrue(serviceContract instanceof WSDLServiceContract); - // WSDLServiceContract wsdlServiceContract = (WSDLServiceContract) serviceContract; - // assertEquals(new QName("http://helloworld", "HelloWorld"), wsdlServiceContract.getPortType().getQName()); - } - - public void testWSDLPortType() throws WSDLException, - IOException, - MissingResourceException, - InvalidServiceContractException { - RubyScript rs = new RubyScript("wsdlPortType", - "$SCA = { 'wsdlPortType' => 'HelloWorld', 'wsdlNamespace' => 'http://helloworld'}", - null, - getClass().getClassLoader()); - RubySCAConfig scaConfig = new RubySCAConfig(rs.getRubyEngine().getGlobalVariables()); - - WSDLDefinitionRegistryImpl wsdlReg = new WSDLDefinitionRegistryImpl(); - wsdlReg.setMonitor(NULL_MONITOR); - URL wsdlURL = getClass().getClassLoader() - .getResource("org/apache/tuscany/container/ruby/jruby/helloworld.wsdl"); - wsdlReg.loadDefinition("http://helloworld", - wsdlURL); - - RubyIntrospector introspector = new RubyIntrospector(wsdlReg, - new JavaInterfaceProcessorRegistryImpl()); - ComponentType comonentType = introspector.introspectScript(scaConfig, - rs.getClassLoader()); - assertNotNull(comonentType); - Map services = comonentType.getServices(); - assertEquals(1, - services.size()); - ServiceDefinition serviceDefinition = (ServiceDefinition) services.values() - .iterator() - .next(); - ServiceContract serviceContract = serviceDefinition.getServiceContract(); - assertTrue(serviceContract instanceof WSDLServiceContract); - WSDLServiceContract wsdlServiceContract = (WSDLServiceContract) serviceContract; - assertEquals(new QName("http://helloworld", "HelloWorld"), - wsdlServiceContract.getPortType().getQName()); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/ScriptInvokeTestCase.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/ScriptInvokeTestCase.java deleted file mode 100644 index c83605eecb..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/ScriptInvokeTestCase.java +++ /dev/null @@ -1,54 +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.container.ruby; - -import junit.framework.TestCase; - -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; - -/** - * Tests for invoker JavaScriptComponents - */ -public class ScriptInvokeTestCase extends TestCase { - - private static final String SCRIPT = "def greet(name) \n return name \n end \n"; - - private RubyScript rubyScript; - - /** - * Tests the invocation of a Groovy "script" as opposed to a class - */ - public void testBasicScriptInvocation() throws Exception { -// ModuleScopeContainer scope = new ModuleScopeContainer(null); -// scope.start(); -// List> services = new ArrayList>(); -// services.add(Greeting.class); -// RubyComponent context = new RubyComponent("source", rhinoScript, services, new HashMap(), -// null, scope, ArtifactFactory.createWireService(), null); -// scope.register(context); -// Greeting object = (Greeting) context.getServiceInstance(); -// assertEquals("foo", object.greet("foo")); -// scope.stop(); - } - - protected void setUp() throws Exception { - super.setUp(); - rubyScript = new RubyScript("test", SCRIPT); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java deleted file mode 100644 index 3794eb82f7..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/WireTestCase.java +++ /dev/null @@ -1,186 +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.container.ruby; - -import static org.easymock.EasyMock.reportMatcher; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; - -import junit.framework.TestCase; - -import org.apache.tuscany.container.ruby.mock.Greeting; -import org.apache.tuscany.container.ruby.rubyscript.RubyScript; -import org.apache.tuscany.core.component.scope.ModuleScopeContainer; -import org.apache.tuscany.spi.model.DataType; -import org.apache.tuscany.spi.model.Operation; -import org.apache.tuscany.spi.wire.InboundInvocationChain; -import org.apache.tuscany.spi.wire.InboundWire; -import org.apache.tuscany.spi.wire.Message; -import org.apache.tuscany.spi.wire.TargetInvoker; -import org.apache.tuscany.test.ArtifactFactory; -import org.easymock.IArgumentMatcher; - -/** - * Tests for JavaScript component wiring - */ -public class WireTestCase extends TestCase { - - private static final String SCRIPT = " def setWire(ref)\n" + " wire = ref\n" - + "end \n" + " def greet(name)\n" + " return wire.greet(name) \n" - + " end\n"; - - private static final String SCRIPT2 = " def greet(name)\n" + " return name \n" - + "end \n"; - - private RubyScript implClass1; - - private RubyScript implClass2; - - /** - * Tests a basic invocation down a source wire - */ - public void testReferenceWireInvocation() throws Exception { - // ModuleScopeContainer scope = new ModuleScopeContainer(null); - // scope.start(); - // - // List> services = new ArrayList>(); - // services.add(Greeting.class); - // JavaScriptComponent context = new JavaScriptComponent("source", implClass1, services, properties, null, scope, - // ArtifactFactory.createWireService(), null); - // OutboundWire wire = ArtifactFactory.createOutboundWire("wire", Greeting.class); - // ArtifactFactory.terminateWire(wire); - // - // TargetInvoker invoker = createMock(TargetInvoker.class); - // expect(invoker.isCacheable()).andReturn(false); - // Message response = new MessageImpl(); - // response.setBody("foo"); - // expect(invoker.invoke(eqMessage())).andReturn(response); - // replay(invoker); - // - // for (OutboundInvocationChain chain : wire.getInvocationChains().values()) { - // chain.setTargetInvoker(invoker); - // } - // scope.register(context); - // context.addOutboundWire(wire); - // Greeting greeting = context.getServiceInstance(); - // assertEquals("foo", greeting.greet("foo")); - // verify(invoker); - // - // scope.stop(); - } - - // todo this could be generalized and moved to test module - public static Message eqMessage() { - reportMatcher(new IArgumentMatcher() { - public boolean matches(Object object) { - if (!(object instanceof Message)) { - return false; - } - final Message msg = (Message) object; - Object[] body = (Object[]) msg.getBody(); - return "foo".equals(body[0]); - } - - public void appendTo(StringBuffer stringBuffer) { - } - }); - return null; - } - - /** - * Tests a basic invocation to a target - */ - public void testTargetInvocation() throws Exception { - ModuleScopeContainer scope = new ModuleScopeContainer(null); - scope.start(); - List> services = new ArrayList>(); - services.add(Greeting.class); - Map properties = new Hashtable(); - properties.put("greeting","HeyThere"); - - RubyComponent context = new RubyComponent("source", - implClass2, - null, - services, - properties, - null, - scope, - ArtifactFactory.createWireService(), - null); - scope.register(context); - DataType returnDataType = new DataType(String.class, String.class.getName()); -// Operation operation = new Operation("greet", -// returnDataType, -// null, -// null, -// false, -// null); -// -// TargetInvoker invoker = context.createTargetInvoker(null, -// operation); -// assertEquals("foo", -// invoker.invokeTarget(new String[]{"foo"})); - scope.stop(); - } - - /** - * Tests a basic invocation down a target wire - */ - public void testTargetWireInvocation() throws Exception { - ModuleScopeContainer scope = new ModuleScopeContainer(null); - scope.start(); - List> services = new ArrayList>(); - services.add(Greeting.class); - Map properties = new Hashtable(); - properties.put("greeting","HeyThere"); - RubyComponent context = new RubyComponent("source", - implClass2, - null, - services, - properties, - null, - scope, - ArtifactFactory.createWireService(), - null); - scope.register(context); - - InboundWire wire = ArtifactFactory.createInboundWire("Greeting", - Greeting.class); - ArtifactFactory.terminateWire(wire); - for (InboundInvocationChain chain : wire.getInvocationChains().values()) { - chain.setTargetInvoker(context.createTargetInvoker(null, - chain.getOperation())); - } - context.addInboundWire(wire); - Greeting greeting = (Greeting) context.getServiceInstance("Greeting"); - assertEquals("foo", - greeting.greet("foo")); - scope.stop(); - } - - protected void setUp() throws Exception { - super.setUp(); - implClass1 = new RubyScript("script1", SCRIPT); - implClass2 = new RubyScript("script2", SCRIPT2); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java deleted file mode 100644 index c2af5b9b10..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/function/HelloWorldTestCase.java +++ /dev/null @@ -1,75 +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.container.ruby.function; - -import java.net.URL; - -import helloworld.HelloWorldService; - -import org.apache.tuscany.test.SCATestCase; -import org.osoa.sca.CompositeContext; -import org.osoa.sca.CurrentCompositeContext; - -/** - * This shows how to test the HelloWorld service component. - */ -public class HelloWorldTestCase extends SCATestCase { - - private HelloWorldService helloWorldService; - private CompositeContext context = null; - - - protected void setUp() throws Exception { - URL base = getClass().getResource("/META-INF/sca/ruby.system.scdl"); - addExtension("RubyContainer", new URL(base, "default.scdl")); - setApplicationSCDL(getClass().getResource("helloworld.scdl")); - super.setUp(); - - context = CurrentCompositeContext.getContext(); - helloWorldService = context.locateService(HelloWorldService.class, "HelloWorldRubyComponent"); - - //helloWorldService = context.locateService(HelloWorldService.class, "HelloWorldJavaReference"); - } - - public void testHelloWorldWithClass() throws Exception { - assertEquals(helloWorldService.sayHello("petra"), "Hey Howdy from Java Reference petra"); - //System.out.println(helloWorldService.sayHello("petra")); - } - - public void testHelloWorldGlobal() throws Exception { - assertEquals(helloWorldService.sayHello("artep"), "Hey Howdy from Java Reference artep"); - //System.out.println(helloWorldService.sayHello("artep")); - } - - public void testHelloWorldProperty() throws Exception { - HelloWorldService helloWorldService = context.locateService(HelloWorldService.class, "HelloWorldProperty"); - assertEquals(helloWorldService.sayHello("petra"), "Namaskaar petra"); - //System.out.println(helloWorldService.sayHello("petra")); - } - - public void testHelloWorldPropertyDefault() throws Exception { - HelloWorldService helloWorldService = context.locateService(HelloWorldService.class, "HelloWorldPropertyDefault"); - assertEquals(helloWorldService.sayHello("petra"), "Bow Wow petra"); - //System.out.println(helloWorldService.sayHello("petra")); - } - - protected void tearDown() throws Exception { - super.tearDown(); - } -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/mock/Greeting.java b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/mock/Greeting.java deleted file mode 100644 index acf71f152b..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/java/org/apache/tuscany/container/ruby/mock/Greeting.java +++ /dev/null @@ -1,26 +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.container.ruby.mock; - -public interface Greeting { - - String setWire(Greeting ref); - - String greet(String name); -} diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType deleted file mode 100644 index d52b63226c..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.componentType +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - Hullow - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.rb b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.rb deleted file mode 100644 index 3f1a053b15..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/HelloWorld.rb +++ /dev/null @@ -1,33 +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. - -class Helloworld - - def sayHello(s) - return "Hello to " + s + " from the Ruby World!" - end - -end - -class HelloWorldServiceRubyImpl - attr_writer :extHelloWorld - attr_writer :greeting - - def sayHello(s) - return @greeting + " " + @extHelloWorld.sayHello(s); - end -end diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/IntrospectableHelloWorld.rb b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/IntrospectableHelloWorld.rb deleted file mode 100644 index d4edb7a100..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/IntrospectableHelloWorld.rb +++ /dev/null @@ -1,30 +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. - -$SCA = { - 'javaInterface' => 'helloworld.HelloWorldService' -} - -def sayHello(s) - return "Hello to " + s + " from the Ruby World!" -end - -class HelloWorldServiceRubyImpl - def sayHello(s) - return "Hello to " + s + " from the Ruby World!" - end -end diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/helloworld.scdl b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/helloworld.scdl deleted file mode 100644 index 222beac543..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/helloworld.scdl +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - HelloWorldJavaReference - Hey - - - - - Howdy - - - - - Namaskaar - - - - - - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.componentType b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.componentType deleted file mode 100644 index 6b37990b8b..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.componentType +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - Bow Wow - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.rb b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.rb deleted file mode 100644 index 7aa0f3e8ea..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/function/propertyTest.rb +++ /dev/null @@ -1,24 +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. - -class HelloWorldPropertyTest - attr_writer :GREETING - - def sayHello(s) - return @GREETING + " " + s; - end -end \ No newline at end of file diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/jruby/helloworld.wsdl b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/jruby/helloworld.wsdl deleted file mode 100644 index 67067f044a..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/jruby/helloworld.wsdl +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/mock/test.rb b/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/mock/test.rb deleted file mode 100644 index ef2694b475..0000000000 --- a/branches/sca-java-M2/sca/services/containers/container.ruby/src/test/resources/org/apache/tuscany/container/ruby/mock/test.rb +++ /dev/null @@ -1 +0,0 @@ -//Test Script \ No newline at end of file -- cgit v1.2.3