diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-10-26 07:11:27 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-10-26 07:11:27 +0000 |
commit | 0d6d7922ed17cca55ec36ff2626d1080e76d6d13 (patch) | |
tree | b4d1cd6855943866af3dc7bb77f0e83c9f44b2c4 /sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java | |
parent | 57ae1afa2ecfee292787d893ad8ba868a4a3504e (diff) |
Remove old beta1 branch
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1027389 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
4 files changed, 0 insertions, 538 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProvider.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProvider.java deleted file mode 100644 index 0938462c49..0000000000 --- a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProvider.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.script.provider; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.security.AccessController; -import java.security.PrivilegedAction; - -import javax.script.Invocable; -import javax.script.ScriptEngine; -import javax.script.ScriptEngineManager; -import javax.script.ScriptException; - -import org.apache.axiom.om.OMElement; -import org.apache.bsf.xml.XMLHelper; -import org.apache.tuscany.sca.assembly.ComponentReference; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; -import org.apache.tuscany.sca.core.factory.ObjectCreationException; -import org.apache.tuscany.sca.core.factory.ObjectFactory; -import org.apache.tuscany.sca.implementation.script.ScriptImplementation; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * An ImplementationProvider for Script implementations. - * - * @version $Rev$ $Date$ - */ -public class ScriptImplementationProvider implements ImplementationProvider { - - private RuntimeComponent component; - private ScriptImplementation implementation; - private ScriptPropertyFactory propertyFactory; - private ScriptEngine scriptEngine; - private XMLHelper xmlHelper; - - public ScriptImplementationProvider(RuntimeComponent component, ScriptImplementation implementation, ScriptPropertyFactory propertyFactory) { - this.component = component; - this.implementation = implementation; - this.propertyFactory = propertyFactory; - - // Set the databinding and XMLHelper for WSDL interfaces - for (Service service : component.getServices()) { - InterfaceContract ic = service.getInterfaceContract(); - if (ic instanceof WSDLInterfaceContract) { - ic.getInterface().resetDataBinding(OMElement.class.getName()); - xmlHelper = XMLHelper.getArgHelper(scriptEngine); - } - } - } - - public void start() { - try { - String language = implementation.getLanguage(); - if (language == null) { - language = implementation.getScript(); - language = language.substring(language.lastIndexOf('.') +1); - } - scriptEngine = scriptEngine(language); - if (scriptEngine == null) { - throw new ObjectCreationException("no script engine found for language: " + implementation.getLanguage()); - } - if (!(scriptEngine instanceof Invocable)) { - throw new ObjectCreationException("script engine does not support Invocable: " + scriptEngine); - } - - for (Reference reference : implementation.getReferences()) { - scriptEngine.put(reference.getName(), getProxy(reference.getName())); - } - - for (Property property : implementation.getProperties()) { - ObjectFactory<?> valueFactory = propertyFactory.createValueFactory(property); - if (valueFactory != null) { - scriptEngine.put(property.getName(), valueFactory.getInstance()); - } - } - - URL url = new URL(implementation.getLocation()); - InputStreamReader reader = new InputStreamReader(url.openStream()); - scriptEngine.eval(reader); - reader.close(); - - } catch (IOException e) { - throw new IllegalArgumentException(e); - } catch (ScriptException e) { - throw new IllegalArgumentException(e); - } - } - - public void stop() { - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public Invoker createInvoker(RuntimeComponentService service, Operation operation) { - return new ScriptInvoker(scriptEngine, xmlHelper, operation); - } - - private Object getProxy(String name) { - for (ComponentReference reference : component.getReferences()) { - if (reference.getName().equals(name)) { - Class<?> iface = ((JavaInterface)reference.getInterfaceContract().getInterface()).getJavaClass(); - return component.getComponentContext().getService(iface, name); - } - } - throw new IllegalArgumentException("reference " + name + " not found on component: " + component); - } - - /** - * Returns the script engine for the given language. - * - * @param language - * @return - */ - private ScriptEngine scriptEngine(String language) { - if ("rb".equals(language)) { - - // Hack for now to work around a problem with the JRuby script engine - // return new TuscanyJRubyScriptEngine(); - } else { - if ("py".equals(language)) { - pythonCachedir(); - } - } - // Allow privileged access to run access classes. Requires RuntimePermission - // for accessClassInPackage.sun.misc. - ScriptEngineManager scriptEngineManager = - AccessController.doPrivileged(new PrivilegedAction<ScriptEngineManager>() { - public ScriptEngineManager run() { - return new ScriptEngineManager(); - } - }); - return scriptEngineManager.getEngineByExtension(language); - } - - /** - * If the Python home isn't set then let Tuscany suppress messages other than errors - * See TUSCANY-1950 - */ - private static void pythonCachedir() { - if (System.getProperty("python.home") == null) { - System.setProperty("python.verbose", "error"); - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProviderFactory.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProviderFactory.java deleted file mode 100644 index 67d4a5493c..0000000000 --- a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptImplementationProviderFactory.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.sca.implementation.script.provider; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.databinding.Mediator; -import org.apache.tuscany.sca.databinding.SimpleTypeMapper; -import org.apache.tuscany.sca.implementation.script.ScriptImplementation; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * An ImplementationProviderFactory for Script implementations. - * - * @version $Rev$ $Date$ - */ -public class ScriptImplementationProviderFactory implements ImplementationProviderFactory<ScriptImplementation> { - - private ScriptPropertyFactory propertyFactory; - - public ScriptImplementationProviderFactory(ExtensionPointRegistry extensionPoints) { - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - Mediator mediator = utilities.getUtility(Mediator.class); - SimpleTypeMapper simpleTypeMapper = utilities.getUtility(SimpleTypeMapper.class); - propertyFactory = new ScriptPropertyFactory(mediator, simpleTypeMapper); - } - - public ImplementationProvider createImplementationProvider(RuntimeComponent component, ScriptImplementation Implementation) { - return new ScriptImplementationProvider(component, Implementation, propertyFactory); - } - - public Class<ScriptImplementation> getModelType() { - return ScriptImplementation.class; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptInvoker.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptInvoker.java deleted file mode 100644 index 976eb2c0dd..0000000000 --- a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptInvoker.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.script.provider; - -import javax.script.Invocable; -import javax.script.ScriptEngine; -import javax.script.ScriptException; - -import org.apache.axiom.om.OMElement; -import org.apache.bsf.xml.XMLHelper; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; - -/** - * Perform the actual script invocation - * - * @version $Rev$ $Date$ - */ -public class ScriptInvoker implements Invoker { - - private ScriptEngine scriptEngine; - private XMLHelper xmlHelper; - private Operation operation; - - public ScriptInvoker(ScriptEngine scriptEngine, XMLHelper xmlHelper, Operation operation) { - this.scriptEngine = scriptEngine; - this.xmlHelper = xmlHelper; - this.operation = operation; - } - - private Object doInvoke(Object[] objects, Operation op) throws ScriptException { - if (xmlHelper != null) { - objects[0] = xmlHelper.toScriptXML((OMElement)objects[0]); - } - - Operation oper = operation; // static setting - if (oper.getName() == null) { // if no static setting - oper = op; // use dynamic setting - } - Object response; - try { - response = ((Invocable)scriptEngine).invokeFunction(oper.getName(), objects); - } catch (ScriptException e) { - throw e; - } catch (Exception e) { - throw new ScriptException(e); - } - - if (xmlHelper != null) { - response = xmlHelper.toOMElement(response); - } - - return response; - } - - public Message invoke(Message msg) { - try { - Object resp = doInvoke((Object[])msg.getBody(), msg.getOperation()); - msg.setBody(resp); - } catch (ScriptException e) { - msg.setFaultBody(e.getCause()); - } - return msg; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptPropertyFactory.java b/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptPropertyFactory.java deleted file mode 100644 index b56af79b0b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta1/modules/implementation-script-runtime/src/main/java/org/apache/tuscany/sca/implementation/script/provider/ScriptPropertyFactory.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.script.provider; - -import java.util.ArrayList; -import java.util.List; -import java.util.StringTokenizer; - -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.core.factory.ObjectCreationException; -import org.apache.tuscany.sca.core.factory.ObjectFactory; -import org.apache.tuscany.sca.databinding.Mediator; -import org.apache.tuscany.sca.databinding.SimpleTypeMapper; -import org.apache.tuscany.sca.interfacedef.DataType; -import org.apache.tuscany.sca.interfacedef.util.XMLType; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * A property factory for script properties. - * - * @version $Rev$ $Date$ - */ -public class ScriptPropertyFactory { - private Mediator mediator = null; - private SimpleTypeMapper simpleTypeMapper; - boolean isSimpleType; - - public ScriptPropertyFactory(Mediator mediator, SimpleTypeMapper simpleTypeMapper) { - this.mediator = mediator; - this.simpleTypeMapper = simpleTypeMapper; - } - - public ObjectFactory createValueFactory(Property property) { - isSimpleType = isSimpleType(property); - Document doc = (Document)property.getValue(); - Element rootElement = doc.getDocumentElement(); - - //FIXME : since scripts use dynamic types we need to generate a dynamic java type using the - //XML structure of the property value. Should this be done in the JavaBeansDataBinding... - Class javaType = null; - - if (property.isMany()) { - if (isSimpleType) { - String value = ""; - if (rootElement.getChildNodes().getLength() > 0) { - value = rootElement.getChildNodes().item(0).getTextContent(); - } - List<String> values = - getSimplePropertyValues(value, javaType); - return new ListObjectFactoryImpl(property, - values, - isSimpleType, - javaType); - } else { - return new ListObjectFactoryImpl(property, - getComplexPropertyValues(doc), - isSimpleType, - javaType); - } - } else { - if (isSimpleType) { - String value = ""; - if (rootElement.getChildNodes().getLength() > 0) { - value = rootElement.getChildNodes().item(0).getTextContent(); - } - return new ObjectFactoryImpl(property, - value, - isSimpleType, - javaType); - } else { - Object value = getComplexPropertyValues(doc).get(0); - return new ObjectFactoryImpl(property, - value, - isSimpleType, - javaType); - } - - } - } - - private boolean isSimpleType(Property property) { - if (property.getXSDType() != null) { - return simpleTypeMapper.isSimpleXSDType(property.getXSDType()); - } else { - if (property instanceof Document) { - Document doc = (Document)property; - Element element = doc.getDocumentElement(); - if (element.getChildNodes().getLength() == 1 && - element.getChildNodes().item(0).getNodeType() == Node.TEXT_NODE) { - return true; - } - } - } - return false; - } - - private List<String> getSimplePropertyValues(String concatenatedValue, Class<?> javaType) { - List<String> propValues = new ArrayList<String>(); - StringTokenizer st = null; - if ( javaType.getName().equals("java.lang.String")) { - st = new StringTokenizer(concatenatedValue, "\""); - } else { - st = new StringTokenizer(concatenatedValue); - } - String aToken = null; - while (st.hasMoreTokens()) { - aToken = st.nextToken(); - if (aToken.trim().length() > 0) { - propValues.add(aToken); - } - } - return propValues; - } - - private List<Node> getComplexPropertyValues(Document document) { - Element rootElement = document.getDocumentElement(); - List<Node> propValues = new ArrayList<Node>(); - for (int count = 0 ; count < rootElement.getChildNodes().getLength() ; ++count) { - if (rootElement.getChildNodes().item(count).getNodeType() == Node.ELEMENT_NODE) { - propValues.add(rootElement.getChildNodes().item(count)); - } - } - return propValues; - } - - public abstract class ObjectFactoryImplBase implements ObjectFactory { - protected Property property; - protected Object propertyValue; - protected Class<?> javaType; - protected DataType<XMLType> sourceDataType; - protected DataType<?> targetDataType; - boolean isSimpleType; - - public ObjectFactoryImplBase(Property property, Object propertyValue, boolean isSimpleType, Class<?> javaType) { - - this.isSimpleType = isSimpleType; - this.property = property; - this.propertyValue = propertyValue; - this.javaType = javaType; - - //FIXME : fix this when we have managed to generate dynamic java types - - /*sourceDataType = - new DataTypeImpl<XMLType>(DOMDataBinding.NAME, Node.class, - new XMLType(null, this.property.getXSDType())); - TypeInfo typeInfo = null; - if (this.property.getXSDType() != null) { - if (SimpleTypeMapperExtension.isSimpleXSDType(this.property.getXSDType())) { - typeInfo = new TypeInfo(property.getXSDType(), true, null); - } else { - typeInfo = new TypeInfo(property.getXSDType(), false, null); - } - } else { - typeInfo = new TypeInfo(property.getXSDType(), false, null); - } - - XMLType xmlType = new XMLType(typeInfo); - String dataBinding = null; //(String)property.getExtensions().get(DataBinding.class.getName()); - if (dataBinding != null) { - targetDataType = new DataTypeImpl<XMLType>(dataBinding, javaType, xmlType); - } else { - targetDataType = new DataTypeImpl<XMLType>(dataBinding, javaType, xmlType); - mediator.getDataBindingRegistry().introspectType(targetDataType, null); - }*/ - } - } - - public class ObjectFactoryImpl extends ObjectFactoryImplBase { - public ObjectFactoryImpl(Property property, Object propertyValue, boolean isSimpleType, Class<?> javaType) { - super(property, propertyValue, isSimpleType, javaType); - } - - public Object getInstance() throws ObjectCreationException { - if (isSimpleType) { - return simpleTypeMapper.toJavaObject(property.getXSDType(), (String)propertyValue, null); - } else { - return mediator.mediate(propertyValue, sourceDataType, targetDataType, null); - } - } - } - - public class ListObjectFactoryImpl extends ObjectFactoryImplBase { - public ListObjectFactoryImpl(Property property, List<?>propertyValues, boolean isSimpleType, Class<?> javaType) { - super(property, propertyValues, isSimpleType, javaType); - } - - public List<?> getInstance() throws ObjectCreationException { - if (isSimpleType) { - List<Object> values = new ArrayList<Object>(); - for (String aValue : (List<String>)propertyValue) { - values.add(simpleTypeMapper.toJavaObject(property.getXSDType(), aValue, null)); - } - return values; - } else { - List<Object> instances = new ArrayList<Object>(); - for (Node aValue : (List<Node>)propertyValue) { - instances.add(mediator.mediate(aValue, - sourceDataType, - targetDataType, - null)); - } - return instances; - } - } - } -} |