summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-integration/sca/extensions/script/container.bsf/src/main')
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponent.java135
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentBuilder.java97
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentType.java47
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentTypeLoader.java76
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementation.java74
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationJavaScriptLoader.java43
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationLoader.java120
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationPythonLoader.java78
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationRubyLoader.java43
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstance.java51
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstanceFactory.java151
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptTargetInvoker.java56
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/default.scdl40
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/extension.composite22
-rw-r--r--branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/script.system.scdl52
15 files changed, 0 insertions, 1085 deletions
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponent.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponent.java
deleted file mode 100644
index f79325170a..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponent.java
+++ /dev/null
@@ -1,135 +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.script;
-
-import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
-import static org.objectweb.asm.Opcodes.ACC_INTERFACE;
-import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
-import static org.objectweb.asm.Opcodes.V1_5;
-
-import java.util.Arrays;
-
-import org.apache.tuscany.spi.ObjectCreationException;
-import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.TargetResolutionException;
-import org.apache.tuscany.spi.component.WorkContext;
-import org.apache.tuscany.spi.extension.AtomicComponentExtension;
-import org.apache.tuscany.spi.extension.ExecutionMonitor;
-import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.Scope;
-import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.services.work.WorkScheduler;
-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.WireObjectFactory;
-import org.apache.tuscany.spi.wire.WireService;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.Type;
-
-/**
- * A component implementation for script languages.
- */
-public class ScriptComponent extends AtomicComponentExtension {
-
- private ScriptInstanceFactory factory;
-
- public ScriptComponent(String name,
- CompositeComponent parent,
- WireService wireService,
- WorkContext workContext,
- WorkScheduler workScheduler,
- ExecutionMonitor monitor,
- int initLevel,
- ScriptInstanceFactory factory,
- Scope scope) {
- super(name, parent, wireService, workContext, workScheduler, monitor, initLevel);
- this.factory = factory;
- this.scope = scope;
- setPassByReferenceMethods(Arrays.asList(new String[]{}));
- }
-
- public Object createInstance() throws ObjectCreationException {
- return factory.getInstance();
- }
-
- public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire) {
- return new ScriptTargetInvoker(operation.getName(), this);
- }
-
- @SuppressWarnings({"unchecked"})
- protected void onReferenceWire(OutboundWire wire) {
- Class<?> clazz = wire.getServiceContract().getInterfaceClass();
- if (clazz == null) {
- clazz = createInterfaceClass(wire.getServiceContract());
- }
- factory.addContextObjectFactory(wire.getReferenceName(), clazz, new WireObjectFactory(clazz, wire, wireService));
- }
-
- public Object getTargetInstance() throws TargetResolutionException {
- return scopeContainer.getInstance(this);
- }
-
- /**
- * Create an Java interface class for the WSDL ServiceContract
- * TODO: this should probably be moved to wsdl idl module
- */
- private Class createInterfaceClass(ServiceContract serviceContract) {
- ClassWriter cw = new ClassWriter(false);
-
- // Generate the interface
- String interfaceName = serviceContract.getInterfaceName();
- cw.visit(V1_5,
- ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE,
- interfaceName,
- null,
- "java/lang/Object",
- new String[0]);
-
- // Generate methods from the WSDL operations
- for (Object o : serviceContract.getOperations().values()) {
- Operation operation = (Operation)o;
- String inputType = Type.getDescriptor(Object.class);
- String outputType = Type.getDescriptor(Object.class);
- cw.visitMethod(ACC_PUBLIC + ACC_ABSTRACT,
- operation.getName(),
- "(" + inputType + ")" + outputType,
- null,
- null).visitEnd();
- }
-
- // Generate the bytecodes
- cw.visitEnd();
- byte[] bytes = cw.toByteArray();
-
- Class interfaceClass = new GeneratedClassLoader().defineClass(bytes);
-
- return interfaceClass;
- }
-
- private class GeneratedClassLoader 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-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentBuilder.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentBuilder.java
deleted file mode 100644
index fee815680f..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentBuilder.java
+++ /dev/null
@@ -1,97 +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.script;
-
-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.idl.java.JavaServiceContract;
-import org.apache.tuscany.spi.model.ComponentDefinition;
-import org.apache.tuscany.spi.model.PropertyValue;
-import org.apache.tuscany.spi.model.Scope;
-import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.model.ServiceDefinition;
-
-/**
- * Extension point for creating {@link ScriptComponent}s from an assembly configuration
- *
- * @version $Rev$ $Date$
- */
-public class ScriptComponentBuilder extends ComponentBuilderExtension<ScriptImplementation> {
-
- public ScriptComponentBuilder() {
- }
-
- protected Class<ScriptImplementation> getImplementationType() {
- return ScriptImplementation.class;
- }
-
- public Component build(CompositeComponent parent, ComponentDefinition<ScriptImplementation> componentDefinition,
- DeploymentContext deploymentContext) throws BuilderConfigException {
-
- ScriptImplementation implementation = componentDefinition.getImplementation();
-
- for (ServiceDefinition service : implementation.getComponentType().getServices().values()) {
- // if its not a Java interface assume WSDL and want XML databinding
- ServiceContract contract = service.getServiceContract();
- if (!(contract instanceof JavaServiceContract)) {
- service.getServiceContract().setDataBinding("org.mozilla.javascript.xmlimpl.XML");
- }
- }
-
- ScriptInstanceFactory instanceFactory = createInstanceFactory(componentDefinition, implementation);
-
- String name = componentDefinition.getName();
- Scope scope = getScope(deploymentContext, implementation.getComponentType());
-
- return new ScriptComponent(name, parent, wireService, workContext, workScheduler, null, 0, instanceFactory, scope);
- }
-
- private ScriptInstanceFactory createInstanceFactory(ComponentDefinition<ScriptImplementation> componentDefinition, ScriptImplementation implementation) {
-
- String className = implementation.getClassName();
- String scriptSource = implementation.getScriptSource();
- String scriptName = implementation.getScriptName();
- ClassLoader cl = implementation.getClassLoader();
-
- ScriptInstanceFactory instanceFactory = new ScriptInstanceFactory(scriptName, className, scriptSource, cl);
-
- // add the properties for the component
- for (PropertyValue propertyValue : componentDefinition.getPropertyValues().values()) {
- instanceFactory.addContextObjectFactory(propertyValue.getName(), propertyValue.getValueFactory());
- }
-
- return instanceFactory;
- }
-
- protected Scope getScope(DeploymentContext deploymentContext, ScriptComponentType componentType) {
- ScopeContainer scopeContainer;
- Scope scope = componentType.getImplementationScope();
- if (Scope.COMPOSITE == scope) {
- scopeContainer = deploymentContext.getCompositeScope();
- } else {
- scopeContainer = scopeRegistry.getScopeContainer(scope);
- }
- return scopeContainer.getScope();
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentType.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentType.java
deleted file mode 100644
index 70ec3e88c7..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentType.java
+++ /dev/null
@@ -1,47 +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.script;
-
-import javax.xml.namespace.QName;
-
-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;
-
-/**
- * A componentType for script components TODO: need lifecycle methods
- * init/destroy
- */
-public class ScriptComponentType extends ComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> {
-
- public ScriptComponentType() {
- this.implementationScope = Scope.COMPOSITE;
- }
-
- @Override
- public Property getProperty(String name) {
- Property p = super.getProperty(name);
- if (p == null) {
- p = new Property<Object>(name, new QName("http://www.w3.org/2001/XMLSchema", "any"), null);
- }
- return p;
- }
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentTypeLoader.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentTypeLoader.java
deleted file mode 100644
index 5c3e420b29..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptComponentTypeLoader.java
+++ /dev/null
@@ -1,76 +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.script;
-
-import java.net.URL;
-
-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.loader.LoaderException;
-import org.apache.tuscany.spi.loader.MissingSideFileException;
-import org.apache.tuscany.spi.model.ComponentType;
-
-/**
- * ComponentType loader for script components
- */
-public class ScriptComponentTypeLoader extends ComponentTypeLoaderExtension<ScriptImplementation> {
-
- public ScriptComponentTypeLoader() {
- }
-
- @Override
- protected Class<ScriptImplementation> getImplementationClass() {
- return ScriptImplementation.class;
- }
-
- public void load(CompositeComponent parent,
- ScriptImplementation implementation,
- DeploymentContext deploymentContext) throws LoaderException {
- String sideFile = getSideFileName(implementation.getResourceName());
- URL resource = implementation.getClassLoader().getResource(sideFile);
- ScriptComponentType componentType;
- if (resource == null) {
- throw new MissingSideFileException("Component type side file not found", sideFile);
- // TODO: or else implement introspection
- } else {
- componentType = loadFromSidefile(parent, resource, deploymentContext);
- }
- implementation.setComponentType(componentType);
- }
-
- @SuppressWarnings("unchecked")
- protected ScriptComponentType loadFromSidefile(CompositeComponent parent,
- URL url,
- DeploymentContext deploymentContext)
- throws LoaderException {
- ScriptComponentType scriptComponentType = new ScriptComponentType();
- return (ScriptComponentType) loaderRegistry
- .load(parent, scriptComponentType, url, ComponentType.class, deploymentContext);
- }
-
- protected String getSideFileName(String resourceName) {
- int lastDot = resourceName.lastIndexOf('.');
- if (lastDot != -1) {
- resourceName = resourceName.substring(0, lastDot);
- }
- return resourceName + ".componentType";
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementation.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementation.java
deleted file mode 100644
index 8b54944cf4..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementation.java
+++ /dev/null
@@ -1,74 +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.script;
-
-import org.apache.tuscany.spi.model.AtomicImplementation;
-
-/**
- * Model object for a script implementation.
- */
-public class ScriptImplementation extends AtomicImplementation<ScriptComponentType> {
-
- private String resourceName;
- private String className;
- private String scriptSource;
- private String scriptName;
- private ClassLoader classLoader;
-
- public String getResourceName() {
- return resourceName;
- }
-
- public void setResourceName(String resourceName) {
- this.resourceName = resourceName;
- }
-
- public String getClassName() {
- return className;
- }
-
- public void setClassName(String className) {
- this.className = className;
- }
-
- public String getScriptSource() {
- return scriptSource;
- }
-
- public void setScriptSource(String scriptSource) {
- this.scriptSource = scriptSource;
- }
-
- public String getScriptName() {
- return scriptName;
- }
-
- public void setScriptName(String scriptName) {
- this.scriptName = scriptName;
- }
-
- public ClassLoader getClassLoader() {
- return classLoader;
- }
-
- public void setClassLoader(ClassLoader classLoader) {
- this.classLoader = classLoader;
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationJavaScriptLoader.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationJavaScriptLoader.java
deleted file mode 100644
index 1e48309dc6..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationJavaScriptLoader.java
+++ /dev/null
@@ -1,43 +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.script;
-
-import static org.osoa.sca.Constants.SCA_NS;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.loader.LoaderRegistry;
-import org.osoa.sca.annotations.Constructor;
-
-public class ScriptImplementationJavaScriptLoader extends ScriptImplementationLoader {
-
- private static final QName IMPLEMENTATION_JS = new QName(SCA_NS, "implementation.js");
-
- @Constructor({"registry"})
- public ScriptImplementationJavaScriptLoader(@Autowire LoaderRegistry registry) {
- super(registry);
- }
-
- public QName getXMLType() {
- return IMPLEMENTATION_JS;
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationLoader.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationLoader.java
deleted file mode 100644
index 2751011443..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationLoader.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tuscany.container.script;
-
-import static org.osoa.sca.Constants.SCA_NS;
-
-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.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.apache.tuscany.spi.model.ModelObject;
-import org.osoa.sca.annotations.Constructor;
-
-/**
- * Loader for handling implementation.script elements.
- * <p/>
- * <implementation.script script="path/foo.py" class="myclass">
- *
- * @version $Rev$ $Date$
- */
-public class ScriptImplementationLoader extends LoaderExtension<ScriptImplementation> {
-
- private static final QName IMPLEMENTATION_SCRIPT = new QName(SCA_NS, "implementation.script");
-
- @Constructor({"registry"})
- public ScriptImplementationLoader(@Autowire LoaderRegistry registry) {
- super(registry);
- }
-
- public QName getXMLType() {
- return IMPLEMENTATION_SCRIPT;
- }
-
- public ScriptImplementation load(CompositeComponent parent, ModelObject mo, XMLStreamReader reader,
- DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
- String scriptName = reader.getAttributeValue(null, "script");
- if (scriptName == null) {
- throw new MissingResourceException("implementation element has no 'script' attribute");
- }
-
- String className = reader.getAttributeValue(null, "class");
-
- LoaderUtil.skipToEndElement(reader);
-
- ClassLoader cl = deploymentContext.getClassLoader();
- String scriptSource = loadSource(cl, scriptName);
-
- ScriptImplementation implementation = new ScriptImplementation();
- implementation.setResourceName(scriptName);
- implementation.setScriptSource(scriptSource);
- implementation.setClassName(className);
- implementation.setScriptName(scriptName);
- implementation.setClassLoader(cl);
-
- 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) {
- throw new MissingResourceException(resource, e);
- }
- 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) {
- throw new LoaderException(resource, e);
- } finally {
- try {
- is.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationPythonLoader.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationPythonLoader.java
deleted file mode 100644
index 9836794e3a..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationPythonLoader.java
+++ /dev/null
@@ -1,78 +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.script;
-
-import static org.osoa.sca.Constants.SCA_NS;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
-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.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.apache.tuscany.spi.model.ModelObject;
-import org.osoa.sca.annotations.Constructor;
-
-public class ScriptImplementationPythonLoader extends ScriptImplementationLoader {
-
- private static final QName IMPLEMENTATION_PYTHON = new QName(SCA_NS, "implementation.python");
-
- @Constructor({"registry"})
- public ScriptImplementationPythonLoader(@Autowire LoaderRegistry registry) {
- super(registry);
- }
-
- public QName getXMLType() {
- return IMPLEMENTATION_PYTHON;
- }
-
- @Override
- public ScriptImplementation load(CompositeComponent parent, ModelObject mo, XMLStreamReader reader,
- DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
- String scriptName = reader.getAttributeValue(null, "module");
- if (scriptName == null) {
- throw new MissingResourceException("implementation element has no 'module' attribute");
- }
-
- String className = reader.getAttributeValue(null, "class");
-
- LoaderUtil.skipToEndElement(reader);
-
- ClassLoader cl = deploymentContext.getClassLoader();
- String scriptSource = loadSource(cl, scriptName);
-
- ScriptImplementation implementation = new ScriptImplementation();
- implementation.setResourceName(scriptName);
- implementation.setScriptSource(scriptSource);
- implementation.setClassName(className);
- implementation.setScriptName(scriptName);
- implementation.setClassLoader(cl);
-
- registry.loadComponentType(parent, implementation, deploymentContext);
-
- return implementation;
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationRubyLoader.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationRubyLoader.java
deleted file mode 100644
index 42dab55246..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptImplementationRubyLoader.java
+++ /dev/null
@@ -1,43 +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.script;
-
-import static org.osoa.sca.Constants.SCA_NS;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.loader.LoaderRegistry;
-import org.osoa.sca.annotations.Constructor;
-
-public class ScriptImplementationRubyLoader extends ScriptImplementationLoader {
-
- private static final QName IMPLEMENTATION_RUBY = new QName(SCA_NS, "implementation.ruby");
-
- @Constructor({"registry"})
- public ScriptImplementationRubyLoader(@Autowire LoaderRegistry registry) {
- super(registry);
- }
-
- public QName getXMLType() {
- return IMPLEMENTATION_RUBY;
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstance.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstance.java
deleted file mode 100644
index 988d2a96c2..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstance.java
+++ /dev/null
@@ -1,51 +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.script;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFException;
-
-/**
- * An invokable instance of a script
- *
- * Basically just a wrapper around a BSF engine with an optional script class object.
- */
-public class ScriptInstance {
-
- protected BSFEngine bsfEngine;
- protected Object clazz;
-
- public ScriptInstance(BSFEngine bsfEngine, Object clazz) {
- this.bsfEngine = bsfEngine;
- this.clazz = clazz;
- }
-
- public Object invokeTarget(String operationName, Object[] args) throws InvocationTargetException {
- try {
- return bsfEngine.call(clazz, operationName, args);
- } catch (BSFException e) {
- throw new InvocationTargetException(e.getTargetException() != null ? e.getTargetException() : e);
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- }
- }
-}
-
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstanceFactory.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstanceFactory.java
deleted file mode 100644
index 201af2265a..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptInstanceFactory.java
+++ /dev/null
@@ -1,151 +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.script;
-
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tuscany.spi.ObjectCreationException;
-import org.apache.tuscany.spi.ObjectFactory;
-
-import org.apache.bsf.BSFEngine;
-import org.apache.bsf.BSFException;
-import org.apache.bsf.BSFManager;
-
-/**
- * ScriptFactory creates ScriptInstances for a script
- */
-public class ScriptInstanceFactory implements ObjectFactory<ScriptInstance> {
- protected String resourceName;
- protected ClassLoader classLoader;
- private String className;
- private String scriptSource;
- private Map<String, ObjectFactory> contextObjects;
- private Map<String, Class> contextTypes;
-
- public ScriptInstanceFactory(String resourceName, String className, String scriptSource, ClassLoader classLoader) {
- this.resourceName = resourceName;
- this.classLoader = classLoader;
- this.className = className;
- this.scriptSource = scriptSource;
- this.contextObjects = new HashMap<String, ObjectFactory>();
- this.contextTypes = new HashMap<String, Class>();
- }
-
- /**
- * Create a new invokeable instance of the script <p/> objects to add to
- * scope of the script instance
- *
- * @return a RhinoScriptInstance
- */
- // public ScriptInstanceImpl createInstance(List<Class<?>> serviceBindings,
- // Map<String, Object> context) {
- public ScriptInstance getInstance() throws ObjectCreationException {
- try {
-
- // TODO: this uses a new manager and recompiles the scrip each time,
- // may be able to optimize
- // but need to be careful about instance scoping
-
- BSFManager bsfManager = new BSFManager();
- bsfManager.setClassLoader(BSFManager.class.getClassLoader());
-
- // TODO: hack to get Ruby working with the standalone launcher
- Thread.currentThread().setContextClassLoader(BSFManager.class.getClassLoader());
-
- // register any context objects (SCA properties and references)
- for (Map.Entry<String, ObjectFactory> entry : contextObjects.entrySet()) {
- Object value = entry.getValue().getInstance();
- Class type = contextTypes.get(entry.getKey());
- if (type == null) {
- type = value.getClass();
- }
- bsfManager.declareBean(entry.getKey(), value, type);
- }
-
- String scriptLanguage = BSFManager.getLangFromFilename(resourceName);
- BSFEngine bsfEngine = bsfManager.loadScriptingEngine(scriptLanguage);
- bsfEngine.exec(resourceName, 0, 0, scriptSource);
-
- // register any context objects (SCA properties and references)
- for (Map.Entry<String, ObjectFactory> entry : contextObjects.entrySet()) {
- Object value = entry.getValue().getInstance();
- Class type = contextTypes.get(entry.getKey());
- if (type == null) {
- type = value.getClass();
- }
- // TODO: Hack to bypass bug in BSF javascript engine
- if (!("javascript".equals(scriptLanguage)) || (value instanceof Number) || (value instanceof String) || (value instanceof Boolean)) {
- bsfManager.declareBean(entry.getKey(), value, type);
- }
- }
-
- // if there's a className then get the class object
- Object clazz = null;
- if (className != null) {
- // special case for Ruby which requires a .new call
- if ("ruby".equals(scriptLanguage)) {
- clazz = bsfEngine.eval(null, 1, 1, className + ".new");
- } else {
- clazz = bsfEngine.call(null, className, null);
- }
- }
-
- return new ScriptInstance(bsfEngine, clazz);
-
- } catch (BSFException e) {
- if (e.getTargetException() != null) {
- throw new ObjectCreationException(e.getTargetException());
- }
- throw new ObjectCreationException(e.getTargetException());
- }
- }
-
- public String getResourceName() {
- return resourceName;
- }
-
- public ClassLoader getClassLoader() {
- return classLoader;
- }
-
- protected Map<String, Class> getResponseClasses(List<Class> services) {
- Map<String, Class> responseClasses = new HashMap<String, Class>();
- if (services != null) {
- for (Class s : services) {
- for (Method m : s.getMethods()) {
- responseClasses.put(m.getName(), m.getReturnType());
- }
- }
- }
- return responseClasses;
- }
-
- public void addContextObjectFactory(String name, ObjectFactory<?> factory) {
- contextObjects.put(name, factory);
- }
-
- public void addContextObjectFactory(String name, Class type, ObjectFactory<?> factory) {
- contextObjects.put(name, factory);
- contextTypes.put(name, type);
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptTargetInvoker.java b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptTargetInvoker.java
deleted file mode 100644
index 21b84bb83b..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/java/org/apache/tuscany/container/script/ScriptTargetInvoker.java
+++ /dev/null
@@ -1,56 +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.script;
-
-import java.lang.reflect.InvocationTargetException;
-
-import org.apache.tuscany.spi.component.TargetException;
-import org.apache.tuscany.spi.extension.TargetInvokerExtension;
-
-/**
- * TargetInvoker implementation that calls a function on a ScriptInstanceImpl
- *
- * @version $Rev$ $Dev$
- */
-public class ScriptTargetInvoker extends TargetInvokerExtension {
-
- protected ScriptComponent component;
- protected String functionName;
-
- public ScriptTargetInvoker(String functionName, ScriptComponent component) {
- super(null, null, null);
- this.functionName = functionName;
- this.component = component;
- }
-
- public Object invokeTarget(final Object payload, final short sequence) throws InvocationTargetException {
- ScriptInstance target;
- try {
- target = (ScriptInstance) component.getTargetInstance();
- } catch (TargetException e) {
- throw new InvocationTargetException(e);
- }
- try {
- return target.invokeTarget(functionName, (Object[]) payload);
- } catch (Exception e) {
- throw new InvocationTargetException(e);
- }
- }
-
-}
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/default.scdl b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/default.scdl
deleted file mode 100644
index 149fa2696c..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/default.scdl
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
--->
-<!--
- JavaScript configuration for the launcher environment.
--->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
- xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
-
- name="org.apache.tuscany.container.script.ScriptImplementation">
-
- <component name="script.implementationLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptImplementationLoader"/>
- </component>
-
- <component name="script.componentTypeLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptComponentTypeLoader"/>
- </component>
-
- <component name="script.componentBuilder">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptComponentBuilder"/>
- </component>
-
-</composite>
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/extension.composite b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/extension.composite
deleted file mode 100644
index 1795216154..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/extension.composite
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing peaxis2ssions and limitations
- * under the License.
--->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" name="org.apache.tuscany.extension.bsf">
- <include name="org.apache.tuscany.extensions.bsf.include" scdlLocation="script.system.scdl" />
-</composite> \ No newline at end of file
diff --git a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/script.system.scdl b/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/script.system.scdl
deleted file mode 100644
index f08d7d0fc0..0000000000
--- a/branches/sca-java-integration/sca/extensions/script/container.bsf/src/main/resources/META-INF/sca/script.system.scdl
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
--->
-<!--
- JavaScript configuration for the launcher environment.
--->
-<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
- xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
-
- name="org.apache.tuscany.container.script.ScriptImplementation">
-
- <component name="script.implementationLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptImplementationLoader"/>
- </component>
-
- <component name="script.implementationRubyLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptImplementationRubyLoader"/>
- </component>
-
- <component name="script.implementationPythonLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptImplementationPythonLoader"/>
- </component>
-
- <component name="script.implementationJavaScriptLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptImplementationJavaScriptLoader"/>
- </component>
-
- <component name="script.componentTypeLoader">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptComponentTypeLoader"/>
- </component>
-
- <component name="script.componentBuilder">
- <system:implementation.system class="org.apache.tuscany.container.script.ScriptComponentBuilder"/>
- </component>
-
-</composite>