From 5559ef5edbf8d3616f7a4b497b2a459b0ee4082b Mon Sep 17 00:00:00 2001 From: lresende Date: Wed, 11 Nov 2009 23:07:07 +0000 Subject: Moving 1.x branches git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835122 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/extension/helper/BindingActivator.java | 67 ------ .../sca/extension/helper/ComponentLifecycle.java | 28 --- .../extension/helper/ImplementationActivator.java | 62 ----- .../sca/extension/helper/InvokerFactory.java | 29 --- .../helper/impl/BindingSCDLProcessor.java | 192 --------------- .../extension/helper/impl/BindingsActivator.java | 259 --------------------- .../sca/extension/helper/impl/DiscoveryUtils.java | 164 ------------- .../impl/ImplementationImplementationProvider.java | 97 -------- .../helper/impl/ImplementationsActivator.java | 138 ----------- .../sca/extension/helper/impl/PojoBinding.java | 36 --- .../extension/helper/impl/PojoImplementation.java | 42 ---- .../sca/extension/helper/impl/SCDLProcessor.java | 246 ------------------- .../extension/helper/utils/AbstractBinding.java | 65 ------ .../helper/utils/AbstractImplementation.java | 114 --------- .../utils/AbstractStAXArtifactProcessor.java | 115 --------- .../utils/DefaultPropertyValueObjectFactory.java | 229 ------------------ .../helper/utils/DynamicImplementation.java | 92 -------- .../helper/utils/PropertyValueObjectFactory.java | 29 --- .../sca/extension/helper/utils/ResourceHelper.java | 72 ------ 19 files changed, 2076 deletions(-) delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/BindingActivator.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ComponentLifecycle.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ImplementationActivator.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/InvokerFactory.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingSCDLProcessor.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingsActivator.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/DiscoveryUtils.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationImplementationProvider.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationsActivator.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/PojoBinding.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/PojoImplementation.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/SCDLProcessor.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractBinding.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractImplementation.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractStAXArtifactProcessor.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DefaultPropertyValueObjectFactory.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DynamicImplementation.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/PropertyValueObjectFactory.java delete mode 100644 branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/ResourceHelper.java (limited to 'branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache') diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/BindingActivator.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/BindingActivator.java deleted file mode 100644 index 2eeccd7e4a..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/BindingActivator.java +++ /dev/null @@ -1,67 +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.extension.helper; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * A BindingActivator adds an SCA binding type to the Tuscany runtime. - * - * The SCDL XML used for the binding is derived from the name of the - * class returned from the getBindingClass method - the package name and - * any trailing "Binding" string is removed, leading upper case characters - * are converted to lowercase, and the suffix "binding." is added. - * For example if getBindingClass returns a class named "mypkg.FooBinding" - * then the SCDL for the binding will be . - * - * Attributes of the SCDL are based on the getters/setters of - * the binding class. So if FooBinding had getBar/setBar then there - * would be an attribute name 'bar', for example, . - * - * BindingActivator implementations may use constructor arguments to have - * Tuscany ExtensionPointRegistry objects passed in on their constructor. - * For example: - * - * public class MyBindingActivator implements BindingActivator { - * ServletHost servletHost; - * public MyBindingActivator(ServletHost servletHost) { - * this.servletHost = servletHost; - * } - * ... - * } - * - * BindingActivator implementations are discovered by the Tuscany runtime - * using the J2SE jar file extensions for service provider discovery. All - * that means is packaging the new binding type in a jar which contains a - * file META-INF/services/org.apache.tuscany.sca.extension.helper.BindingActivator and - * that file lists the BindingActivator implementation class name. - */ -public interface BindingActivator { - - Class getBindingClass(); - - InvokerFactory createInvokerFactory(RuntimeComponent rc, RuntimeComponentReference rcr, Binding b, B pojoBinding); - - ComponentLifecycle createService(RuntimeComponent rc, RuntimeComponentService rcs, Binding b, B pojoBinding); - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ComponentLifecycle.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ComponentLifecycle.java deleted file mode 100644 index 75494cd02c..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ComponentLifecycle.java +++ /dev/null @@ -1,28 +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.extension.helper; - - -public interface ComponentLifecycle { - - void start(); - void stop(); - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ImplementationActivator.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ImplementationActivator.java deleted file mode 100644 index 3b508b8ffd..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/ImplementationActivator.java +++ /dev/null @@ -1,62 +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.extension.helper; - -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * An ImplementationActivator adds an SCA implementation type to the Tuscany runtime. - * - * The SCDL XML used for the implementation is derived from the name of the - * class returned from the getImplementationClass method - the package name and - * any trailing "Implementation" string is removed, leading upper case characters - * are converted to lowercase, and the suffix "implementation." is added. For - * example if getImplementationClass returns a class named "mypkg.FooImplementation" - * then the SCDL for the implementation will be . - * - * Attributes of the SCDL are based on the getters/setters of - * the Implementation class. So if FooImplementation had getBar/setBar then there - * would be an attribute name 'bar', for example, . - * - * BindingActivator implementations may use constructor arguments to have - * Tuscany ExtensionPointRegistry objects passed in on their constructor. - * For example: - * - * public class MyImplementationActivator implements ImplementationActivator { - * ServletHost servletHost; - * public MyImplementationActivator(ServletHost servletHost) { - * this.servletHost = servletHost; - * } - * ... - * } - * - * ImplementationActivator implementations are discovered by the Tuscany runtime - * using the J2SE jar file extensions for service provider discovery. All - * that means is packaging the new binding type in a jar which contains a - * file META-INF/services/org.apache.tuscany.sca.extension.helper.ImplementationActivator and - * that file lists the ImplementationActivator implementation class name. - */ -public interface ImplementationActivator { - - Class getImplementationClass(); - - InvokerFactory createInvokerFactory(RuntimeComponent rc, ComponentType ct, T implementation); -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/InvokerFactory.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/InvokerFactory.java deleted file mode 100644 index 1c98c41fb4..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/InvokerFactory.java +++ /dev/null @@ -1,29 +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.extension.helper; - -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Invoker; - -public interface InvokerFactory { - - public Invoker createInvoker(Operation operation); - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingSCDLProcessor.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingSCDLProcessor.java deleted file mode 100644 index 4fadd5895a..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingSCDLProcessor.java +++ /dev/null @@ -1,192 +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.extension.helper.impl; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; - -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import javax.xml.namespace.NamespaceContext; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; -import org.apache.tuscany.sca.extension.helper.utils.AbstractBinding; - -/** - * An SCDL ArtifactProcessor which uses the Binding class getters/setters - * to define the SCDL attributes. - * - * TODO: merge this with SCDLProcessor - */ -public class BindingSCDLProcessor implements StAXArtifactProcessor { - - protected QName scdlQName; - protected Class bindingClass; - - protected Map attributeSetters; - protected Method elementTextSetter; - - public BindingSCDLProcessor(QName scdlQName, Class implementationClass) { - this.scdlQName = scdlQName; - this.bindingClass = implementationClass; - initAttributes(); - } - - protected void initAttributes() { - attributeSetters = new HashMap(); - Set methods = new HashSet(Arrays.asList(bindingClass.getMethods())); - methods.removeAll(Arrays.asList(AbstractBinding.class.getMethods())); - for (Method m : methods) { - if ("setElementText".equals(m.getName())) { - elementTextSetter = m; - } else if ((m.getName().startsWith("set"))) { - attributeSetters.put(getFieldName(m), m); - } - } - } - - /** - * Remove get/set from method name, set 1st char to lowercase and - * remove any trailing underscore character - */ - protected String getFieldName(Method m) { - StringBuilder sb = new StringBuilder(m.getName().substring(3)); - sb.setCharAt(0, Character.toLowerCase(sb.charAt(0))); - String name = sb.toString(); - if (name.endsWith("_")) { - name = name.substring(0,name.length()-1); - } - return name; - } - - public QName getArtifactType() { - return scdlQName; - } - - public Class getModelType() { - //FIXME Having two different bindings, PojoBinding wrappering - // the real binding is pretty confusing, looks like if you don't return - // PojoBinding here, the write and resolve methods will never be - // called, returning PojoBinding.class seems to fix that issue without - // breaking anything else - return PojoBinding.class; - } - - public Binding read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { - Object impl; - try { - impl = bindingClass.newInstance(); - } catch (Exception e) { - throw new RuntimeException(e); - } - - for (String attribute : attributeSetters.keySet()) { - String value = reader.getAttributeValue(null, attribute); - if (value != null && value.length() > 0) { - try { - attributeSetters.get(attribute).invoke(impl, new Object[] {value}); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - - //FIXME: none of the attributes of Binding seem to be working with PojoBinding - // For now at least read the binding URI - String uri = reader.getAttributeValue(null, "uri"); - - if (elementTextSetter != null) { - try { - String value = reader.getElementText(); - if (value != null && value.length() > 0) { - elementTextSetter.invoke(impl, value); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - while (!(reader.getEventType() == END_ELEMENT && scdlQName.equals(reader.getName())) && reader.hasNext()) { - reader.next(); - } - - if (!(impl instanceof Binding)) { - impl = new PojoBinding(impl); - - //FIXME: none of the attributes of Binding seem to be working with PojoBinding - // For now at least read the binding URI - if (uri != null) { - ((PojoBinding)impl).setURI(uri); - } - } - return (Binding)impl; - } - - public void resolve(Object model, ModelResolver resolver) throws ContributionResolveException { - } - - public void write(Object model, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - - //FIXME: none of the attributes of Binding seem to be working with PojoBinding - // For now at least write the binding URI - - // Find a namespace prefix and write the element - String prefix = writer.getPrefix(scdlQName.getNamespaceURI()); - if (prefix == null) { - NamespaceContext nsc = writer.getNamespaceContext(); - for (int i=1; ; i++) { - prefix = "ns" + i; - if (nsc.getNamespaceURI(prefix) == null) { - break; - } - } - writer.setPrefix(prefix, scdlQName.getNamespaceURI()); - } - writer.writeStartElement(scdlQName.getNamespaceURI(), scdlQName.getLocalPart()); - - // Write the binding URI attribute - String uri; - try { - uri = (String)model.getClass().getMethod("getURI").invoke(model); - } catch (Exception e) { - uri = null; - } - if (uri != null) { - writer.writeAttribute("uri", uri); - } - - writer.writeEndElement(); - - } - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingsActivator.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingsActivator.java deleted file mode 100644 index aac629fdbd..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/BindingsActivator.java +++ /dev/null @@ -1,259 +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.extension.helper.impl; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.assembly.xml.Constants; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.ModuleActivator; -import org.apache.tuscany.sca.extension.helper.BindingActivator; -import org.apache.tuscany.sca.extension.helper.ComponentLifecycle; -import org.apache.tuscany.sca.extension.helper.InvokerFactory; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.provider.BindingProviderFactory; -import org.apache.tuscany.sca.provider.ProviderFactory; -import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint; -import org.apache.tuscany.sca.provider.ReferenceBindingProvider; -import org.apache.tuscany.sca.provider.ServiceBindingProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentReference; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -public class BindingsActivator implements ModuleActivator { - - protected List bindingActivators; - protected AssemblyFactory assemblyFactory; - protected Map bindingActivatorMap = new HashMap(); - - public void start(ExtensionPointRegistry registry) { - - ModelFactoryExtensionPoint factories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class); - this.assemblyFactory = factories.getFactory(AssemblyFactory.class); - - //FIXME The classloader should be passed in - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - this.bindingActivators = - DiscoveryUtils.discoverActivators(BindingActivator.class, classLoader, registry); - - StAXArtifactProcessorExtensionPoint staxProcessors = - registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - - ProviderFactoryExtensionPoint providerFactories = - registry.getExtensionPoint(ProviderFactoryExtensionPoint.class); - - for (final BindingActivator bindingActivator : bindingActivators) { - Class bindingClass = bindingActivator.getBindingClass(); - bindingActivatorMap.put(bindingClass, bindingActivator); - QName scdlQName = getBindingQName(bindingClass); - staxProcessors.addArtifactProcessor(new BindingSCDLProcessor(scdlQName, bindingClass)); - - // Check if the binding extends from Binding interface - if (Binding.class.isAssignableFrom(bindingClass)) { - // Add provider factory against the binding class - providerFactories.addProviderFactory(new DelegatingBindingProviderFactory(bindingClass)); - } - - } - - // Add a generic provider factory against PojoBinding.class - providerFactories.addProviderFactory(new DelegatingBindingProviderFactory(PojoBinding.class)); - } - - public void stop(ExtensionPointRegistry registry) { - StAXArtifactProcessorExtensionPoint staxProcessors = - registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - ProviderFactoryExtensionPoint providerFactories = - registry.getExtensionPoint(ProviderFactoryExtensionPoint.class); - - for (final BindingActivator bindingActivator : bindingActivators) { - - // Remove the binding SCDL processor from the runtime - if (staxProcessors != null) { - StAXArtifactProcessor processor = - staxProcessors.getProcessor(getBindingQName(bindingActivator.getBindingClass())); - if (processor != null) { - staxProcessors.removeArtifactProcessor(processor); - } - } - - // Remove the ProviderFactory from the runtime - if (providerFactories != null && bindingActivator.getBindingClass() != null) { - ProviderFactory factory = providerFactories.getProviderFactory(bindingActivator.getBindingClass()); - if (factory != null) { - providerFactories.removeProviderFactory(factory); - } - } - } - if (providerFactories != null) { - ProviderFactory factory = providerFactories.getProviderFactory(PojoBinding.class); - if (factory != null) { - providerFactories.removeProviderFactory(factory); - } - } - } - - protected QName getBindingQName(Class bindingClass) { - String localName = bindingClass.getName(); - if (localName.lastIndexOf('.') > -1) { - localName = localName.substring(localName.lastIndexOf('.') + 1); - } - if (localName.endsWith("Binding")) { - localName = localName.substring(0, localName.length() - 7); - } - StringBuilder sb = new StringBuilder(localName); - for (int i = 0; i < sb.length(); i++) { - if (Character.isUpperCase(sb.charAt(i))) { - sb.setCharAt(i, Character.toLowerCase(sb.charAt(i))); - } else { - break; - } - } - return new QName(Constants.SCA10_TUSCANY_NS, "binding." + sb.toString()); - } - - private final class DelegatingBindingProviderFactory implements BindingProviderFactory { - private Class modelType; - - public DelegatingBindingProviderFactory(Class modelType) { - super(); - this.modelType = modelType; - } - - public ReferenceBindingProvider createReferenceBindingProvider(final RuntimeComponent rc, - final RuntimeComponentReference rcr, - final Binding b) { - final Object realBinding; - if (b instanceof PojoBinding) { - realBinding = ((PojoBinding)b).getUserBinding(); - } else { - realBinding = b; - } - final BindingActivator bindingActivator = bindingActivatorMap.get(realBinding.getClass()); - return new ReferenceBindingProvider() { - List invokers = new ArrayList(); - private InvokerFactory factory; - - public Invoker createInvoker(Operation operation) { - InvokerProxy invoker = new InvokerProxy(factory, operation); - invokers.add(invoker); - return invoker; - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public InterfaceContract getBindingInterfaceContract() { - return null; - } - - public void start() { - if (b instanceof PojoBinding) { - factory = bindingActivator.createInvokerFactory(rc, rcr, b, ((PojoBinding)b).getUserBinding()); - } else { - factory = bindingActivator.createInvokerFactory(rc, rcr, b, b); - } - if (factory instanceof ComponentLifecycle) { - ((ComponentLifecycle)factory).start(); - } -// for (InvokerProxy invoker : invokers) { -// invoker.start(factory); -// } - } - - public void stop() { - if (factory instanceof ComponentLifecycle) { - ((ComponentLifecycle)factory).stop(); - } - } - }; - } - - public ServiceBindingProvider createServiceBindingProvider(final RuntimeComponent rc, - final RuntimeComponentService rcs, - final Binding b) { - final Object realBinding; - if (b instanceof PojoBinding) { - realBinding = ((PojoBinding)b).getUserBinding(); - } else { - realBinding = b; - } - final BindingActivator bindingActivator = bindingActivatorMap.get(realBinding.getClass()); - return new ServiceBindingProvider() { - ComponentLifecycle listener = bindingActivator.createService(rc, rcs, b, realBinding); - - public InterfaceContract getBindingInterfaceContract() { - return null; - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public void start() { - listener.start(); - } - - public void stop() { - listener.stop(); - } - }; - } - - public Class getModelType() { - return modelType; - } - } - -} - -class InvokerProxy implements Invoker { - InvokerFactory factory; - Invoker invoker; - Operation op; - - InvokerProxy(InvokerFactory factory, Operation op) { - this.factory = factory; - this.op = op; - this.invoker = factory.createInvoker(op); - } - - public Message invoke(Message arg0) { - return invoker.invoke(arg0); - } - -// public void start(InvokerFactory factory) { -// invoker = factory.createInvoker(op); -// } -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/DiscoveryUtils.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/DiscoveryUtils.java deleted file mode 100644 index 7f25db0620..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/DiscoveryUtils.java +++ /dev/null @@ -1,164 +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.extension.helper.impl; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; - -/** - * Discovers Activators in the classpath using the J2SE - * jar file extensions for Service Provider discovery - */ -public class DiscoveryUtils { - - public static List discoverActivators(Class activatorClass, ClassLoader classLoader, ExtensionPointRegistry registry) { - Set activatorClasses = getServiceClasses(classLoader, activatorClass); - List activators = new ArrayList(); - for (Class c : activatorClasses) { - try { - activators.add(c.cast(instantiateActivator(c, registry))); - } catch (Throwable e) { - e.printStackTrace(); // TODO: log - } - } - return activators; - } - - static Object instantiateActivator(Class activator, ExtensionPointRegistry registry) { - Constructor[] cs = activator.getConstructors(); - if (cs.length != 1) { - throw new RuntimeException("Activator must have only one constructors"); - } - - Class[] paramTypes = cs[0].getParameterTypes(); - Object[] extensions = new Object[paramTypes.length]; - - for (int i=0; i< paramTypes.length; i++) { - if ("org.apache.tuscany.sca.host.http.ServletHost".equals(paramTypes[i].getName())) { - extensions[i] = getServletHost(registry); - } else { - extensions[i] = registry.getExtensionPoint(paramTypes[i]); - } - } - - try { - - return cs[0].newInstance(extensions); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - private static Object getServletHost(ExtensionPointRegistry registry) { - try { - - Class servletHostEPClass = Class.forName("org.apache.tuscany.sca.host.http.ServletHostExtensionPoint"); - Object servletHostEP = registry.getExtensionPoint(servletHostEPClass); - Class extensibleServletHost = Class.forName("org.apache.tuscany.sca.host.http.ExtensibleServletHost"); - return extensibleServletHost.getConstructor(new Class[] {servletHostEPClass}).newInstance(servletHostEP); - - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (SecurityException e) { - throw new RuntimeException(e); - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } - } - - static Set getServiceClasses(ClassLoader classLoader, Class name) { - try { - - Set set = new HashSet(); - Enumeration urls = classLoader.getResources("META-INF/services/" + name.getName()); - while (urls.hasMoreElements()) { - URL url = urls.nextElement(); - Set services = getServiceClassNames(url); - if (services != null) { - for (String className : services) { - try { - set.add(Class.forName(className, true, classLoader)); - } catch (Throwable e) { - // TODO: log - } - } - } - } - return set; - - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - static Set getServiceClassNames(URL url) throws IOException { - Set names = new HashSet(); - InputStream is = url.openStream(); - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader(is)); - while (true) { - String line = reader.readLine(); - if (line == null) { - break; - } - line = line.trim(); - if (!line.startsWith("#") && !"".equals(line)) { - names.add(line.trim()); - } - } - } finally { - if (reader != null) { - reader.close(); - } - - if (is != null){ - try { - is.close(); - } catch( IOException ioe) { - //ignore - } - } - } - return names; - } - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationImplementationProvider.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationImplementationProvider.java deleted file mode 100644 index 04b40a6133..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationImplementationProvider.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.sca.extension.helper.impl; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.sca.assembly.Implementation; -import org.apache.tuscany.sca.extension.helper.ImplementationActivator; -import org.apache.tuscany.sca.extension.helper.InvokerFactory; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * The ImplementationProvider createInvoker method is called before the start method - * but the runtime isn't properly setup until the start method is called. This means - * that Invoker's can't initialize things like the services, references and properties - * until start is called. This class tries to get around that by using an Invoker - * proxy that delays creating the real Invoker till start is called. - */ -public class ImplementationImplementationProvider implements ImplementationProvider { - - ImplementationActivator implementationActivator; - RuntimeComponent runtimeComponent; - Implementation impl; - Object userImpl; - InvokerFactory factory; - - List invokers = new ArrayList(); - - public ImplementationImplementationProvider(ImplementationActivator implementationActivator, - RuntimeComponent rc, - Implementation impl, - Object userImpl) { - this.implementationActivator = implementationActivator; - this.runtimeComponent = rc; - this.impl = impl; - this.userImpl = userImpl; - } - - public Invoker createInvoker(RuntimeComponentService arg0, final Operation op) { - InvokerProxy invoker = new InvokerProxy(op); - return invoker; - } - - public boolean supportsOneWayInvocation() { - return false; - } - - public void start() { - factory = implementationActivator.createInvokerFactory(runtimeComponent, impl, userImpl); - } - - public void stop() { - } - - class InvokerProxy implements Invoker { - Invoker invoker; - Operation op; - - InvokerProxy(Operation op) { - this.op = op; - } - - public Message invoke(Message msg) { - init(); - return invoker.invoke(msg); - } - - public synchronized void init() { - if (invoker == null) { - invoker = factory.createInvoker(op); - } - } - } -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationsActivator.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationsActivator.java deleted file mode 100644 index 726642888a..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/ImplementationsActivator.java +++ /dev/null @@ -1,138 +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.extension.helper.impl; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.Implementation; -import org.apache.tuscany.sca.assembly.xml.Constants; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.ModuleActivator; -import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; -import org.apache.tuscany.sca.databinding.TransformerExtensionPoint; -import org.apache.tuscany.sca.databinding.impl.MediatorImpl; -import org.apache.tuscany.sca.extension.helper.ImplementationActivator; -import org.apache.tuscany.sca.extension.helper.utils.DefaultPropertyValueObjectFactory; -import org.apache.tuscany.sca.extension.helper.utils.PropertyValueObjectFactory; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * A Tuscany ModuleActivator which acitvates all the ImplementationActivators - */ -public class ImplementationsActivator implements ModuleActivator { - - protected List implementationActivators; - - public void start(ExtensionPointRegistry registry) { - - ModelFactoryExtensionPoint factories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class); - AssemblyFactory assemblyFactory = factories.getFactory(AssemblyFactory.class); - - DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class); - TransformerExtensionPoint transformers = registry.getExtensionPoint(TransformerExtensionPoint.class); - MediatorImpl mediator = new MediatorImpl(dataBindings, transformers); - - //FIXME Pass this factory differently as it's not an extension point - PropertyValueObjectFactory propertyFactory = new DefaultPropertyValueObjectFactory(mediator); - registry.addExtensionPoint(propertyFactory); - - // FIXME The classloader should be passed in - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - this.implementationActivators = DiscoveryUtils.discoverActivators(ImplementationActivator.class, classLoader, registry); - - StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - ProviderFactoryExtensionPoint providerFactories = registry.getExtensionPoint(ProviderFactoryExtensionPoint.class); - - for (final ImplementationActivator implementationActivator : implementationActivators) { - - Class implClass = implementationActivator.getImplementationClass(); - QName scdlQName = getSCDLQName(implClass); - staxProcessors.addArtifactProcessor(new SCDLProcessor(assemblyFactory, scdlQName, implClass, registry, factories)); - - if (implementationActivator.getImplementationClass() != null && providerFactories != null) { - addImplementationProvider(implementationActivator, providerFactories); - } - } - } - - public void stop(ExtensionPointRegistry registry) { - StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - - for (final ImplementationActivator implementationActivator : implementationActivators) { - if (staxProcessors != null) { - StAXArtifactProcessor processor = staxProcessors.getProcessor(getSCDLQName(implementationActivator.getImplementationClass())); - if (processor != null) { - staxProcessors.removeArtifactProcessor(processor); - } - } - } - } - - private void addImplementationProvider(final ImplementationActivator implementationActivator, ProviderFactoryExtensionPoint providerFactories) { - - providerFactories.addProviderFactory(new ImplementationProviderFactory() { - public ImplementationProvider createImplementationProvider(final RuntimeComponent rc, final Implementation impl) { - if (impl instanceof PojoImplementation) { - return new ImplementationImplementationProvider(implementationActivator, rc, impl, ((PojoImplementation)impl).getUserImpl()); - } else { - return new ImplementationImplementationProvider(implementationActivator, rc, impl, impl); - } - } - public Class getModelType() { - Class c = implementationActivator.getImplementationClass(); - - if (Implementation.class.isAssignableFrom(c)) { - return c; - } else { - return PojoImplementation.class; - } - } - }); - } - - protected QName getSCDLQName(Class implementationClass) { - String localName = implementationClass.getName(); - if (localName.lastIndexOf('.') > -1) { - localName = localName.substring(localName.lastIndexOf('.') + 1); - } - if (localName.endsWith("Implementation")) { - localName = localName.substring(0, localName.length() - 14); - } - StringBuilder sb = new StringBuilder(localName); - for (int i=0; i extends DynamicImplementation { - - Object userImpl; - - public PojoImplementation(Object userImpl) { - this.userImpl = userImpl; - } - - public Object getUserImpl() { - return userImpl; - } - - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/SCDLProcessor.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/SCDLProcessor.java deleted file mode 100644 index a23f3a2ec0..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/impl/SCDLProcessor.java +++ /dev/null @@ -1,246 +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.extension.helper.impl; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.xml.namespace.QName; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Implementation; -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.contribution.ModelFactoryExtensionPoint; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.extension.helper.utils.AbstractStAXArtifactProcessor; -import org.apache.tuscany.sca.extension.helper.utils.DynamicImplementation; -import org.osoa.sca.ServiceRuntimeException; - -/** - * An SCDL ArtifactProcessor which uses the Implementation class getters/setters - * to define the SCDL attributes. - */ -public class SCDLProcessor extends AbstractStAXArtifactProcessor { - - protected QName scdlQName; - protected Class implementationClass; - protected ExtensionPointRegistry registry; - protected ModelFactoryExtensionPoint factories; - - protected Map attributeSetters; - protected Method elementTextSetter; - - public SCDLProcessor(AssemblyFactory assemblyFactory, QName scdlQName, Class implementationClass, ExtensionPointRegistry registry, ModelFactoryExtensionPoint factories) { - super(assemblyFactory); - this.scdlQName = scdlQName; - this.implementationClass = implementationClass; - this.registry = registry; - this.factories = factories; - initAttributes(); - } - - protected void initAttributes() { - attributeSetters = new HashMap(); - Set methods = new HashSet(Arrays.asList(implementationClass.getMethods())); - methods.removeAll(Arrays.asList(DynamicImplementation.class.getMethods())); - for (Method m : methods) { - if ("setElementText".equals(m.getName())) { - elementTextSetter = m; - } else if ((m.getName().startsWith("set"))) { - attributeSetters.put(getFieldName(m), m); - } - } - } - - /** - * Remove get/set from method name, set 1st char to lowercase and - * remove any trailing underscore character - */ - protected String getFieldName(Method m) { - StringBuilder sb = new StringBuilder(m.getName().substring(3)); - sb.setCharAt(0, Character.toLowerCase(sb.charAt(0))); - String name = sb.toString(); - if (name.endsWith("_")) { - name = name.substring(0,name.length()-1); - } - return name; - } - - private Object[] getImplConstrArgs() { - Constructor[] cs = implementationClass.getConstructors(); - if (cs.length != 1) { - throw new IllegalArgumentException("Implementation class must have a single constructor: "+ implementationClass.getName()); - } - List args = new ArrayList(); - for (Class c : cs[0].getParameterTypes()) { - Object o = factories.getFactory(c); - if (o == null) { - o = registry.getExtensionPoint(c); - } - args.add(o); - } - return args.toArray(); - } - - - public QName getArtifactType() { - return scdlQName; - } - - public Class getModelType() { - Class clazz; - if (Implementation.class.isAssignableFrom(implementationClass)) { - clazz = implementationClass; - } else { - clazz = PojoImplementation.class; - } - return clazz; - } - - public Implementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException { - Object impl; - try { - impl = implementationClass.getConstructors()[0].newInstance(getImplConstrArgs()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - for (String attribute : attributeSetters.keySet()) { - String value = reader.getAttributeValue(null, attribute); - if (value != null && value.length() > 0) { - try { - attributeSetters.get(attribute).invoke(impl, new Object[] {value}); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - - if (elementTextSetter != null) { - try { - String value = reader.getElementText(); - if (value != null && value.length() > 0) { - elementTextSetter.invoke(impl, value); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - while (!(reader.getEventType() == END_ELEMENT && scdlQName.equals(reader.getName())) && reader.hasNext()) { - reader.next(); - } - - if (!(impl instanceof Implementation)) { - impl = new PojoImplementation(impl); - } - - return (Implementation)impl; - } - - public void write(Implementation arg0, XMLStreamWriter arg1) throws ContributionWriteException, XMLStreamException { - } - - @Override - protected void addSideFileComponentType(String name, Implementation impl, ModelResolver resolver) { -// protected void addSideFileComponentType(Implementation impl, ModelResolver resolver) { - - ComponentType componentType; - try { - componentType = getComponentType(resolver, impl); - } catch (Exception e) { - throw new ServiceRuntimeException(e); - } - - if (componentType != null && !componentType.isUnresolved()) { - for (Reference reference : componentType.getReferences()) { - impl.getReferences().add(reference); - } - for (Service service : componentType.getServices()) { - impl.getServices().add(service); - } - for (Property property : componentType.getProperties()) { - impl.getProperties().add(property); - } - if (componentType.getConstrainingType() != null) { - impl.setConstrainingType(componentType.getConstrainingType()); - } - } - } - - ComponentType getComponentType(ModelResolver resolver, Implementation impl) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException { - for (Method m : getGetters()) { - Object io; - if (impl instanceof PojoImplementation) { - io = ((PojoImplementation) impl).getUserImpl(); - } else { - io = impl; - } - String value = (String) m.invoke(io, new Object[] {}); - if (value != null) { - value = value.substring(0, value.lastIndexOf('.')); - ComponentType componentType = assemblyFactory.createComponentType(); - componentType.setUnresolved(true); - componentType.setURI(value + ".componentType"); - componentType = resolver.resolveModel(ComponentType.class, componentType); - if (!componentType.isUnresolved()) { - return componentType; - } - } - } - return null; - } - - private List getGetters() { - List ms = new ArrayList(); - for (Method setter : attributeSetters.values()) { - String s = getFieldName(setter); - for (Method m : implementationClass.getMethods()) { - String name = m.getName(); - if (name.length() > 3 && name.startsWith("get")) { - if (s.endsWith(name.substring(4))) { - ms.add(m); - } - } - } - } - return ms; - } -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractBinding.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractBinding.java deleted file mode 100644 index 3686412331..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractBinding.java +++ /dev/null @@ -1,65 +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.extension.helper.utils; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.Binding; - -/** - * Helper for implementing Bindings, implements all the - * standard getters and setters on the binding interface. - */ -public class AbstractBinding implements Binding { - - private String name; - private String uri; - private List extensions; - private boolean unresolved; - - public String getName() { - return name; - } - - public String getURI() { - return uri; - } - - public void setName(String name) { - this.name = name; - } - - public void setURI(String uri) { - this.uri = uri; - } - - public List getExtensions() { - return extensions; - } - - public boolean isUnresolved() { - return unresolved; - } - - public void setUnresolved(boolean unresolved) { - this.unresolved = unresolved; - } - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractImplementation.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractImplementation.java deleted file mode 100644 index bc3c94b0ff..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractImplementation.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.extension.helper.utils; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.tuscany.sca.assembly.ConstrainingType; -import org.apache.tuscany.sca.assembly.Implementation; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.assembly.Service; - -/** - * Helper for implementing Implementations, implements all the - * standard getters and setters on the Implementation interface. - */ -public abstract class AbstractImplementation implements Implementation { - - private List services = new ArrayList(); - private List references = new ArrayList(); - private List properties = new ArrayList(); - private ConstrainingType constrainingType; - private String uri; - private boolean unresolved = true; - - public AbstractImplementation() { - } - - public List getProperties() { - return properties; - } - - public List getReferences() { - return references; - } - - public List getServices() { - return services; - } - - public String getURI() { - return uri; - } - - public void setURI(String uri) { - this.uri = uri; - } - - public ConstrainingType getConstrainingType() { - return constrainingType; - } - - public void setConstrainingType(ConstrainingType constrainingType) { - this.constrainingType = constrainingType; - } - - public List getExtensions() { - // TODO what is this for? - return null; - } - - public boolean isUnresolved() { - return unresolved; - } - - public void setUnresolved(boolean unresolved) { - this.unresolved = unresolved; - } - - public Service getService(String name) { - for (Service service : getServices()) { - if (service.getName().equals(name)) { - return service; - } - } - return null; - } - - public Reference getReference(String name) { - for (Reference reference : getReferences()) { - if (reference.getName().equals(name)) { - return reference; - } - } - return null; - } - - public Property getProptery(String name) { - for (Property property : getProperties()) { - if (property.getName().equals(name)) { - return property; - } - } - return null; - } -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractStAXArtifactProcessor.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractStAXArtifactProcessor.java deleted file mode 100644 index 197429a8cc..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/AbstractStAXArtifactProcessor.java +++ /dev/null @@ -1,115 +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.extension.helper.utils; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Implementation; -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.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractImpl; -import org.apache.tuscany.sca.interfacedef.impl.InterfaceImpl; - -/** - * TODO: couldn't something like this class be provided by the runtime? - * Each impl shouldn't have to have their own .componentType merging code - */ -public abstract class AbstractStAXArtifactProcessor implements StAXArtifactProcessor { - - protected AssemblyFactory assemblyFactory; - - public AbstractStAXArtifactProcessor(AssemblyFactory assemblyFactory) { - this.assemblyFactory = assemblyFactory; - } - - public void resolve(I model, ModelResolver resolver) throws ContributionResolveException { - - addSideFileComponentType(model.getURI(), model, resolver); - - if (model instanceof DynamicImplementation) { - // if no services have been defined then add a dynamic one - if (model.getServices().size() < 1) { - Service dynamicService = createDynamicService(); - model.getServices().add(dynamicService); - } - } - - model.setUnresolved(false); - } - - protected void addSideFileComponentType(String name, Implementation impl, ModelResolver resolver) { - if (name == null) { - return; - } - int lastDot = name.lastIndexOf('.'); - if (lastDot < 0) { - return; - } - String sideFileName = name.substring(0, lastDot) + ".componentType"; - - ComponentType componentType = assemblyFactory.createComponentType(); - componentType.setURI(sideFileName); - componentType.setUnresolved(true); - - componentType = resolver.resolveModel(ComponentType.class, componentType); - - if (!componentType.isUnresolved()) { - for (Reference reference : componentType.getReferences()) { - impl.getReferences().add(reference); - } - for (Service service : componentType.getServices()) { - impl.getServices().add(service); - } - for (Property property : componentType.getProperties()) { - impl.getProperties().add(property); - } - if (componentType.getConstrainingType() != null) { - impl.setConstrainingType(componentType.getConstrainingType()); - } - } - } - - protected Service createDynamicService() { - Service dynamicService = assemblyFactory.createService(); - dynamicService.setName("$dynamic$"); - InterfaceContract dynamicInterfaceContract = new InterfaceContractImpl() {}; - Interface dynamicInterface = new InterfaceImpl() { - @Override - public boolean isDynamic() { - return true; - } - }; - Operation dynamicOperation = assemblyFactory.createOperation(); - dynamicOperation.setDynamic(true); - dynamicInterface.getOperations().add(dynamicOperation); - dynamicInterfaceContract.setInterface(dynamicInterface); - dynamicService.setInterfaceContract(dynamicInterfaceContract); - - return dynamicService; - } - -} \ No newline at end of file diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DefaultPropertyValueObjectFactory.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DefaultPropertyValueObjectFactory.java deleted file mode 100644 index d68e2dcb6b..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DefaultPropertyValueObjectFactory.java +++ /dev/null @@ -1,229 +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.extension.helper.utils; - -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.databinding.impl.SimpleTypeMapperImpl; -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; - -/** - * TODO: Shouldn't this class be provided by the runtime? - */ -public class DefaultPropertyValueObjectFactory implements PropertyValueObjectFactory { - // protected DataBindingRegistry dbRegistry = new DataBindingRegistryImpl(); - protected Mediator mediator = null; - protected SimpleTypeMapper simpleTypeMapper = new SimpleTypeMapperImpl(); - boolean isSimpleType; - - public DefaultPropertyValueObjectFactory(Mediator mediator) { - this.mediator = mediator; - } - - /* (non-Javadoc) - * @see org.apache.tuscany.sca.extension.helper.utils.PVOF#createValueFactory(org.apache.tuscany.sca.assembly.Property) - */ - 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 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 SimpleTypeMapperImpl.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 getSimplePropertyValues(String concatenatedValue, Class javaType) { - List propValues = new ArrayList(); - 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 getComplexPropertyValues(Document document) { - Element rootElement = document.getDocumentElement(); - List propValues = new ArrayList(); - 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 SimpleTypeMapper simpleTypeMapper = new SimpleTypeMapperImpl(); - protected Property property; - protected Object propertyValue; - protected Class javaType; - protected DataType 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(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(dataBinding, javaType, xmlType); - } else { - targetDataType = new DataTypeImpl(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); - } - - @SuppressWarnings("unchecked") - public Object getInstance() throws ObjectCreationException { - if (isSimpleType) { - return simpleTypeMapper.toJavaObject(property.getXSDType(), (String)propertyValue, null); - } else { - return mediator.mediate(propertyValue, sourceDataType, targetDataType, null); - //return null; - } - } - } - - public class ListObjectFactoryImpl extends ObjectFactoryImplBase { - public ListObjectFactoryImpl(Property property, ListpropertyValues, boolean isSimpleType, Class javaType) { - super(property, propertyValues, isSimpleType, javaType); - } - - @SuppressWarnings("unchecked") - public List getInstance() throws ObjectCreationException { - if (isSimpleType) { - List values = new ArrayList(); - for (String aValue : (List)propertyValue) { - values.add(simpleTypeMapper.toJavaObject(property.getXSDType(), aValue, null)); - } - return values; - } else { - List instances = new ArrayList(); - for (Node aValue : (List)propertyValue) { - instances.add(mediator.mediate(aValue, - sourceDataType, - targetDataType, - null)); - } - return instances; - } - } - } -} - \ No newline at end of file diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DynamicImplementation.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DynamicImplementation.java deleted file mode 100644 index 010a647ee7..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/DynamicImplementation.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.sca.extension.helper.utils; - -import org.apache.tuscany.sca.assembly.Component; -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.assembly.builder.ComponentPreProcessor; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -public class DynamicImplementation extends AbstractImplementation implements ComponentPreProcessor { - - public void preProcess(Component component) { - RuntimeComponent rtc = (RuntimeComponent) component; - - for (Service service : rtc.getServices()) { - if (getService(service.getName()) == null) { - getServices().add(createService(service)); - } - } - - Service dynamicService = getService("$dynamic$"); - if (dynamicService != null && getServices().size() > 1) { - getServices().remove(dynamicService); - dynamicService = null; - } - - for (Reference reference : rtc.getReferences()) { - if (getReference(reference.getName()) == null) { - getReferences().add(createReference(reference)); - } - } - - for (Property property : rtc.getProperties()) { - if (getProptery(property.getName()) == null) { - getProperties().add(createProperty(property)); - } - } - - // TODO: support properties - } - - protected Service createService(Service service) { - Service newService; - try { - newService = (Service)service.clone(); - } catch (CloneNotSupportedException e) { - throw new AssertionError(e); // should not ever happen - } - - return newService; - } - - protected Reference createReference(Reference reference) { - Reference newReference; - try { - newReference = (Reference)reference.clone(); - } catch (CloneNotSupportedException e) { - throw new AssertionError(e); // should not ever happen - } - return newReference; - } - - protected Property createProperty(Property property) { - Property newProperty; - try { - newProperty = (Property)property.clone(); - } catch (CloneNotSupportedException e) { - throw new AssertionError(e); // should not ever happen - } - return newProperty; - } - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/PropertyValueObjectFactory.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/PropertyValueObjectFactory.java deleted file mode 100644 index 8f032c68f5..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/PropertyValueObjectFactory.java +++ /dev/null @@ -1,29 +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.extension.helper.utils; - -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.core.factory.ObjectFactory; - -public interface PropertyValueObjectFactory { - - public abstract ObjectFactory createValueFactory(Property property); - -} diff --git a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/ResourceHelper.java b/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/ResourceHelper.java deleted file mode 100644 index 042752b405..0000000000 --- a/branches/sca-java-1.0/modules/extension-helper/src/main/java/org/apache/tuscany/sca/extension/helper/utils/ResourceHelper.java +++ /dev/null @@ -1,72 +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.extension.helper.utils; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.URL; - -/** - * TODO: Shouldn't this be using the contrabution service? - */ -public class ResourceHelper { - - public static String readResource(String scriptName) { - - //FIXME The classloader should be passed in - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - URL scriptSrcUrl = cl.getResource(scriptName); - if (scriptSrcUrl == null) { - throw new RuntimeException("No script: " + scriptName); - } - - InputStream is; - try { - is = scriptSrcUrl.openStream(); - } catch (IOException e) { - throw new RuntimeException(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 RuntimeException(e); - } finally { - try { - is.close(); - } catch (IOException e) { - // ignore - } - } - } - -} -- cgit v1.2.3