diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-11-30 19:00:47 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2010-11-30 19:00:47 +0000 |
commit | 396008440c7bcdb1cbb7a3c5d6270814dfb0e341 (patch) | |
tree | 5b36dc6a3ed53cb62560963a42b45a89b62dc4de /sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring | |
parent | ae9b105c6718dcb91b415e257acc8b8c8bf0c6c7 (diff) |
delete the beta2 branch as i'd not seen raymonds mail when i made it and we might as well wait till he's got his changes in before creating the beta2 branch
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1040700 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
111 files changed, 0 insertions, 9875 deletions
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/LICENSE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/META-INF/MANIFEST.MF deleted file mode 100644 index b598607625..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/META-INF/MANIFEST.MF +++ /dev/null @@ -1,63 +0,0 @@ -Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA Spring Implementation Runtime Model
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Spring Implementation Runtime Model
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.spring.runtime
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 -Import-Package: org.oasisopen.sca;version="2.0.0",
- org.oasisopen.sca.annotation;version="2.0.0",
- javax.xml.namespace,
- org.apache.tuscany.sca.assembly;version="2.0.0",
- org.apache.tuscany.sca.assembly.builder;version="2.0.0",
- org.apache.tuscany.sca.assembly.impl;version="2.0.0",
- org.apache.tuscany.sca.assembly.xml;version="2.0.0",
- org.apache.tuscany.sca.context;version="2.0.0",
- org.apache.tuscany.sca.contribution;version="2.0.0",
- org.apache.tuscany.sca.contribution.processor;version="2.0.0",
- org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.core.factory;version="2.0.0",
- org.apache.tuscany.sca.core.invocation;version="2.0.0",
- org.apache.tuscany.sca.databinding;version="2.0.0",
- org.apache.tuscany.sca.databinding.impl;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring.xml;version="2.0.0",
- org.apache.tuscany.sca.implementation.java;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.injection;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.introspect;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.introspect.impl;version="2.0.0",
- org.apache.tuscany.sca.interfacedef;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java.impl;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.util;version="2.0.0",
- org.apache.tuscany.sca.invocation;version="2.0.0",
- org.apache.tuscany.sca.monitor;version="2.0.0",
- org.apache.tuscany.sca.policy;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0.0",
- org.apache.tuscany.sca.runtime;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
-Export-Package: org.apache.tuscany.sca.implementation.spring.context;version="2.0.0";
- uses:="org.springframework.beans.factory.support,
- org.springframework.context.support,
- org.springframework.core.io,
- org.apache.tuscany.sca.implementation.spring,
- org.springframework.context,
- org.apache.tuscany.sca.implementation.spring.provider,
- org.springframework.beans.factory.config,
- org.springframework.beans.factory"
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/NOTICE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/NOTICE deleted file mode 100644 index 1325efd8bf..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/pom.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/pom.xml deleted file mode 100644 index 460844d92b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/pom.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-spring-runtime</artifactId> - <name>Apache Tuscany SCA Spring Implementation Runtime Model</name> - - <dependencies> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-base-runtime-pom</artifactId> - <type>pom</type> - <version>2.0-Beta2-SNAPSHOT</version> - <scope>provided</scope> - </dependency> - - <!-- Spring dependencies... --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - </dependencies> -</project> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAGenericApplicationContext.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAGenericApplicationContext.java deleted file mode 100644 index 44a3ee2b88..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAGenericApplicationContext.java +++ /dev/null @@ -1,145 +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.spring.context; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringConstructorArgElement; -import org.apache.tuscany.sca.implementation.spring.SpringPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; -import org.springframework.beans.MutablePropertyValues; -import org.springframework.beans.PropertyValue; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.config.BeanReference; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.config.ConstructorArgumentValues; -import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; -import org.springframework.beans.factory.config.TypedStringValue; -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.GenericApplicationContext; - -public class SCAGenericApplicationContext extends GenericApplicationContext { - - private ClassLoader classloader = null; - private List<SpringSCAPropertyElement> propertyElements = new ArrayList<SpringSCAPropertyElement>(); - private List<SpringSCAServiceElement> serviceElements = new ArrayList<SpringSCAServiceElement>(); - private List<SpringSCAReferenceElement> referenceElements = new ArrayList<SpringSCAReferenceElement>(); - private List<SpringBeanElement> beanElements; - - public SCAGenericApplicationContext(DefaultListableBeanFactory beanFactory, - ApplicationContext parent, - ClassLoader classloader) { - super(beanFactory, parent); - this.classloader = classloader; - } - - public SCAGenericApplicationContext(ApplicationContext parent, ClassLoader classloader) { - super(parent); - this.classloader = classloader; - } - - @Override - protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { - beanFactory.setBeanClassLoader(classloader); - } - - public void addSCAPropertyElement(SpringSCAPropertyElement propertyElement) { - propertyElements.add(propertyElement); - } - - public void addSCAServiceElement(SpringSCAServiceElement serviceElement) { - serviceElements.add(serviceElement); - } - - public void addSCAReferenceElement(SpringSCAReferenceElement referenceElement) { - referenceElements.add(referenceElement); - } - - public synchronized List<SpringBeanElement> getBeanElements() { - if (beanElements == null) { - beanElements = new ArrayList<SpringBeanElement>(); - for (String name : getBeanDefinitionNames()) { - BeanDefinition def = getBeanDefinition(name); - SpringBeanElement beanElement = new SpringBeanElement(name, def.getBeanClassName()); - beanElements.add(beanElement); - beanElement.setAbstractBean(def.isAbstract()); - beanElement.setFactoryBeanAttribute(def.getFactoryBeanName() != null); - beanElement.setFactoryMethodAttribute(def.getFactoryMethodName() != null); - beanElement.setParentAttribute(def.getParentName() != null); - beanElement.setInnerBean(beanElement.getId() == null); - - ConstructorArgumentValues args = def.getConstructorArgumentValues(); - for (Map.Entry<Integer, ValueHolder> e: args.getIndexedArgumentValues().entrySet()) { - ValueHolder holder = e.getValue(); - SpringConstructorArgElement arg = new SpringConstructorArgElement(holder.getType()); - arg.setIndex(e.getKey()); - beanElement.addCustructorArgs(arg); - } - - MutablePropertyValues values = def.getPropertyValues(); - for (PropertyValue p : values.getPropertyValueList()) { - SpringPropertyElement propertyElement = new SpringPropertyElement(p.getName()); - Object value = p.getValue(); - configurePropertyElement(propertyElement, value); - beanElement.getProperties().add(propertyElement); - } - } - } - return beanElements; - } - - public void configurePropertyElement(SpringPropertyElement propertyElement, Object value) { - if (value instanceof BeanReference) { - BeanReference beanRef = (BeanReference)value; - propertyElement.addRef(beanRef.getBeanName()); - } else if (value instanceof Collection) { - Collection collection = (Collection)value; - for (Object item : collection) { - configurePropertyElement(propertyElement, item); - } - } else if (value instanceof TypedStringValue) { - TypedStringValue stringValue = (TypedStringValue)value; - propertyElement.addValue(stringValue.getValue()); - } else { - if (value != null) { - propertyElement.addValue(value.toString()); - } - } - } - - public List<SpringSCAPropertyElement> getPropertyElements() { - return propertyElements; - } - - public List<SpringSCAServiceElement> getServiceElements() { - return serviceElements; - } - - public List<SpringSCAReferenceElement> getReferenceElements() { - return referenceElements; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAParentApplicationContext.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAParentApplicationContext.java deleted file mode 100644 index cd81facc3d..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SCAParentApplicationContext.java +++ /dev/null @@ -1,213 +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.spring.context; - -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.util.Locale; -import java.util.Map; - -import org.apache.tuscany.sca.implementation.spring.provider.SpringImplementationWrapper; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationEvent; -import org.springframework.context.MessageSourceResolvable; -import org.springframework.context.NoSuchMessageException; -import org.springframework.core.io.Resource; - -/** - * A Spring ParentApplicationContext for a given Spring Implementation - * - * The Parent application context is responsible for handling those entities within a Spring - * application context that actually belong to SCA rather than to Spring. The principal things - * are Properties and References. These may be present either through explicit <sca:property/> - * and <sca:reference/> elements in the application context or they may be implicit through - * unresolved Spring bean <property.../> elements. In either case, it is the Parent application - * context that must provide Spring beans that correspond to the property or reference, as derived - * from the SCA composite in which the Spring application context is an implementation. - * - * @version $Rev$ $Date$ - */ -public class SCAParentApplicationContext implements ApplicationContext { - - // The Spring implementation for which this is the parent application context - private SpringImplementationWrapper implementation; - - private static final String[] EMPTY_ARRAY = new String[0]; - - public SCAParentApplicationContext(SpringImplementationWrapper implementation) { - this.implementation = implementation; - } // end constructor - - public Object getBean(String name) throws BeansException { - return getBean(name, (Class)null); - } - - /** - * Get a Bean for a reference or for a property. - * - * @param name - the name of the Bean required - * @param requiredType - the required type of the Bean (either a Java class or a Java interface) - * @return Object - a Bean which matches the requested bean - */ - public Object getBean(String name, Class requiredType) throws BeansException { - Object bean = implementation.getBean(name, requiredType); - if (bean == null && getParent() != null) { - bean = getParent().getBean(name, requiredType); - } - if (bean == null) { - throw new NoSuchBeanDefinitionException("Unable to find Bean with name " + name); - } else { - return bean; - } - } // end method getBean( String, Class ) - - public Object getBean(String name, Object[] args) throws BeansException { - return getBean(name, ((Class)null)); - } - - public <T> T getBean(Class<T> clazz) throws BeansException { - return clazz.cast(getBean(clazz.getName(), clazz)); - } - - public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> clazz) throws BeansException { - return null; - } - - public <A extends Annotation> A findAnnotationOnBean(String arg0, Class<A> clazz) { - return null; - } - - public boolean containsBean(String name) { - // TODO - return false; - } - - public boolean isSingleton(String name) throws NoSuchBeanDefinitionException { - // TODO - return false; - } - - public boolean isTypeMatch(String name, Class targetType) throws NoSuchBeanDefinitionException { - throw new UnsupportedOperationException(); - } - - public Class getType(String name) throws NoSuchBeanDefinitionException { - return null; - } - - public String[] getAliases(String name) throws NoSuchBeanDefinitionException { - return EMPTY_ARRAY; - } - - public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException { - return null; - } - - public String getId() { - return this.toString(); - } - - public String getDisplayName() { - return implementation.getURI(); - } - - public long getStartupDate() { - return 0; - } - - public boolean containsBeanDefinition(String beanName) { - return false; - } - - public int getBeanDefinitionCount() { - return 0; - } - - public String[] getBeanDefinitionNames() { - return new String[0]; - } - - public String[] getBeanNamesForType(Class type) { - return new String[0]; - } - - public String[] getBeanNamesForType(Class type, boolean includePrototypes, boolean includeFactoryBeans) { - return new String[0]; - } - - public Map getBeansOfType(Class type) throws BeansException { - return null; - } - - public Map getBeansOfType(Class type, boolean includePrototypes, boolean includeFactoryBeans) throws BeansException { - return null; - } - - public boolean isPrototype(String theString) { - return false; - } - - public BeanFactory getParentBeanFactory() { - return null; - } - - public boolean containsLocalBean(String name) { - return false; - } - - public String getMessage(String code, Object[] args, String defaultMessage, Locale locale) { - return null; - } - - public String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException { - return null; - } - - public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException { - return null; - } - - public void publishEvent(ApplicationEvent event) { - - } - - public Resource[] getResources(String locationPattern) throws IOException { - return new Resource[0]; - } - - public Resource getResource(String location) { - return null; - } - - public ClassLoader getClassLoader() { - // REVIEW: this is almost certainly flawed, but it's not clear how the SCA runtime's - // resource loading mechanism is exposed right now. - return this.getClass().getClassLoader(); - } - - @Override - public ApplicationContext getParent() { - return implementation.getParentApplicationContext(); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java deleted file mode 100644 index 2d18b5aa6c..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java +++ /dev/null @@ -1,41 +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.spring.context; - -import org.springframework.context.ApplicationContext; - -/** - * A utility to receive the parent Spring application context - */ -public interface SpringApplicationContextAccessor { - /** - * Get the parent Spring application context for the hosting environment. This will be used as the parent - * application context for implementation.spring components - * @return The parent application context - */ - ApplicationContext getParentApplicationContext(); - - /** - * Set the root Spring application context. This is particually useful for Spring web integration where Spring - * creates WebApplicationContext and keeps it in the ServletContext - * @param parentApplicationContext The parent application context - */ - void setParentApplicationContext(ApplicationContext parentApplicationContext); -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringContextWrapper.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringContextWrapper.java deleted file mode 100644 index 4b0ad72972..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringContextWrapper.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.spring.context; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.implementation.spring.processor.ComponentNameAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.ConstructorAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.InitDestroyAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.PropertyAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.ReferenceAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.provider.ComponentWrapper; -import org.apache.tuscany.sca.implementation.spring.provider.PropertyValueWrapper; -import org.apache.tuscany.sca.implementation.spring.provider.SpringImplementationWrapper; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.GenericApplicationContext; -import org.springframework.core.io.UrlResource; - -/** - * This is the runtime side tie for the corresponding tuscany side stub class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the SpringContextStub class - * in the implementation-spring module for what the stub does. - */ -public class SpringContextWrapper { - - private GenericApplicationContext springContext; - private SpringImplementationWrapper implementation; - - public SpringContextWrapper(SpringImplementationWrapper implementation, List<URL> resource) { - this.implementation = implementation; - SCAParentApplicationContext scaParentContext = new SCAParentApplicationContext(implementation); - springContext = createApplicationContext(scaParentContext, resource); - } - - public ApplicationContext getApplicationContext() { - return springContext; - } - - public void start() { - // Do refresh here to ensure that Spring Beans are not touched before the SCA config process is complete... - springContext.refresh(); - springContext.start(); - } - - public void close() { - springContext.close(); - if (springContext instanceof GenericApplicationContext) { - springContext.stop(); - } - } - - /** - * Include BeanPostProcessor to deal with SCA Annotations in Spring Bean - */ - private GenericApplicationContext createApplicationContext(SCAParentApplicationContext scaParentContext, - List<URL> resources) { - - GenericApplicationContext appCtx = - new SCAGenericApplicationContext(scaParentContext, implementation.getClassLoader()); - XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appCtx); - - // REVIEW: [rfeng] How do we control the schema validation - xmlReader.setValidating(false); - - for (URL resource : resources) { - xmlReader.loadBeanDefinitions(new UrlResource(resource)); - } - xmlReader.setBeanClassLoader(implementation.getClassLoader()); - includeAnnotationProcessors(appCtx.getBeanFactory()); - return appCtx; - - } - - public Object getBean(String id) throws BeansException { - return springContext.getBean(id); - } - - /** - * Include BeanPostProcessor to deal with SCA Annotations in Spring Bean - */ - private void includeAnnotationProcessors(ConfigurableListableBeanFactory beanFactory) { - - // Processor to deal with @Init and @Destroy SCA Annotations - BeanPostProcessor initDestroyProcessor = new InitDestroyAnnotationProcessor(); - beanFactory.addBeanPostProcessor(initDestroyProcessor); - - // Processor to deal with @Reference SCA Annotations - ComponentWrapper component = implementation.getComponentWrapper(); - BeanPostProcessor referenceProcessor = new ReferenceAnnotationProcessor(component); - beanFactory.addBeanPostProcessor(referenceProcessor); - - // Processor to deal with @Property SCA Annotations - PropertyValueWrapper pvs = implementation.getPropertyValueWrapper(); - BeanPostProcessor propertyProcessor = new PropertyAnnotationProcessor(pvs); - beanFactory.addBeanPostProcessor(propertyProcessor); - - // Processor to deal with @ComponentName SCA Annotations - BeanPostProcessor componentNameProcessor = - new ComponentNameAnnotationProcessor(implementation.getComponentName()); - beanFactory.addBeanPostProcessor(componentNameProcessor); - - // Processor to deal with @Constructor SCA Annotations - BeanPostProcessor constructorProcessor = new ConstructorAnnotationProcessor(); - beanFactory.addBeanPostProcessor(constructorProcessor); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/SCANamespaceHandlerResolver.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/SCANamespaceHandlerResolver.java deleted file mode 100644 index 75e00007f6..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/SCANamespaceHandlerResolver.java +++ /dev/null @@ -1,53 +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.spring.namespace; - -import org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver; -import org.springframework.beans.factory.xml.NamespaceHandler; - -/** - * Overrides the default Spring namespace resolver to automatically register - * {@link ScaNamespaceHandler} instead of requiring a value to be supplied in a - * Spring configuration - * - * @version $Rev$ $Date$ - */ -public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver { - private static final String SCA_NAMESPACE = "http://www.springframework.org/schema/sca"; - - private ScaNamespaceHandler handler; - - public SCANamespaceHandlerResolver(ClassLoader classLoader) { - super(classLoader); - handler = new ScaNamespaceHandler(/*componentType*/); - } - - public SCANamespaceHandlerResolver(String handlerMappingsLocation, ClassLoader classLoader) { - super(classLoader, handlerMappingsLocation); - handler = new ScaNamespaceHandler(/*componentType*/); - } - - @Override - public NamespaceHandler resolve(String namespaceUri) { - if (SCA_NAMESPACE.equals(namespaceUri)) { - return handler; - } - return super.resolve(namespaceUri); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaNamespaceHandler.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaNamespaceHandler.java deleted file mode 100644 index 66cb3c76fc..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaNamespaceHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace; - -import java.util.ArrayList; -import java.util.List; -import java.util.StringTokenizer; - -import javax.xml.namespace.QName; - -import org.springframework.beans.factory.xml.NamespaceHandlerSupport; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * Handler for the <sca:> namespace in an application context - * - * @version $Rev$ $Date$ - */ -public class ScaNamespaceHandler extends NamespaceHandlerSupport { - - public ScaNamespaceHandler() { - } - - @Override - public void init() { - registerBeanDefinitionParser("reference", new ScaReferenceBeanDefinitionParser()); - registerBeanDefinitionParser("service", new ScaServiceBeanDefinitionParser()); - registerBeanDefinitionParser("property", new ScaPropertyBeanDefinitionParser()); - } - - private static String getNamespaceURI(Element element, String prefix) { - if (element == null) { - return null; - } - String name = ("".equals(prefix)) ? "xmlns" : "xmlns:" + prefix; - String ns = element.getAttribute(name); - if (ns != null && !"".equals(ns)) { - return ns; - } - Node parent = element.getParentNode(); - if (parent instanceof Element) { - return getNamespaceURI((Element)parent, prefix); - } else { - return null; - } - } - - public static List<QName> resolve(Element element, String listOfNames) { - List<QName> qnames = new ArrayList<QName>(); - StringTokenizer tokenizer = new StringTokenizer(listOfNames); - while (tokenizer.hasMoreTokens()) { - String qname = tokenizer.nextToken(); - String prefix = ""; - String local = qname; - int index = qname.indexOf(':'); - if (index != -1) { - local = qname.substring(index + 1); - prefix = qname.substring(0, index); - } - String ns = getNamespaceURI(element, prefix); - if (ns != null) { - qnames.add(new QName(ns, local, prefix)); - } else { - throw new IllegalArgumentException("Prefix " + prefix + "is not bound to a namespace"); - } - } - return qnames; - } - - public static String getAttribute(Element element, String name) { - String attr = element.getAttributeNS(null, name); - if ("".equals(attr)) { - return null; - } else { - return attr; - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaPropertyBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaPropertyBeanDefinitionParser.java deleted file mode 100644 index bff0aa84e0..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaPropertyBeanDefinitionParser.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace; - -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.context.SCAGenericApplicationContext; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:reference> element - * @version $Rev$ $Date$ - */ -public class ScaPropertyBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAPropertyElement propertyElement = - new SpringSCAPropertyElement(element.getAttributeNS(null, "name"), element.getAttributeNS(null, "type")); - context.addSCAPropertyElement(propertyElement); - } - // do nothing, this is handled by Tuscany - return null; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaReferenceBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaReferenceBeanDefinitionParser.java deleted file mode 100644 index ab797c1e52..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaReferenceBeanDefinitionParser.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace; - -import static org.apache.tuscany.sca.implementation.spring.namespace.ScaNamespaceHandler.getAttribute; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.context.SCAGenericApplicationContext; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:reference> element - * - * @version $Rev$ $Date$ - */ -public class ScaReferenceBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAReferenceElement referenceElement = - new SpringSCAReferenceElement(getAttribute(element, "name"), getAttribute(element, "type")); - referenceElement.setDefaultBean(getAttribute(element, "default")); - - String requires = getAttribute(element, "requires"); - if (requires != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, requires); - referenceElement.getIntentNames().addAll(qnames); - } - - String policySets = getAttribute(element, "policySets"); - if (policySets != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, policySets); - referenceElement.getPolicySetNames().addAll(qnames); - } - - context.addSCAReferenceElement(referenceElement); - } - - // do nothing, this is handled by Tuscany - return null; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaServiceBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaServiceBeanDefinitionParser.java deleted file mode 100644 index 6a3beebcff..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/ScaServiceBeanDefinitionParser.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace; - -import static org.apache.tuscany.sca.implementation.spring.namespace.ScaNamespaceHandler.getAttribute; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; -import org.apache.tuscany.sca.implementation.spring.context.SCAGenericApplicationContext; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:service/> element - * - * @version $Rev$ $Date$ - */ -public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAServiceElement serviceElement = - new SpringSCAServiceElement(getAttribute(element, "name"), getAttribute(element, "target")); - serviceElement.setType(getAttribute(element, "type")); - - String requires = getAttribute(element, "requires"); - if (requires != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, requires); - serviceElement.getIntentNames().addAll(qnames); - } - - String policySets = getAttribute(element, "policySets"); - if (policySets != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, policySets); - serviceElement.getPolicySetNames().addAll(qnames); - } - - context.addSCAServiceElement(serviceElement); - } - // do nothing, handled by Tuscany - return null; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ComponentNameAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ComponentNameAnnotationProcessor.java deleted file mode 100644 index 68d49bbc24..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ComponentNameAnnotationProcessor.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.processor; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.ref.Reference; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.oasisopen.sca.annotation.ComponentName; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class ComponentNameAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> componentNameAnnotationType = ComponentName.class; - - private String componentName; - - public ComponentNameAnnotationProcessor(String componentName) { - this.componentName = componentName; - } - - /** - * Gets componentName annotation type. - */ - protected Class<? extends Annotation> getComponentNameAnnotationType() { - return this.componentNameAnnotationType; - } - - /** - * Sets componentName annotation type. - */ - public void setComponentNameAnnotationType(Class<? extends Annotation> componentNameAnnotationType) { - Assert.notNull(componentNameAnnotationType, "'componentNameAnnotationType' type must not be null."); - this.componentNameAnnotationType = componentNameAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Reference} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - Annotation annotation = field.getAnnotation(getComponentNameAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on static fields"); - } - - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on private fields"); - } - - ReflectionUtils.makeAccessible(field); - - if (field.getType().getName().equals("java.lang.String")) { - Object nameObj = componentName; - if (nameObj != null) - ReflectionUtils.setField(field, bean, nameObj); - } else { - throw new IllegalStateException( - "ComponentName annotation is supported only on java.lang.String field type."); - } - } - } - }); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - Annotation annotation = method.getAnnotation(getComponentNameAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on static methods"); - } - - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on private methods"); - } - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException( - "ComponentName annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - - if (pd.getPropertyType().getName().equals("java.lang.String")) { - Object nameObj = componentName; - if (nameObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {nameObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting reference: " + e.getMessage(), e); - } - } - } else { - throw new IllegalStateException( - "ComponentName annotation is supported only on java.lang.String field type."); - } - } - } - }); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ConstructorAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ConstructorAnnotationProcessor.java deleted file mode 100644 index a52a85ff3a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ConstructorAnnotationProcessor.java +++ /dev/null @@ -1,112 +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.spring.processor; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Constructor; - -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter; -import org.springframework.util.Assert; - -public class ConstructorAnnotationProcessor extends InstantiationAwareBeanPostProcessorAdapter { - - private Class<? extends Annotation> constructorAnnotationType = org.oasisopen.sca.annotation.Constructor.class; - - private Class<? extends Annotation> autowiredAnnotationType = Autowired.class; - - public ConstructorAnnotationProcessor() { - // Default constructor. - } - - /** - * Set the 'autowired' annotation type, to be used on constructors, fields, - * setter methods and arbitrary config methods. - */ - public void setAutowiredAnnotationType(Class<? extends Annotation> autowiredAnnotationType) { - Assert.notNull(autowiredAnnotationType, "'autowiredAnnotationType' must not be null"); - this.autowiredAnnotationType = autowiredAnnotationType; - } - - /** - * Return the 'autowired' annotation type. - */ - protected Class<? extends Annotation> getAutowiredAnnotationType() { - return this.autowiredAnnotationType; - } - - /** - * Return the 'constructor' annotation type. - */ - protected Class<? extends Annotation> getConstructorAnnotationType() { - return this.constructorAnnotationType; - } - - /** - * Sets the 'constructor' annotation type. - */ - public void setConstructorAnnotationType(Class<? extends Annotation> constructorAnnotationType) { - Assert.notNull(constructorAnnotationType, "'constructorAnnotationType' type must not be null."); - this.constructorAnnotationType = constructorAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - public Constructor[] determineCandidateConstructors(Class beanClass, String beanName) throws BeansException { - /*Constructor[] declaredConstructors = beanClass.getDeclaredConstructors(); - Method[] declaredMethods = beanClass.getDeclaredMethods(); - List candidates = new ArrayList(declaredConstructors.length); - - for (int i = 0; i < declaredMethods.length; i++) { - Method method = declaredMethods[i]; - Annotation annotation = method.getAnnotation(getConstructorAnnotationType()); - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Constructor annotation is not supported on static methods"); - } - - if (candidates.size() == 1) { - throw new IllegalStateException("Only one method is allowed to have constructor annotation in a bean: " + method); - } - - candidates.add(method); - } - } - - return (Constructor[]) candidates.toArray(new Constructor[candidates.size()]);*/ - return null; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/InitDestroyAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/InitDestroyAnnotationProcessor.java deleted file mode 100644 index 477582b1d3..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/InitDestroyAnnotationProcessor.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.processor; - -import java.lang.annotation.Annotation; - -import org.oasisopen.sca.annotation.Destroy; -import org.oasisopen.sca.annotation.Init; -import org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor; - -public class InitDestroyAnnotationProcessor extends InitDestroyAnnotationBeanPostProcessor { - - private static final long serialVersionUID = 0; - - private Class<? extends Annotation> initAnnotationType = Init.class; - private Class<? extends Annotation> destroyAnnotationType = Destroy.class; - - /** - * Gets init annotation type. - */ - protected Class<? extends Annotation> getInitAnnotationType() { - return this.initAnnotationType; - } - - /** - * Sets init annotation type. - */ - /* - * public void setInitAnnotationType(Class<? extends Annotation> - * initAnnotationType) { Assert.notNull(initAnnotationType, - * "Init annotation type must not be null."); this.initAnnotationType = - * initAnnotationType; } - */ - - /** - * Gets destroy annotation type. - */ - protected Class<? extends Annotation> getDestroyAnnotationType() { - return this.destroyAnnotationType; - } - - /** - * Sets destroy annotation type. - */ - /* - * public void setDestroyAnnotationType(Class<? extends Annotation> - * destroyAnnotationType) { Assert.notNull(destroyAnnotationType, - * "Destroy annotation type must not be null."); this.destroyAnnotationType - * = destroyAnnotationType; } - */ - - public InitDestroyAnnotationProcessor() { - // Set the @Init annotation type - setInitAnnotationType(initAnnotationType); - - // Set the @Destroy annotation type - setDestroyAnnotationType(destroyAnnotationType); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/PropertyAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/PropertyAnnotationProcessor.java deleted file mode 100644 index 4763714a38..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/PropertyAnnotationProcessor.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.implementation.spring.processor; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.sca.implementation.spring.provider.PropertyValueWrapper; -import org.oasisopen.sca.annotation.Property; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class PropertyAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> propertyAnnotationType = Property.class; - - private PropertyValueWrapper propertyValue; - - public PropertyAnnotationProcessor(PropertyValueWrapper propertyValue) { - this.propertyValue = propertyValue; - } - - /** - * Gets property annotation type. - */ - protected Class<? extends Annotation> getPropertyAnnotationType() { - return this.propertyAnnotationType; - } - - /** - * Sets property annotation type. - */ - public void setPropertyAnnotationType(Class<? extends Annotation> propertyAnnotationType) { - Assert.notNull(propertyAnnotationType, "'propertyAnnotationType' type must not be null."); - this.propertyAnnotationType = propertyAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Property} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - - Property annotation = (Property)method.getAnnotation(getPropertyAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on static methods"); - } - - /* - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on private methods"); - } - */ - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException("Property annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - if (pd != null) { - String propName = annotation.name(); - if ("".equals(propName)) { - injectProperty(bean, pd, propertyValue.getPropertyObj(pd.getPropertyType(), pd.getName())); - } else { - injectProperty(bean, pd, propertyValue.getPropertyObj(pd.getPropertyType(), propName)); - } - } - } - } - }); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - - Property annotation = (Property)field.getAnnotation(getPropertyAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on static fields"); - } - - /* - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on private fields"); - } - */ - - ReflectionUtils.makeAccessible(field); - - Object propertyObj = null; - String propName = annotation.name(); - if ("".equals(propName)) { - propertyObj = propertyValue.getPropertyObj(field.getType(), field.getName()); - } else { - propertyObj = propertyValue.getPropertyObj(field.getType(), propName); - } - - if (propertyObj != null) - ReflectionUtils.setField(field, bean, propertyObj); - } - } - }); - } - - public void injectProperty(Object bean, PropertyDescriptor pd, Object propertyObj) { - - if (propertyObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {propertyObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting property: " + e.getMessage(), e); - } - } - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ReferenceAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ReferenceAnnotationProcessor.java deleted file mode 100644 index ad79db840e..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/ReferenceAnnotationProcessor.java +++ /dev/null @@ -1,168 +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.spring.processor; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.apache.tuscany.sca.implementation.spring.provider.ComponentWrapper; -import org.oasisopen.sca.annotation.Reference; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class ReferenceAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> referenceAnnotationType = Reference.class; - private ComponentWrapper component; - - public ReferenceAnnotationProcessor(ComponentWrapper component) { - this.component = component; - } - - /** - * Gets referece annotation type. - */ - protected Class<? extends Annotation> getReferenceAnnotationType() { - return this.referenceAnnotationType; - } - - /** - * Sets referece annotation type. - */ - public void setReferenceAnnotationType(Class<? extends Annotation> referenceAnnotationType) { - Assert.notNull(referenceAnnotationType, "'referenceAnnotationType' type must not be null."); - this.referenceAnnotationType = referenceAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Reference} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - - Reference annotation = (Reference)method.getAnnotation(getReferenceAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on static methods"); - } - - /* - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on private methods"); - } - */ - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException( - "Reference annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - if (pd != null) { - String refName = annotation.name(); - if ("".equals(refName)) { - injectReference(bean, pd, pd.getName()); - } else { - injectReference(bean, pd, refName); - } - } - } - } - }); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - - Reference annotation = (Reference)field.getAnnotation(getReferenceAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on static fields"); - } - - /* - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on private fields"); - } - */ - - ReflectionUtils.makeAccessible(field); - - Object referenceObj = null; - String refName = annotation.name(); - if ("".equals(refName)) { - referenceObj = component.getService(field.getType(), field.getName()); - } else { - referenceObj = component.getService(field.getType(), refName); - } - - if (referenceObj != null) - ReflectionUtils.setField(field, bean, referenceObj); - } - } - }); - } - - /** - * Processes a property descriptor to inject a service. - */ - public void injectReference(Object bean, PropertyDescriptor pd, String name) { - - Object referenceObj = component.getService(pd.getPropertyType(), name); - - if (referenceObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {referenceObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting reference: " + e.getMessage(), e); - } - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/SpringXMLBeanDefinitionLoaderImpl.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/SpringXMLBeanDefinitionLoaderImpl.java deleted file mode 100644 index 6ba2c65ef0..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/SpringXMLBeanDefinitionLoaderImpl.java +++ /dev/null @@ -1,79 +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.spring.processor; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; -import org.apache.tuscany.sca.implementation.spring.context.SCAGenericApplicationContext; -import org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.UrlResource; - -/** - * A tie that allows Tuscany to call Spring library to load the application context for the purpose of introspection - */ -public class SpringXMLBeanDefinitionLoaderImpl implements SpringXMLBeanDefinitionLoader { - - private static SCAGenericApplicationContext createApplicationContext(Object scaParentContext, - ClassLoader classLoader, - List<URL> resources) { - if (classLoader == null) { - classLoader = Thread.currentThread().getContextClassLoader(); - } - - SCAGenericApplicationContext appCtx = - new SCAGenericApplicationContext((ApplicationContext)scaParentContext, classLoader); - XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appCtx); - - // REVIEW: [rfeng] How do we control the schema validation - xmlReader.setValidating(false); - - for (URL resource : resources) { - xmlReader.loadBeanDefinitions(new UrlResource(resource)); - } - - return appCtx; - - } - - @Override - public Object load(List<URL> resources, - List<SpringSCAServiceElement> serviceElements, - List<SpringSCAReferenceElement> referenceElements, - List<SpringSCAPropertyElement> propertyElements, - List<SpringBeanElement> beanElements, - ProcessorContext context) { - // FIXME: [rfeng] We should try to avoid parsing the Spring xml twice for the deployment and runtime - SCAGenericApplicationContext applicationContext = createApplicationContext(null, null, resources); - serviceElements.addAll(applicationContext.getServiceElements()); - referenceElements.addAll(applicationContext.getReferenceElements()); - propertyElements.addAll(applicationContext.getPropertyElements()); - beanElements.addAll(applicationContext.getBeanElements()); - return applicationContext; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/ComponentWrapper.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/ComponentWrapper.java deleted file mode 100644 index 5bddd8a006..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/ComponentWrapper.java +++ /dev/null @@ -1,38 +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.spring.provider; - -/** - * Wrapper for the Component - */ -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -public class ComponentWrapper { - - private RuntimeComponent component; - - public ComponentWrapper(RuntimeComponent component) { - this.component = component; - } - - public Object getService(Class<?> type, String name) { - return component.getComponentContext().getService(type, name); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/PropertyValueWrapper.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/PropertyValueWrapper.java deleted file mode 100644 index eca1492081..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/PropertyValueWrapper.java +++ /dev/null @@ -1,50 +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.spring.provider; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * Wrapper for PropertyValue - */ -public class PropertyValueWrapper { - - private RuntimeComponent component; - private PropertyValueFactory propertyFactory; - - public PropertyValueWrapper(RuntimeComponent component, PropertyValueFactory propertyFactory) { - this.component = component; - this.propertyFactory = propertyFactory; - } - - public Object getPropertyObj(Class<?> type, String name) { - List<ComponentProperty> props = component.getProperties(); - for (ComponentProperty prop : props) { - if (prop.getName().equals(name)) { - return propertyFactory.createPropertyValue(prop, type); - } - } - return null; // property name not found - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.java deleted file mode 100644 index db7831322a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.java +++ /dev/null @@ -1,81 +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.spring.provider; - -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.implementation.spring.context.SpringContextWrapper; -import org.apache.tuscany.sca.interfacedef.Operation; -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; -import org.springframework.context.ApplicationContext; - -/** - * A provider class for runtime Spring implementation instances - * @version $Rev$ $Date$ - */ -public class SpringImplementationProvider implements ImplementationProvider { - private RuntimeComponent component; - - // A Spring application context object - private SpringContextWrapper springContext; - - /** - * Constructor for the provider - takes a component definition and a Spring implementation - * description - * @param component - the component in the assembly - * @param implementation - the implementation - */ - public SpringImplementationProvider(RuntimeComponent component, - SpringImplementationWrapper implementation, - ApplicationContext parentApplicationContext, - ProxyFactory proxyService, - PropertyValueFactory propertyValueObjectFactory) { - super(); - this.component = component; - - springContext = new SpringContextWrapper(implementation, implementation.getResource()); - - } // end constructor - - public Invoker createInvoker(RuntimeComponentService service, Operation operation) { - return new SpringInvoker(component, springContext, service, operation); - } - - public boolean supportsOneWayInvocation() { - return false; - } - - /** - * Start this Spring implementation instance - */ - public void start() { - springContext.start(); - } - - /** - * Stop this implementation instance - */ - public void stop() { - springContext.close(); - } - -} // end class SpringImplementationProvider diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java deleted file mode 100644 index be16fb3251..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.provider; - -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.springframework.context.ApplicationContext; - -/** - * ImplementationProviderFactory for Spring implementation type - * @version $Rev$ $Date$ - * - */ -public class SpringImplementationProviderFactory implements ImplementationProviderFactory<SpringImplementation> { - private ProxyFactory proxyFactory; - private PropertyValueFactory propertyFactory; - private SpringApplicationContextAccessor contextAccessor; - - /** - * Simple constructor - * - */ - public SpringImplementationProviderFactory(ExtensionPointRegistry registry) { - super(); - UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class); - contextAccessor = utilities.getUtility(SpringApplicationContextAccessor.class); - proxyFactory = ExtensibleProxyFactory.getInstance(registry); - propertyFactory = utilities.getUtility(PropertyValueFactory.class); - } - - /** - * Returns a SpringImplementationProvider for a given component and Spring implementation - * @param component the component for which implementation instances are required - * @param implementation the Spring implementation with details of the component - * implementation - * @return the SpringImplementationProvider for the specified component - */ - public ImplementationProvider createImplementationProvider(RuntimeComponent component, - SpringImplementation implementation) { - ApplicationContext parentApplicationContext = - (contextAccessor != null) ? contextAccessor.getParentApplicationContext() : null; - SpringImplementationWrapper tie = - new SpringImplementationWrapper(implementation, parentApplicationContext, component, propertyFactory); - return new SpringImplementationProvider(component, tie, parentApplicationContext, proxyFactory, propertyFactory); - } - - /** - * Returns the class of the Spring implementation - */ - public Class<SpringImplementation> getModelType() { - return SpringImplementation.class; - } - -} // end class SpringImplementationProviderFactory diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java deleted file mode 100644 index e5593f5eaa..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java +++ /dev/null @@ -1,158 +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.spring.provider; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.springframework.context.ApplicationContext; - -/** - * Wrapper for SpringImplementation - */ -public class SpringImplementationWrapper { - - private SpringImplementation implementation; - private ApplicationContext parentApplicationContext; - private RuntimeComponent component; - private PropertyValueFactory propertyFactory; - - public SpringImplementationWrapper(SpringImplementation implementation, - ApplicationContext parentApplicationContext, - RuntimeComponent component, - PropertyValueFactory propertyFactory) { - this.implementation = implementation; - this.component = component; - this.propertyFactory = propertyFactory; - this.parentApplicationContext = parentApplicationContext; - } - - public String getURI() { - return implementation.getURI(); - } - - public List<URL> getResource() { - return implementation.getResource(); - } - - public String getComponentName() { - return component.getName(); - } - - /** - * Method to create a Java Bean for a Property value - * @param <B> the class type of the Bean - * @param requiredType - a Class object for the required type - * @param name - the Property name - * @return - a Bean of the specified property, with value set - */ - private <B> B getPropertyBean(Class<?> requiredType, String name) { - B propertyObject = null; - // Get the component's list of properties - List<ComponentProperty> props = component.getProperties(); - for (ComponentProperty prop : props) { - if (prop.getName().equals(name)) { - // On finding the property, create a factory for it and create a Bean using - // the factory - propertyObject = (B)propertyFactory.createPropertyValue(prop, requiredType); - } // end if - } // end for - - return propertyObject; - } - - /** - * Creates a proxy Bean for a reference - * @param <B> the Business interface type for the reference - * @param businessInterface - the business interface as a Class - * @param referenceName - the name of the Reference - * @return an Bean of the type defined by <B> - */ - private <B> B getService(Class<B> businessInterface, String referenceName) { - return component.getComponentContext().getService(businessInterface, referenceName); - } - - /** - * Get a Bean for a reference or for a property. - * - * @param name - the name of the Bean required - * @param requiredType - the required type of the Bean (either a Java class or a Java interface) - * @return Object - a Bean which matches the requested bean - */ - public Object getBean(String name, Class<?> requiredType) { - // The expectation is that the requested Bean is either a reference or a property - // from the Spring context - for (Reference reference : implementation.getReferences()) { - if (reference.getName().equals(name)) { - // Extract the Java interface for the reference (it can't be any other interface type - // for a Spring application context) - if (requiredType == null) { - JavaInterface javaInterface = (JavaInterface)reference.getInterfaceContract().getInterface(); - requiredType = javaInterface.getJavaClass(); - } - // Create and return the proxy for the reference - return getService(requiredType, reference.getName()); - } // end if - } // end for - - // For a property, get the name and the required Java type and create a Bean - // of that type with the value inserted. - for (Property property : implementation.getProperties()) { - if (property.getName().equals(name)) { - if (requiredType == null) { - // The following code only deals with a subset of types and was superceded - // by the information from the implementation (which uses Classes as found - // in the Spring implementation itself. - //requiredType = JavaXMLMapper.getJavaType( property.getXSDType() ); - requiredType = implementation.getPropertyClass(name); - } - return getPropertyBean(requiredType, property.getName()); - } // end if - } // end for - // TODO: NoSuchBeanException - // throw new RuntimeException("Unable to find Bean with name " + name); - return null; - - } // end method getBean( String, Class ) - - public ComponentWrapper getComponentWrapper() { - return new ComponentWrapper(component); - } - - public PropertyValueWrapper getPropertyValueWrapper() { - return new PropertyValueWrapper(component, propertyFactory); - } - - public ClassLoader getClassLoader() { - return implementation.getClassLoader(); - } - - public ApplicationContext getParentApplicationContext() { - return parentApplicationContext; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvocationException.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvocationException.java deleted file mode 100644 index 0e1d3f5b5a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvocationException.java +++ /dev/null @@ -1,40 +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.spring.provider; - -/** - * @version $Rev$ $Date$ - */ -public class SpringInvocationException extends Exception { - - private static final long serialVersionUID = -1157790036638157513L; - - public SpringInvocationException(String msg) { - super(msg); - } - - public SpringInvocationException(Throwable e) { - super(e); - } - - public SpringInvocationException(String msg, Throwable e) { - super(msg, e); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvoker.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvoker.java deleted file mode 100644 index ea1d6e6755..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringInvoker.java +++ /dev/null @@ -1,126 +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.spring.provider; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.implementation.spring.context.SpringContextWrapper; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceUtil; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * Initial implementation of a Spring bean invoker - * @version $Rev$ $Date$ - */ -public class SpringInvoker implements Invoker { - - private Method theMethod = null; - private Object bean; - private SpringBeanElement beanElement; - private boolean badInvoker = false; - - private SpringContextWrapper springContext; - private Operation operation; - - /** - * SpringInvoker constructor - * @param component - the Spring component to invoke - * @param service - the service to invoke - * @param operation - the operation to invoke - */ - public SpringInvoker(RuntimeComponent component, - SpringContextWrapper springContext, - RuntimeComponentService service, - Operation operation) { - - this.springContext = springContext; - this.operation = operation; - - // From the component and the service, identify the Spring Bean which is the target - SpringImplementation theImplementation = (SpringImplementation)component.getImplementation(); - beanElement = theImplementation.getBeanFromService(service.getService()); - - if (beanElement == null) { - badInvoker = true; - return; - } - - } // end constructor SpringInvoker - - // Lazy-load the method to avoid timing problems with the Spring Context - private void setupMethod() throws SpringInvocationException { - try { - bean = springContext.getBean(beanElement.getId()); - Class<?> beanClass = bean.getClass(); - theMethod = JavaInterfaceUtil.findMethod(beanClass, operation); - //System.out.println("SpringInvoker - found method " + theMethod.getName() ); - } catch (NoSuchMethodException e) { - throw new SpringInvocationException(e); - } - } - - private Object doInvoke(Object payload) throws SpringInvocationException { - if (theMethod == null) - setupMethod(); - - if (badInvoker) - throw new SpringInvocationException("Spring invoker incorrectly configured"); - // Invoke the method on the Spring bean using the payload, returning the results - try { - Object ret; - - if (payload != null && !payload.getClass().isArray()) { - ret = theMethod.invoke(bean, payload); - } else { - ret = theMethod.invoke(bean, (Object[])payload); - } - return ret; - } catch (InvocationTargetException e) { - throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", - e.getCause()); - } catch (Exception e) { - throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", e); - } - - } // end method doInvoke - - /** - * @param msg the message to invoke on the target bean - */ - public Message invoke(Message msg) { - try { - Object resp = doInvoke(msg.getBody()); - msg.setBody(resp); - } catch (SpringInvocationException e) { - msg.setFaultBody(e.getCause()); - } catch (Throwable e) { - msg.setFaultBody(e); - } - //System.out.println("Spring Invoker - invoke called"); - return msg; - } // end method invoke - -} // end class SpringInvoker diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader deleted file mode 100644 index 4c8fa09951..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader +++ /dev/null @@ -1,17 +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. -org.apache.tuscany.sca.implementation.spring.processor.SpringXMLBeanDefinitionLoaderImpl;ranking=100
\ No newline at end of file diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory deleted file mode 100644 index e6c8d70fe1..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory +++ /dev/null @@ -1,20 +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.
-
-# Implementation class for the implementation extension
-org.apache.tuscany.sca.implementation.spring.provider.SpringImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.spring.SpringImplementation;ranking=100
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.handlers b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.handlers deleted file mode 100644 index 1e1f558382..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.handlers +++ /dev/null @@ -1,2 +0,0 @@ -http\://www.springframework.org/schema/sca=org.apache.tuscany.sca.implementation.spring.namespace.ScaNamespaceHandler
-http\://docs.oasis-open.org/ns/opencsa/sca-j/spring/200810=org.apache.tuscany.sca.implementation.spring.namespace.ScaNamespaceHandler
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.schemas b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.schemas deleted file mode 100644 index 249cc21c13..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/META-INF/spring.schemas +++ /dev/null @@ -1 +0,0 @@ -http\://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd=org/springframework/sca/xml/spring-sca.xsd diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/org/springframework/sca/xml/spring-sca.xsd b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/org/springframework/sca/xml/spring-sca.xsd deleted file mode 100644 index dfa0b931f6..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-runtime/src/main/resources/org/springframework/sca/xml/spring-sca.xsd +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<xsd:schema xmlns="http://www.springframework.org/schema/sca" xmlns:xsd="http://www.w3.org/2001/XMLSchema" - attributeFormDefault="unqualified" elementFormDefault="qualified" - targetNamespace="http://www.springframework.org/schema/sca"> - - <xsd:element name="reference"> - <xsd:complexType> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="default" use="optional"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - - <xsd:element name="property"> - <xsd:complexType> - <xsd:attribute name="id" use="optional"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - - <xsd:element name="service"> - <xsd:complexType> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="target" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - -</xsd:schema> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/LICENSE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/META-INF/MANIFEST.MF deleted file mode 100644 index b2b2091437..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/META-INF/MANIFEST.MF +++ /dev/null @@ -1,26 +0,0 @@ -Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA Spring Implementation Model
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Spring Implementation Model
-Import-Package: org.apache.tuscany.sca.assembly;version="2.0.0",
- org.apache.tuscany.sca.assembly.impl;version="2.0.0",
- org.apache.tuscany.sca.context;version="2.0.0",
- org.apache.tuscany.sca.contribution.processor;version="2.0.0",
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.core.invocation;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring.xml;version="2.0.0",
- org.apache.tuscany.sca.interfacedef;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java.impl;version="2.0.0",
- org.apache.tuscany.sca.invocation;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0.0",
- org.apache.tuscany.sca.runtime;version="2.0.0",
- org.oasisopen.sca;version="2.0.0"
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.spring.stub
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/NOTICE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/NOTICE deleted file mode 100644 index 1325efd8bf..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/README b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/README deleted file mode 100644 index e1b1f98fe0..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/README +++ /dev/null @@ -1,9 +0,0 @@ -Note that the implementation spring modules have a different structure from other extensions.
-
-The aim is to have the Tuscany runtime embedded in a container with the Tuscany classes hidden
-from user applications and the Spring jar's packaged with the application. That means that the
-Tuscany code has no visibilty of the Spring classes and visa-versa. To implement that the
-implementation-spring module has no dependencies on Spring and the implementation-spring-runtime
-module has no dependencies on Tuscany (other than the sca-api), and reflection is used to call
-methods between the modules.
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/pom.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/pom.xml deleted file mode 100644 index e0092dd535..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-spring-stub</artifactId> - <name>Apache Tuscany SCA Spring Implementation Runtime Stub</name> - - <dependencies> - - <!-- **************************************** --> - <!-- * * --> - <!-- * DONT ADD ANY SPRING DEPENDENCIES!!! * --> - <!-- * * --> - <!-- * See the README for details why not * --> - <!-- * * --> - <!-- * * --> - <!-- **************************************** --> - - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-implementation-spring</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-core</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - - </dependencies> -</project> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.java deleted file mode 100644 index f34dfb8ceb..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.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.implementation.spring.processor.stub; - -import java.lang.reflect.Method; -import java.net.URL; -import java.util.Arrays; -import java.util.List; - -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; -import org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader; -import org.oasisopen.sca.ServiceRuntimeException; - -/** - * This is the Tuscany side stub for the corresponding runtime tie class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the SpringContextTie class - * in the implementation-spring-runtime module for what the tie does. - */ -public class SpringXMLBeanDefinitionLoaderStub implements SpringXMLBeanDefinitionLoader { - private final static String TIE = "org.apache.tuscany.sca.implementation.spring.processor.tie.SpringXMLLoaderTie"; - - private static Method createApplicationContext; - - public SpringXMLBeanDefinitionLoaderStub() throws Exception { - synchronized (SpringXMLBeanDefinitionLoaderStub.class) { - if (createApplicationContext == null) { - Class<?> tieClass = Class.forName(TIE, false, Thread.currentThread().getContextClassLoader()); - createApplicationContext = - tieClass.getMethod("createApplicationContext", Object.class, ClassLoader.class, List.class); - } - } - } - - public Object createApplicationContext(Object scaParentContext, ClassLoader classLoader, List<URL> resources) - throws Exception { - return createApplicationContext.invoke(null, scaParentContext, classLoader, resources); - } - - public Object load(List<URL> resources, - List<SpringSCAServiceElement> serviceElements, - List<SpringSCAReferenceElement> referenceElements, - List<SpringSCAPropertyElement> propertyElements, - List<SpringBeanElement> beanElements, - ProcessorContext context) { - try { - Object appContext = - createApplicationContext(null, Thread.currentThread().getContextClassLoader(), resources); - Class<?> cls = appContext.getClass(); - Method method = cls.getMethod("getElements", Class.class); - SpringSCAServiceElement[] serviceArray = - (SpringSCAServiceElement[])method.invoke(appContext, SpringSCAServiceElement.class); - serviceElements.addAll(Arrays.asList(serviceArray)); - - SpringSCAReferenceElement[] referenceArray = - (SpringSCAReferenceElement[])method.invoke(appContext, SpringSCAReferenceElement.class); - referenceElements.addAll(Arrays.asList(referenceArray)); - - SpringSCAPropertyElement[] propertyArray = - (SpringSCAPropertyElement[])method.invoke(appContext, SpringSCAPropertyElement.class); - propertyElements.addAll(Arrays.asList(propertyArray)); - - SpringBeanElement[] beanArray = (SpringBeanElement[])method.invoke(appContext, SpringBeanElement.class); - beanElements.addAll(Arrays.asList(beanArray)); - - return appContext; - } catch (Throwable e) { - throw new ServiceRuntimeException(e); - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/ComponentTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/ComponentTie.java deleted file mode 100644 index 882aa587e5..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/ComponentTie.java +++ /dev/null @@ -1,41 +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.spring.provider.stub; - -/** - * This is the Tuscany side tie for the corresponding Spring runtime side stub class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the ComponentStub class - * in the implementation-spring-runtime module for what the stub does. - */ -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -public class ComponentTie { - - private RuntimeComponent component; - - public ComponentTie(RuntimeComponent component) { - this.component = component; - } - - public Object getService(Class<?> type, String name) { - return component.getComponentContext().getService(type, name); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/PropertyValueTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/PropertyValueTie.java deleted file mode 100644 index 5e0c5263c2..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/PropertyValueTie.java +++ /dev/null @@ -1,53 +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.spring.provider.stub; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * This is the Tuscany side tie for the corresponding Spring runtime side stub class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the PropertyValueStub class - * in the implementation-spring-runtime module for what the stub does. - */ -public class PropertyValueTie { - - private RuntimeComponent component; - private PropertyValueFactory propertyFactory; - - public PropertyValueTie(RuntimeComponent component, PropertyValueFactory propertyFactory) { - this.component = component; - this.propertyFactory = propertyFactory; - } - - public Object getPropertyObj(Class<?> type, String name) { - List<ComponentProperty> props = component.getProperties(); - for (ComponentProperty prop : props) { - if (prop.getName().equals(name)) { - return propertyFactory.createPropertyValue(prop, type); - } - } - return null; // property name not found - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringApplicationContextAccessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringApplicationContextAccessor.java deleted file mode 100644 index 84a65bcf17..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringApplicationContextAccessor.java +++ /dev/null @@ -1,39 +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.spring.provider.stub; - -/** - * A utility to receive the parent Spring application context - */ -public interface SpringApplicationContextAccessor { - /** - * Get the parent Spring application context for the hosting environment. This will be used as the parent - * application context for implementation.spring components - * @return The parent application context - */ - Object getParentApplicationContext(); - - /** - * Set the root Spring application context. This is particually useful for Spring web integration where Spring - * creates WebApplicationContext and keeps it in the ServletContext - * @param parentApplicationContext The parent application context - */ - void setParentApplicationContext(Object parentApplicationContext); -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringContextStub.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringContextStub.java deleted file mode 100644 index 062da4b2d2..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringContextStub.java +++ /dev/null @@ -1,142 +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.spring.provider.stub; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.List; - -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * This is the Tuscany side stub for the corresponding runtime tie class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the SpringContextTie class - * in the implementation-spring-runtime module for what the tie does. - */ -public class SpringContextStub { - - private static final String SPRING_IMPLEMENTATION_STUB = - "org.apache.tuscany.sca.implementation.spring.context.tie.SpringImplementationStub"; - private static final String SPRING_CONTEXT_TIE = - "org.apache.tuscany.sca.implementation.spring.context.tie.SpringContextTie"; - private Object tie; - private Method startMethod; - private Method closeMethod; - private Method getBeanMethod; - - public SpringContextStub(RuntimeComponent component, - SpringImplementation implementation, - Object parentApplicationContext, - ProxyFactory proxyService, - PropertyValueFactory propertyValueObjectFactory) { - - initTie(component, implementation, parentApplicationContext, propertyValueObjectFactory); - - } - - private void initTie(RuntimeComponent component, - SpringImplementation implementation, - Object parentApplicationContext, - PropertyValueFactory propertyValueObjectFactory) { - - // TODO: what class loader to use? - ClassLoader cl = Thread.currentThread().getContextClassLoader(); - - try { - - Class<?> stubClass = Class.forName(SPRING_IMPLEMENTATION_STUB, true, cl); - Constructor<?> stubConstructor = stubClass.getConstructor(new Class<?>[] {Object.class}); - Object stub = - stubConstructor.newInstance(new SpringImplementationTie(implementation, parentApplicationContext, - component, propertyValueObjectFactory)); - - Class<?> tieClass = Class.forName(SPRING_CONTEXT_TIE, true, cl); - Constructor<?> tieConstructor = tieClass.getConstructor(new Class<?>[] {stubClass, List.class}); - this.tie = tieConstructor.newInstance(stub, implementation.getResource()); - - this.startMethod = tieClass.getMethod("start"); - this.closeMethod = tieClass.getMethod("close"); - this.getBeanMethod = tieClass.getMethod("getBean", String.class); - - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } catch (SecurityException e) { - throw new RuntimeException(e); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (InstantiationException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - public void start() { - try { - startMethod.invoke(tie); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - public void close() { - try { - closeMethod.invoke(tie); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - public Object getBean(String id) throws SpringInvocationException { - try { - - return getBeanMethod.invoke(tie, id); - - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProvider.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProvider.java deleted file mode 100644 index e0207b9f12..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProvider.java +++ /dev/null @@ -1,80 +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.spring.provider.stub; - -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.interfacedef.Operation; -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; - -/** - * A provider class for runtime Spring implementation instances - * @version $Rev$ $Date$ - */ -public class SpringImplementationProvider implements ImplementationProvider { - private RuntimeComponent component; - - // A Spring application context object - private SpringContextStub springContext; - - /** - * Constructor for the provider - takes a component definition and a Spring implementation - * description - * @param component - the component in the assembly - * @param implementation - the implementation - */ - public SpringImplementationProvider(RuntimeComponent component, - SpringImplementation implementation, - Object parentApplicationContext, - ProxyFactory proxyService, - PropertyValueFactory propertyValueObjectFactory) { - super(); - this.component = component; - - springContext = new SpringContextStub(component, implementation, parentApplicationContext, proxyService, propertyValueObjectFactory); - - } // end constructor - - public Invoker createInvoker(RuntimeComponentService service, Operation operation) { - return new SpringInvoker(component, springContext, service, operation); - } - - public boolean supportsOneWayInvocation() { - return false; - } - - /** - * Start this Spring implementation instance - */ - public void start() { - springContext.start(); - } - - /** - * Stop this implementation instance - */ - public void stop() { - springContext.close(); - } - -} // end class SpringImplementationProvider diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProviderFactory.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProviderFactory.java deleted file mode 100644 index d402ff2eb6..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationProviderFactory.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.provider.stub; - -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; -import org.apache.tuscany.sca.core.invocation.ProxyFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.provider.ImplementationProvider; -import org.apache.tuscany.sca.provider.ImplementationProviderFactory; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * ImplementationProviderFactory for Spring implementation type - * @version $Rev$ $Date$ - * - */ -public class SpringImplementationProviderFactory implements ImplementationProviderFactory<SpringImplementation> { - private ProxyFactory proxyFactory; - private PropertyValueFactory propertyFactory; - private SpringApplicationContextAccessor contextAccessor; - - /** - * Simple constructor - * - */ - public SpringImplementationProviderFactory(ExtensionPointRegistry registry) { - super(); - UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class); - contextAccessor = utilities.getUtility(SpringApplicationContextAccessor.class); - proxyFactory = ExtensibleProxyFactory.getInstance(registry); - propertyFactory = utilities.getUtility(PropertyValueFactory.class); - } - - /** - * Returns a SpringImplementationProvider for a given component and Spring implementation - * @param component the component for which implementation instances are required - * @param implementation the Spring implementation with details of the component - * implementation - * @return the SpringImplementationProvider for the specified component - */ - public ImplementationProvider createImplementationProvider(RuntimeComponent component, - SpringImplementation implementation) { - Object parentApplicationContext = - (contextAccessor != null) ? contextAccessor.getParentApplicationContext() : null; - return new SpringImplementationProvider(component, implementation, parentApplicationContext, proxyFactory, - propertyFactory); - } - - /** - * Returns the class of the Spring implementation - */ - public Class<SpringImplementation> getModelType() { - return SpringImplementation.class; - } - -} // end class SpringImplementationProviderFactory diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationTie.java deleted file mode 100644 index fc75faed21..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringImplementationTie.java +++ /dev/null @@ -1,156 +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.spring.provider.stub; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.ComponentProperty; -import org.apache.tuscany.sca.assembly.Property; -import org.apache.tuscany.sca.assembly.Reference; -import org.apache.tuscany.sca.context.PropertyValueFactory; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.runtime.RuntimeComponent; - -/** - * This is the Tuscany side tie for the corresponding runtime stub class. - * It enables the Sping code in the runtime module to invoke methods on a - * Tuscany SpringImplementation without the Spring runtime module - * needing to know about any Tuscany classes. See the SpringImplementationStub class - * in the implementation-spring-runtime module for what the stub does. - */ -public class SpringImplementationTie { - - private SpringImplementation implementation; - private Object parentApplicationContext; - private RuntimeComponent component; - private PropertyValueFactory propertyFactory; - - public SpringImplementationTie(SpringImplementation implementation, - Object parentApplicationContext, - RuntimeComponent component, - PropertyValueFactory propertyFactory) { - this.implementation = implementation; - this.component = component; - this.propertyFactory = propertyFactory; - this.parentApplicationContext = parentApplicationContext; - } - - public String getURI() { - return implementation.getURI(); - } - - public String getComponentName() { - return component.getName(); - } - - /** - * Method to create a Java Bean for a Property value - * @param <B> the class type of the Bean - * @param requiredType - a Class object for the required type - * @param name - the Property name - * @return - a Bean of the specified property, with value set - */ - private <B> B getPropertyBean(Class<?> requiredType, String name) { - B propertyObject = null; - // Get the component's list of properties - List<ComponentProperty> props = component.getProperties(); - for (ComponentProperty prop : props) { - if (prop.getName().equals(name)) { - // On finding the property, create a factory for it and create a Bean using - // the factory - propertyObject = (B) propertyFactory.createPropertyValue(prop, requiredType); - } // end if - } // end for - - return propertyObject; - } - - /** - * Creates a proxy Bean for a reference - * @param <B> the Business interface type for the reference - * @param businessInterface - the business interface as a Class - * @param referenceName - the name of the Reference - * @return an Bean of the type defined by <B> - */ - private <B> B getService(Class<B> businessInterface, String referenceName) { - return component.getComponentContext().getService(businessInterface, referenceName); - } - - /** - * Get a Bean for a reference or for a property. - * - * @param name - the name of the Bean required - * @param requiredType - the required type of the Bean (either a Java class or a Java interface) - * @return Object - a Bean which matches the requested bean - */ - public Object getBean(String name, Class<?> requiredType) { - // The expectation is that the requested Bean is either a reference or a property - // from the Spring context - for (Reference reference : implementation.getReferences()) { - if (reference.getName().equals(name)) { - // Extract the Java interface for the reference (it can't be any other interface type - // for a Spring application context) - if (requiredType == null) { - JavaInterface javaInterface = (JavaInterface)reference.getInterfaceContract().getInterface(); - requiredType = javaInterface.getJavaClass(); - } - // Create and return the proxy for the reference - return getService(requiredType, reference.getName()); - } // end if - } // end for - - // For a property, get the name and the required Java type and create a Bean - // of that type with the value inserted. - for (Property property : implementation.getProperties()) { - if (property.getName().equals(name)) { - if (requiredType == null) { - // The following code only deals with a subset of types and was superceded - // by the information from the implementation (which uses Classes as found - // in the Spring implementation itself. - //requiredType = JavaXMLMapper.getJavaType( property.getXSDType() ); - requiredType = implementation.getPropertyClass(name); - } - return getPropertyBean(requiredType, property.getName()); - } // end if - } // end for - // TODO: NoSuchBeanException - // throw new RuntimeException("Unable to find Bean with name " + name); - return null; - - } // end method getBean( String, Class ) - - public Object getComponentTie() { - return new ComponentTie(component); - } - - public Object getPropertyValueTie() { - return new PropertyValueTie(component, propertyFactory); - } - - public ClassLoader getClassLoader() { - return implementation.getClassLoader(); - } - - public Object getParentApplicationContext() { - return parentApplicationContext; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvocationException.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvocationException.java deleted file mode 100644 index 909a640563..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvocationException.java +++ /dev/null @@ -1,40 +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.spring.provider.stub; - -/** - * @version $Rev$ $Date$ - */ -public class SpringInvocationException extends Exception { - - private static final long serialVersionUID = -1157790036638157513L; - - public SpringInvocationException(String msg) { - super(msg); - } - - public SpringInvocationException(Throwable e) { - super(e); - } - - public SpringInvocationException(String msg, Throwable e) { - super(msg, e); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvoker.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvoker.java deleted file mode 100644 index 7d73eb5e6a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/stub/SpringInvoker.java +++ /dev/null @@ -1,125 +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.spring.provider.stub; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.impl.JavaInterfaceUtil; -import org.apache.tuscany.sca.invocation.Invoker; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; - -/** - * Initial implementation of a Spring bean invoker - * @version $Rev$ $Date$ - */ -public class SpringInvoker implements Invoker { - - private Method theMethod = null; - private Object bean; - private SpringBeanElement beanElement; - private boolean badInvoker = false; - - private SpringContextStub springContext; - private Operation operation; - - /** - * SpringInvoker constructor - * @param component - the Spring component to invoke - * @param service - the service to invoke - * @param operation - the operation to invoke - */ - public SpringInvoker(RuntimeComponent component, - SpringContextStub springContext, - RuntimeComponentService service, - Operation operation) { - - this.springContext = springContext; - this.operation = operation; - - // From the component and the service, identify the Spring Bean which is the target - SpringImplementation theImplementation = (SpringImplementation)component.getImplementation(); - beanElement = theImplementation.getBeanFromService(service.getService()); - - if (beanElement == null) { - badInvoker = true; - return; - } - - } // end constructor SpringInvoker - - // Lazy-load the method to avoid timing problems with the Spring Context - private void setupMethod() throws SpringInvocationException { - try { - bean = springContext.getBean(beanElement.getId()); - Class<?> beanClass = bean.getClass(); - theMethod = JavaInterfaceUtil.findMethod(beanClass, operation); - //System.out.println("SpringInvoker - found method " + theMethod.getName() ); - } catch (NoSuchMethodException e) { - throw new SpringInvocationException(e); - } - } - - private Object doInvoke(Object payload) throws SpringInvocationException { - if (theMethod == null) - setupMethod(); - - if (badInvoker) - throw new SpringInvocationException("Spring invoker incorrectly configured"); - // Invoke the method on the Spring bean using the payload, returning the results - try { - Object ret; - - if (payload != null && !payload.getClass().isArray()) { - ret = theMethod.invoke(bean, payload); - } else { - ret = theMethod.invoke(bean, (Object[])payload); - } - return ret; - } catch (InvocationTargetException e) { - throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", - e.getCause()); - } catch (Exception e) { - throw new SpringInvocationException("Spring invoker invoke method '" + theMethod.getName() + "' error.", e); - } - - } // end method doInvoke - - /** - * @param msg the message to invoke on the target bean - */ - public Message invoke(Message msg) { - try { - Object resp = doInvoke(msg.getBody()); - msg.setBody(resp); - } catch (SpringInvocationException e) { - msg.setFaultBody(e.getCause()); - } catch (Throwable e) { - msg.setFaultBody(e); - } - //System.out.println("Spring Invoker - invoke called"); - return msg; - } // end method invoke - -} // end class SpringInvoker diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader deleted file mode 100644 index 0a46baa13b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader +++ /dev/null @@ -1,17 +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. -org.apache.tuscany.sca.implementation.spring.processor.stub.SpringXMLBeanDefinitionLoaderStub;ranking=50
\ No newline at end of file diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory deleted file mode 100644 index e037ea60f5..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-stub/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.ImplementationProviderFactory +++ /dev/null @@ -1,20 +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.
-
-# Implementation class for the implementation extension
-org.apache.tuscany.sca.implementation.spring.provider.stub.SpringImplementationProviderFactory;model=org.apache.tuscany.sca.implementation.spring.SpringImplementation;ranking=50
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/LICENSE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/META-INF/MANIFEST.MF deleted file mode 100644 index 5d452244d2..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/META-INF/MANIFEST.MF +++ /dev/null @@ -1,25 +0,0 @@ -Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA Spring Implementation Runtime Model
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Spring Implementation Runtime Model
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.spring.tie
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 -Import-Package: org.oasisopen.sca;version="2.0.0",
- org.oasisopen.sca.annotation;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/NOTICE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/NOTICE deleted file mode 100644 index 1325efd8bf..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/README b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/README deleted file mode 100644 index e1b1f98fe0..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/README +++ /dev/null @@ -1,9 +0,0 @@ -Note that the implementation spring modules have a different structure from other extensions.
-
-The aim is to have the Tuscany runtime embedded in a container with the Tuscany classes hidden
-from user applications and the Spring jar's packaged with the application. That means that the
-Tuscany code has no visibilty of the Spring classes and visa-versa. To implement that the
-implementation-spring module has no dependencies on Spring and the implementation-spring-runtime
-module has no dependencies on Tuscany (other than the sca-api), and reflection is used to call
-methods between the modules.
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/pom.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/pom.xml deleted file mode 100644 index c92a0c05dd..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-spring-tie</artifactId> - <name>Apache Tuscany SCA Spring Implementation Runtime Tie</name> - - <dependencies> - - <!-- **************************************** --> - <!-- * * --> - <!-- * DONT ADD ANY TUSCANY DEPENDENCIES!!! * --> - <!-- * * --> - <!-- * See the README for details why not * --> - <!-- * * --> - <!-- * * --> - <!-- **************************************** --> - - <!-- SCA API dependency --> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-sca-api</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <scope>provided</scope> - </dependency> - - <!-- Spring dependencies... --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-core</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-beans</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - </dependencies> -</project> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAGenericApplicationContext.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAGenericApplicationContext.java deleted file mode 100644 index 69e2ee2865..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAGenericApplicationContext.java +++ /dev/null @@ -1,176 +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.spring.context.tie; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringConstructorArgElement; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringElementTie; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringPropertyElement; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAServiceElement; -import org.springframework.beans.MutablePropertyValues; -import org.springframework.beans.PropertyValue; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.config.BeanReference; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.config.ConstructorArgumentValues; -import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder; -import org.springframework.beans.factory.config.TypedStringValue; -import org.springframework.beans.factory.support.DefaultListableBeanFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.GenericApplicationContext; - -public class SCAGenericApplicationContext extends GenericApplicationContext { - - private ClassLoader classloader = null; - private List<SpringSCAPropertyElement> propertyElements = new ArrayList<SpringSCAPropertyElement>(); - private List<SpringSCAServiceElement> serviceElements = new ArrayList<SpringSCAServiceElement>(); - private List<SpringSCAReferenceElement> referenceElements = new ArrayList<SpringSCAReferenceElement>(); - private List<SpringBeanElement> beanElements; - - public SCAGenericApplicationContext(DefaultListableBeanFactory beanFactory, - ApplicationContext parent, - ClassLoader classloader) { - super(beanFactory, parent); - this.classloader = classloader; - } - - public SCAGenericApplicationContext(ApplicationContext parent, ClassLoader classloader) { - super(parent); - this.classloader = classloader; - } - - @Override - protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) { - beanFactory.setBeanClassLoader(classloader); - } - - public void addSCAPropertyElement(SpringSCAPropertyElement propertyElement) { - propertyElements.add(propertyElement); - } - - public void addSCAServiceElement(SpringSCAServiceElement serviceElement) { - serviceElements.add(serviceElement); - } - - public void addSCAReferenceElement(SpringSCAReferenceElement referenceElement) { - referenceElements.add(referenceElement); - } - - public synchronized List<SpringBeanElement> getBeanElements() { - if (beanElements == null) { - beanElements = new ArrayList<SpringBeanElement>(); - for (String name : getBeanDefinitionNames()) { - BeanDefinition def = getBeanDefinition(name); - SpringBeanElement beanElement = new SpringBeanElement(name, def.getBeanClassName()); - beanElements.add(beanElement); - beanElement.setAbstractBean(def.isAbstract()); - beanElement.setFactoryBeanAttribute(def.getFactoryBeanName() != null); - beanElement.setFactoryMethodAttribute(def.getFactoryMethodName() != null); - beanElement.setParentAttribute(def.getParentName() != null); - beanElement.setInnerBean(beanElement.getId() == null); - - ConstructorArgumentValues args = def.getConstructorArgumentValues(); - for (Map.Entry<Integer, ValueHolder> e: args.getIndexedArgumentValues().entrySet()) { - ValueHolder holder = e.getValue(); - SpringConstructorArgElement arg = new SpringConstructorArgElement(holder.getType()); - arg.setIndex(e.getKey()); - beanElement.addCustructorArgs(arg); - } - - MutablePropertyValues values = def.getPropertyValues(); - for (PropertyValue p : values.getPropertyValueList()) { - SpringPropertyElement propertyElement = new SpringPropertyElement(p.getName()); - Object value = p.getValue(); - configurePropertyElement(propertyElement, value); - beanElement.getProperties().add(propertyElement); - } - } - } - return beanElements; - } - - public void configurePropertyElement(SpringPropertyElement propertyElement, Object value) { - if (value instanceof BeanReference) { - BeanReference beanRef = (BeanReference)value; - propertyElement.addRef(beanRef.getBeanName()); - } else if (value instanceof Collection) { - Collection collection = (Collection)value; - for (Object item : collection) { - configurePropertyElement(propertyElement, item); - } - } else if (value instanceof TypedStringValue) { - TypedStringValue stringValue = (TypedStringValue)value; - propertyElement.addValue(stringValue.getValue()); - } else { - if (value != null) { - propertyElement.addValue(value.toString()); - } - } - } - - public List<SpringSCAPropertyElement> getPropertyElements() { - return propertyElements; - } - - public List<SpringSCAServiceElement> getServiceElements() { - return serviceElements; - } - - public List<SpringSCAReferenceElement> getReferenceElements() { - return referenceElements; - } - - public <T> T[] getElements(Class<T> type) { - if (type.getSimpleName().equals(SpringSCAPropertyElement.class.getSimpleName())) { - T[] elements = (T[])Array.newInstance(type, getPropertyElements().size()); - for (int i = 0; i < elements.length; i++) { - elements[i] = SpringElementTie.copy(getPropertyElements().get(i), type, type); - } - return elements; - } else if (type.getSimpleName().equals(SpringSCAReferenceElement.class.getSimpleName())) { - T[] elements = (T[])Array.newInstance(type, getReferenceElements().size()); - for (int i = 0; i < elements.length; i++) { - elements[i] = SpringElementTie.copy(getReferenceElements().get(i), type, type); - } - return elements; - } else if (type.getSimpleName().equals(SpringSCAServiceElement.class.getSimpleName())) { - T[] elements = (T[])Array.newInstance(type, getServiceElements().size()); - for (int i = 0; i < elements.length; i++) { - elements[i] = SpringElementTie.copy(getServiceElements().get(i), type, type); - } - return elements; - } else if (type.getSimpleName().equals(SpringBeanElement.class.getSimpleName())) { - T[] elements = (T[])Array.newInstance(type, getBeanElements().size()); - for (int i = 0; i < elements.length; i++) { - elements[i] = SpringElementTie.copy(getBeanElements().get(i), type, type); - } - return elements; - } else { - throw new IllegalArgumentException(type + " is not supported"); - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAParentApplicationContext.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAParentApplicationContext.java deleted file mode 100644 index d2b35ce74e..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SCAParentApplicationContext.java +++ /dev/null @@ -1,212 +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.spring.context.tie; - -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.util.Locale; -import java.util.Map; - -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationEvent; -import org.springframework.context.MessageSourceResolvable; -import org.springframework.context.NoSuchMessageException; -import org.springframework.core.io.Resource; - -/** - * A Spring ParentApplicationContext for a given Spring Implementation - * - * The Parent application context is responsible for handling those entities within a Spring - * application context that actually belong to SCA rather than to Spring. The principal things - * are Properties and References. These may be present either through explicit <sca:property/> - * and <sca:reference/> elements in the application context or they may be implicit through - * unresolved Spring bean <property.../> elements. In either case, it is the Parent application - * context that must provide Spring beans that correspond to the property or reference, as derived - * from the SCA composite in which the Spring application context is an implementation. - * - * @version $Rev$ $Date$ - */ -public class SCAParentApplicationContext implements ApplicationContext { - - // The Spring implementation for which this is the parent application context - private SpringImplementationStub implementation; - - private static final String[] EMPTY_ARRAY = new String[0]; - - public SCAParentApplicationContext(SpringImplementationStub implementation) { - this.implementation = implementation; - } // end constructor - - public Object getBean(String name) throws BeansException { - return getBean(name, (Class)null); - } - - /** - * Get a Bean for a reference or for a property. - * - * @param name - the name of the Bean required - * @param requiredType - the required type of the Bean (either a Java class or a Java interface) - * @return Object - a Bean which matches the requested bean - */ - public Object getBean(String name, Class requiredType) throws BeansException { - Object bean = implementation.getBean(name, requiredType); - if (bean == null && getParent() != null) { - bean = getParent().getBean(name, requiredType); - } - if (bean == null) { - throw new NoSuchBeanDefinitionException("Unable to find Bean with name " + name); - } else { - return bean; - } - } // end method getBean( String, Class ) - - public Object getBean(String name, Object[] args) throws BeansException { - return getBean(name, ((Class)null)); - } - - public <T> T getBean(Class<T> clazz) throws BeansException { - return clazz.cast(getBean(clazz.getName(), clazz)); - } - - public Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> clazz) throws BeansException { - return null; - } - - public <A extends Annotation> A findAnnotationOnBean(String arg0, Class<A> clazz) { - return null; - } - - public boolean containsBean(String name) { - // TODO - return false; - } - - public boolean isSingleton(String name) throws NoSuchBeanDefinitionException { - // TODO - return false; - } - - public boolean isTypeMatch(String name, Class targetType) throws NoSuchBeanDefinitionException { - throw new UnsupportedOperationException(); - } - - public Class getType(String name) throws NoSuchBeanDefinitionException { - return null; - } - - public String[] getAliases(String name) throws NoSuchBeanDefinitionException { - return EMPTY_ARRAY; - } - - public AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException { - return null; - } - - public String getId() { - return this.toString(); - } - - public String getDisplayName() { - return implementation.getURI(); - } - - public long getStartupDate() { - return 0; - } - - public boolean containsBeanDefinition(String beanName) { - return false; - } - - public int getBeanDefinitionCount() { - return 0; - } - - public String[] getBeanDefinitionNames() { - return new String[0]; - } - - public String[] getBeanNamesForType(Class type) { - return new String[0]; - } - - public String[] getBeanNamesForType(Class type, boolean includePrototypes, boolean includeFactoryBeans) { - return new String[0]; - } - - public Map getBeansOfType(Class type) throws BeansException { - return null; - } - - public Map getBeansOfType(Class type, boolean includePrototypes, boolean includeFactoryBeans) throws BeansException { - return null; - } - - public boolean isPrototype(String theString) { - return false; - } - - public BeanFactory getParentBeanFactory() { - return null; - } - - public boolean containsLocalBean(String name) { - return false; - } - - public String getMessage(String code, Object[] args, String defaultMessage, Locale locale) { - return null; - } - - public String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException { - return null; - } - - public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException { - return null; - } - - public void publishEvent(ApplicationEvent event) { - - } - - public Resource[] getResources(String locationPattern) throws IOException { - return new Resource[0]; - } - - public Resource getResource(String location) { - return null; - } - - public ClassLoader getClassLoader() { - // REVIEW: this is almost certainly flawed, but it's not clear how the SCA runtime's - // resource loading mechanism is exposed right now. - return this.getClass().getClassLoader(); - } - - @Override - public ApplicationContext getParent() { - return implementation.getParentApplicationContext(); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringContextTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringContextTie.java deleted file mode 100644 index 8bcdc8108d..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringContextTie.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.spring.context.tie; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.implementation.spring.processor.tie.ComponentNameAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.tie.ComponentStub; -import org.apache.tuscany.sca.implementation.spring.processor.tie.ConstructorAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.tie.InitDestroyAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.tie.PropertyAnnotationProcessor; -import org.apache.tuscany.sca.implementation.spring.processor.tie.PropertyValueStub; -import org.apache.tuscany.sca.implementation.spring.processor.tie.ReferenceAnnotationProcessor; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.AbstractApplicationContext; -import org.springframework.context.support.GenericApplicationContext; -import org.springframework.core.io.UrlResource; - -/** - * This is the runtime side tie for the corresponding tuscany side stub class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the SpringContextStub class - * in the implementation-spring module for what the stub does. - */ -public class SpringContextTie { - - private AbstractApplicationContext springContext; - private SpringImplementationStub implementation; - - public SpringContextTie(SpringImplementationStub implementation, List<URL> resource) { - this.implementation = implementation; - SCAParentApplicationContext scaParentContext = new SCAParentApplicationContext(implementation); - springContext = createApplicationContext(scaParentContext, resource); - } - - public ApplicationContext getApplicationContext() { - return springContext; - } - - public void start() { - // Do refresh here to ensure that Spring Beans are not touched before the SCA config process is complete... - springContext.refresh(); - springContext.start(); - } - - public void close() { - springContext.close(); - if (springContext instanceof GenericApplicationContext) { - springContext.stop(); - } - } - - /** - * Include BeanPostProcessor to deal with SCA Annotations in Spring Bean - */ - private AbstractApplicationContext createApplicationContext(SCAParentApplicationContext scaParentContext, - List<URL> resources) { - - GenericApplicationContext appCtx = - new SCAGenericApplicationContext(scaParentContext, implementation.getClassLoader()); - XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appCtx); - - // REVIEW: [rfeng] How do we control the schema validation - xmlReader.setValidating(false); - - for (URL resource : resources) { - xmlReader.loadBeanDefinitions(new UrlResource(resource)); - } - xmlReader.setBeanClassLoader(implementation.getClassLoader()); - includeAnnotationProcessors(appCtx.getBeanFactory()); - return appCtx; - - } - - public Object getBean(String id) throws BeansException { - return springContext.getBean(id); - } - - /** - * Include BeanPostProcessor to deal with SCA Annotations in Spring Bean - */ - private void includeAnnotationProcessors(ConfigurableListableBeanFactory beanFactory) { - - // Processor to deal with @Init and @Destroy SCA Annotations - BeanPostProcessor initDestroyProcessor = new InitDestroyAnnotationProcessor(); - beanFactory.addBeanPostProcessor(initDestroyProcessor); - - // Processor to deal with @Reference SCA Annotations - ComponentStub component = new ComponentStub(implementation.getComponentTie()); - BeanPostProcessor referenceProcessor = new ReferenceAnnotationProcessor(component); - beanFactory.addBeanPostProcessor(referenceProcessor); - - // Processor to deal with @Property SCA Annotations - PropertyValueStub pvs = new PropertyValueStub(implementation.getPropertyValueTie()); - BeanPostProcessor propertyProcessor = new PropertyAnnotationProcessor(pvs); - beanFactory.addBeanPostProcessor(propertyProcessor); - - // Processor to deal with @ComponentName SCA Annotations - BeanPostProcessor componentNameProcessor = - new ComponentNameAnnotationProcessor(implementation.getComponentName()); - beanFactory.addBeanPostProcessor(componentNameProcessor); - - // Processor to deal with @Constructor SCA Annotations - BeanPostProcessor constructorProcessor = new ConstructorAnnotationProcessor(); - beanFactory.addBeanPostProcessor(constructorProcessor); - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringImplementationStub.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringImplementationStub.java deleted file mode 100644 index 5ce52e668c..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/context/tie/SpringImplementationStub.java +++ /dev/null @@ -1,146 +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.spring.context.tie; - -import java.lang.reflect.Method; - -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; - -/** - * This is the runtime side stub for the corresponding Tuscany-side stub class. - * It enables the Spring code in the runtime module to invoke methods on a - * Tuscany SpringImplementation without the Spring runtime module - * needing to know about any Tuscany classes. See the SpringImplementationTie class - * in the implementation-spring module for what the tie does. - */ -public class SpringImplementationStub { - - Object tie; - Method getURI; - Method getBean; - Method getComponentName; - Method getComponentTie; - Method getPropertyValueTie; - Method getClassLoader; - Method getParentApplicationContext; - - public SpringImplementationStub(Object tie) { - this.tie = tie; - Class<?> tieClass = tie.getClass(); - try { - getURI = tieClass.getMethod("getURI", new Class<?>[] {}); - getBean = tieClass.getMethod("getBean", new Class<?>[] {String.class, Class.class}); - getComponentName = tieClass.getMethod("getComponentName"); - getComponentTie = tieClass.getMethod("getComponentTie"); - getPropertyValueTie = tieClass.getMethod("getPropertyValueTie"); - getClassLoader = tieClass.getMethod("getClassLoader"); - getParentApplicationContext = tieClass.getMethod("getParentApplicationContext"); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public String getURI() { - try { - - return (String)getURI.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get a Bean for a reference or for a property. - * - * @param name - the name of the Bean required - * @param requiredType - the required type of the Bean (either a Java class or a Java interface) - * @return Object - a Bean which matches the requested bean - */ - public Object getBean(String name, Class<?> requiredType) throws BeansException { - try { - - Object bean = getBean.invoke(tie, new Object[] {name, requiredType}); -// if (bean == null) { -// throw new NoSuchBeanDefinitionException("Unable to find Bean with name " + name); -// } - return bean; - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public String getComponentName() { - try { - - return (String)getComponentName.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public Object getComponentTie() { - try { - - return getComponentTie.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public Object getPropertyValueTie() { - try { - - return getPropertyValueTie.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public ClassLoader getClassLoader() { - try { - - return (ClassLoader)getClassLoader.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /** - * Get the parent Spring application context set by the Tuscany runtime - * @return - */ - public ApplicationContext getParentApplicationContext() { - try { - - return (ApplicationContext)getParentApplicationContext.invoke(tie); - - } catch (Exception e) { - throw new RuntimeException(e); - } - - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringBeanElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringBeanElement.java deleted file mode 100644 index 020e001a59..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringBeanElement.java +++ /dev/null @@ -1,129 +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.spring.elements.tie; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <bean> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringBeanElement { - - private String id; - private String className = null; - private boolean innerBean = false; - private boolean abstractBean = false; - private boolean parentAttribute = false; - private boolean factoryBeanAttribute = false; - private boolean factoryMethodAttribute = false; - - private List<SpringPropertyElement> properties = new ArrayList<SpringPropertyElement>(); - private List<SpringConstructorArgElement> constructorargs = new ArrayList<SpringConstructorArgElement>(); - - public SpringBeanElement(String id, String className) { - this.id = id; - this.className = className; - } - - public String getClassName() { - return className; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public List<SpringPropertyElement> getProperties() { - return properties; - } - - public void addProperty(SpringPropertyElement property) { - properties.add(property); - } - - public List<SpringConstructorArgElement> getCustructorArgs() { - return constructorargs; - } - - public void addCustructorArgs(SpringConstructorArgElement args) { - constructorargs.add(args); - } - - public boolean isInnerBean() { - return innerBean; - } - - public void setInnerBean(boolean innerBean) { - this.innerBean = innerBean; - } - - public boolean isAbstractBean() { - return abstractBean; - } - - public void setAbstractBean(boolean abstractBean) { - this.abstractBean = abstractBean; - } - - public boolean hasParentAttribute() { - return parentAttribute; - } - - public void setParentAttribute(boolean parentAttribute) { - this.parentAttribute = parentAttribute; - } - - public boolean hasFactoryBeanAttribute() { - return factoryBeanAttribute; - } - - public void setFactoryBeanAttribute(boolean factoryBeanAttribute) { - this.factoryBeanAttribute = factoryBeanAttribute; - } - - public boolean hasFactoryMethodAttribute() { - return factoryMethodAttribute; - } - - public void setFactoryMethodAttribute(boolean factoryMethodAttribute) { - this.factoryMethodAttribute = factoryMethodAttribute; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringBeanElement [id=").append(id).append(", className=").append(className) - .append(", innerBean=").append(innerBean).append(", abstractBean=").append(abstractBean) - .append(", parentAttribute=").append(parentAttribute).append(", factoryBeanAttribute=") - .append(factoryBeanAttribute).append(", factoryMethodAttribute=").append(factoryMethodAttribute) - .append(", properties=").append(properties).append(", constructorargs=").append(constructorargs) - .append("]"); - return builder.toString(); - } - -} // end class SpringBeanElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringConstructorArgElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringConstructorArgElement.java deleted file mode 100644 index 53a972b7d8..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringConstructorArgElement.java +++ /dev/null @@ -1,77 +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.spring.elements.tie; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <constructor-arg> element in a Spring application-context - * - this has ref attribute - * - * @version $Rev$ $Date$ - */ -public class SpringConstructorArgElement { - - private String type; - private int autoIndex = -1; - private int index = -1; - private List<String> refs = new ArrayList<String>(); - private List<String> values = new ArrayList<String>(); - - public SpringConstructorArgElement(String type) { - this.type = type; - } - - public String getType() { - return this.type; - } - - public List<String> getRefs() { - return this.refs; - } - - public void addRef(String ref) { - this.refs.add(ref); - } - - public int getIndex() { - return this.index; - } - - public void setIndex(int index) { - this.index = index; - } - - public int getAutoIndex() { - return this.autoIndex; - } - - public void setAutoIndex(int index) { - this.autoIndex = index; - } - - public List<String> getValues() { - return this.values; - } - - public void addValue(String value) { - this.values.add(value); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringElementTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringElementTie.java deleted file mode 100644 index c088e5d0f2..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringElementTie.java +++ /dev/null @@ -1,70 +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.spring.elements.tie; - -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** - * A hacking utility to copy beans field by field between two class loaders - */ -public class SpringElementTie { - public static <T> T copy(Object source, Class<T> cls, Type genericType) { - if (source == null) { - return null; - } - if (cls.isPrimitive()) { - return (T)source; - } - if (Collection.class.isAssignableFrom(cls)) { - ParameterizedType pType = (ParameterizedType)genericType; - Type itemType = pType.getActualTypeArguments()[0]; - Collection col = (Collection)source; - List target = new ArrayList(); - for (Object item : col) { - target.add(copy(item, (Class<?>)itemType, itemType)); - } - return (T)target; - } - if (cls.isInstance(source)) { - return cls.cast(source); - } - try { - Class<?> sourceClass = source.getClass(); - T target = cls.newInstance(); - for (Field sourceField : sourceClass.getDeclaredFields()) { - sourceField.setAccessible(true); - Field targetField = cls.getDeclaredField(sourceField.getName()); - targetField.setAccessible(true); - Object sourceFieldValue = sourceField.get(source); - Object targetFieldValue = copy(sourceFieldValue, targetField.getType(), targetField.getGenericType()); - targetField.set(target, targetFieldValue); - } - return target; - } catch (Throwable e) { - throw new IllegalArgumentException(e); - } - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringPropertyElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringPropertyElement.java deleted file mode 100644 index c0a1f2129b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringPropertyElement.java +++ /dev/null @@ -1,68 +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.spring.elements.tie; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <property> element in a Spring application-context - * - this has name and ref attributes - * - * @version $Rev$ $Date$ - */ -public class SpringPropertyElement { - - private String name; - private List<String> refs = new ArrayList<String>(); - private List<String> values = new ArrayList<String>(); - - public SpringPropertyElement(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public List<String> getRefs() { - return this.refs; - } - - public void addRef(String ref) { - this.refs.add(ref); - } - - public List<String> getValues() { - return this.values; - } - - public void addValue(String value) { - this.values.add(value); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringPropertyElement [name=").append(name).append(", refs=").append(refs).append(", values=") - .append(values).append("]"); - return builder.toString(); - } - -} // end class SpringPropertyElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAPropertyElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAPropertyElement.java deleted file mode 100644 index 3f9901abea..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAPropertyElement.java +++ /dev/null @@ -1,59 +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.spring.elements.tie; - -/** - * Represents an <sca:property> element in a Spring application-context - * - this has name and type attributes - * @version $Rev$ $Date$ - */ -public class SpringSCAPropertyElement { - - private String name; - private String type; - - public SpringSCAPropertyElement(String name, String type) { - this.name = name; - this.type = type; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAPropertyElement [name=").append(name).append(", type=").append(type).append("]"); - return builder.toString(); - } - -} // end class SpringPropertyElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java deleted file mode 100644 index 0bcbb73583..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java +++ /dev/null @@ -1,91 +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.spring.elements.tie; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.namespace.QName; - - -/** - * Represents a <sca:reference> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringSCAReferenceElement { - - private String name; - private String type; - private String defaultBean; - - private List<QName> intentNames = new ArrayList<QName>(); - private List<QName> policySetNames = new ArrayList<QName>(); - - - public SpringSCAReferenceElement(String name, String type) { - this.name = name; - this.type = type; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public void setDefaultBean(String defaultBean) { - this.defaultBean = defaultBean; - } - - public String getDefaultBean() { - return defaultBean; - } - - public List<QName> getIntentNames() { - return intentNames; - } - - public List<QName> getPolicySetNames() { - return policySetNames; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAReferenceElement [name=").append(name).append(", type=").append(type) - .append(", defaultBean=").append(defaultBean).append(", intentNames=").append(intentNames) - .append(", policySetNames=").append(policySetNames).append("]"); - return builder.toString(); - } - - -} // end class SpringSCAReferenceElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java deleted file mode 100644 index 2322d19e1f..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java +++ /dev/null @@ -1,91 +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.spring.elements.tie; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.namespace.QName; - - -/** - * Represents a <sca:service> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringSCAServiceElement { - - private String name; - private String type; - private String target; - - private List<QName> intentNames = new ArrayList<QName>(); - private List<QName> policySetNames = new ArrayList<QName>(); - - - public SpringSCAServiceElement(String name, String target) { - this.name = name; - this.target = target; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public void setTarget(String target) { - this.target = target; - } - - public String getTarget() { - return target; - } - - public List<QName> getIntentNames() { - return intentNames; - } - - public List<QName> getPolicySetNames() { - return policySetNames; - } - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAServiceElement [name=").append(name).append(", type=").append(type) - .append(", target=").append(target).append(", intentNames=").append(intentNames) - .append(", policySetNames=").append(policySetNames).append("]"); - return builder.toString(); - } - -} // end class SpringSCAServiceElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/SCANamespaceHandlerResolver.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/SCANamespaceHandlerResolver.java deleted file mode 100644 index 07c7c6a454..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/SCANamespaceHandlerResolver.java +++ /dev/null @@ -1,53 +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.spring.namespace.tie; - -import org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver; -import org.springframework.beans.factory.xml.NamespaceHandler; - -/** - * Overrides the default Spring namespace resolver to automatically register - * {@link ScaNamespaceHandler} instead of requiring a value to be supplied in a - * Spring configuration - * - * @version $Rev$ $Date$ - */ -public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver { - private static final String SCA_NAMESPACE = "http://www.springframework.org/schema/sca"; - - private ScaNamespaceHandler handler; - - public SCANamespaceHandlerResolver(ClassLoader classLoader) { - super(classLoader); - handler = new ScaNamespaceHandler(/*componentType*/); - } - - public SCANamespaceHandlerResolver(String handlerMappingsLocation, ClassLoader classLoader) { - super(classLoader, handlerMappingsLocation); - handler = new ScaNamespaceHandler(/*componentType*/); - } - - @Override - public NamespaceHandler resolve(String namespaceUri) { - if (SCA_NAMESPACE.equals(namespaceUri)) { - return handler; - } - return super.resolve(namespaceUri); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java deleted file mode 100644 index 27b1811b86..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace.tie; - -import java.util.ArrayList; -import java.util.List; -import java.util.StringTokenizer; - -import javax.xml.namespace.QName; - -import org.springframework.beans.factory.xml.NamespaceHandlerSupport; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * Handler for the <sca:> namespace in an application context - * - * @version $Rev$ $Date$ - */ -public class ScaNamespaceHandler extends NamespaceHandlerSupport { - - public ScaNamespaceHandler() { - } - - @Override - public void init() { - registerBeanDefinitionParser("reference", new ScaReferenceBeanDefinitionParser()); - registerBeanDefinitionParser("service", new ScaServiceBeanDefinitionParser()); - registerBeanDefinitionParser("property", new ScaPropertyBeanDefinitionParser()); - } - - private static String getNamespaceURI(Element element, String prefix) { - if (element == null) { - return null; - } - String name = ("".equals(prefix)) ? "xmlns" : "xmlns:" + prefix; - String ns = element.getAttribute(name); - if (ns != null && !"".equals(ns)) { - return ns; - } - Node parent = element.getParentNode(); - if (parent instanceof Element) { - return getNamespaceURI((Element)parent, prefix); - } else { - return null; - } - } - - public static List<QName> resolve(Element element, String listOfNames) { - List<QName> qnames = new ArrayList<QName>(); - StringTokenizer tokenizer = new StringTokenizer(listOfNames); - while (tokenizer.hasMoreTokens()) { - String qname = tokenizer.nextToken(); - String prefix = ""; - String local = qname; - int index = qname.indexOf(':'); - if (index != -1) { - local = qname.substring(index + 1); - prefix = qname.substring(0, index); - } - String ns = getNamespaceURI(element, prefix); - if (ns != null) { - qnames.add(new QName(ns, local, prefix)); - } else { - throw new IllegalArgumentException("Prefix " + prefix + "is not bound to a namespace"); - } - } - return qnames; - } - - public static String getAttribute(Element element, String name) { - String attr = element.getAttributeNS(null, name); - if ("".equals(attr)) { - return null; - } else { - return attr; - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaPropertyBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaPropertyBeanDefinitionParser.java deleted file mode 100644 index ad11a300ae..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaPropertyBeanDefinitionParser.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace.tie; - -import org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAPropertyElement; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:reference> element - * @version $Rev$ $Date$ - */ -public class ScaPropertyBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAPropertyElement propertyElement = - new SpringSCAPropertyElement(element.getAttributeNS(null, "name"), element.getAttributeNS(null, "type")); - context.addSCAPropertyElement(propertyElement); - } - // do nothing, this is handled by Tuscany - return null; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java deleted file mode 100644 index 8470d2ffd5..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace.tie; - -import static org.apache.tuscany.sca.implementation.spring.namespace.tie.ScaNamespaceHandler.getAttribute; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAReferenceElement; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:reference> element - * - * @version $Rev$ $Date$ - */ -public class ScaReferenceBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAReferenceElement referenceElement = - new SpringSCAReferenceElement(getAttribute(element, "name"), getAttribute(element, "type")); - referenceElement.setDefaultBean(getAttribute(element, "default")); - - String requires = getAttribute(element, "requires"); - if (requires != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, requires); - referenceElement.getIntentNames().addAll(qnames); - } - - String policySets = getAttribute(element, "policySets"); - if (policySets != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, policySets); - referenceElement.getPolicySetNames().addAll(qnames); - } - - context.addSCAReferenceElement(referenceElement); - } - - // do nothing, this is handled by Tuscany - return null; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java deleted file mode 100644 index 900356698d..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2002-2006 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package org.apache.tuscany.sca.implementation.spring.namespace.tie; - -import static org.apache.tuscany.sca.implementation.spring.namespace.tie.ScaNamespaceHandler.getAttribute; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext; -import org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAServiceElement; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.xml.BeanDefinitionParser; -import org.springframework.beans.factory.xml.ParserContext; -import org.w3c.dom.Element; - -/** - * Parser for the <sca:service/> element - * - * @version $Rev$ $Date$ - */ -public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser { - - public BeanDefinition parse(Element element, ParserContext parserContext) { - BeanDefinitionRegistry registry = parserContext.getRegistry(); - if (registry instanceof SCAGenericApplicationContext) { - SCAGenericApplicationContext context = (SCAGenericApplicationContext)registry; - SpringSCAServiceElement serviceElement = - new SpringSCAServiceElement(getAttribute(element, "name"), getAttribute(element, "target")); - serviceElement.setType(getAttribute(element, "type")); - - String requires = getAttribute(element, "requires"); - if (requires != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, requires); - serviceElement.getIntentNames().addAll(qnames); - } - - String policySets = getAttribute(element, "policySets"); - if (policySets != null) { - List<QName> qnames = ScaNamespaceHandler.resolve(element, policySets); - serviceElement.getPolicySetNames().addAll(qnames); - } - - context.addSCAServiceElement(serviceElement); - } - // do nothing, handled by Tuscany - return null; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentNameAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentNameAnnotationProcessor.java deleted file mode 100644 index 77f9f30bfd..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentNameAnnotationProcessor.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.processor.tie; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.ref.Reference; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.oasisopen.sca.annotation.ComponentName; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class ComponentNameAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> componentNameAnnotationType = ComponentName.class; - - private String componentName; - - public ComponentNameAnnotationProcessor(String componentName) { - this.componentName = componentName; - } - - /** - * Gets componentName annotation type. - */ - protected Class<? extends Annotation> getComponentNameAnnotationType() { - return this.componentNameAnnotationType; - } - - /** - * Sets componentName annotation type. - */ - public void setComponentNameAnnotationType(Class<? extends Annotation> componentNameAnnotationType) { - Assert.notNull(componentNameAnnotationType, "'componentNameAnnotationType' type must not be null."); - this.componentNameAnnotationType = componentNameAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Reference} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - Annotation annotation = field.getAnnotation(getComponentNameAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on static fields"); - } - - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on private fields"); - } - - ReflectionUtils.makeAccessible(field); - - if (field.getType().getName().equals("java.lang.String")) { - Object nameObj = componentName; - if (nameObj != null) - ReflectionUtils.setField(field, bean, nameObj); - } else { - throw new IllegalStateException( - "ComponentName annotation is supported only on java.lang.String field type."); - } - } - } - }); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - Annotation annotation = method.getAnnotation(getComponentNameAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on static methods"); - } - - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("ComponentName annotation is not supported on private methods"); - } - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException( - "ComponentName annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - - if (pd.getPropertyType().getName().equals("java.lang.String")) { - Object nameObj = componentName; - if (nameObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {nameObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting reference: " + e.getMessage(), e); - } - } - } else { - throw new IllegalStateException( - "ComponentName annotation is supported only on java.lang.String field type."); - } - } - } - }); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentStub.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentStub.java deleted file mode 100644 index 7511ac4bd5..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ComponentStub.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.spring.processor.tie; - -import java.lang.reflect.Method; - -/** - * This is the Spring runtime side stub for the corresponding Tuscany tie class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the ComponentTie class - * in the implementation-spring module for what the tie does. - */ -public class ComponentStub { - - private Object tie; - private Method getService; - - public ComponentStub(Object tie) { - this.tie = tie; - Class<?> tieClass = tie.getClass(); - try { - getService = tieClass.getMethod("getService", new Class<?>[] {Class.class, String.class}); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public Object getService(Class<?> type, String name) { - try { - - return getService.invoke(tie, type, name); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ConstructorAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ConstructorAnnotationProcessor.java deleted file mode 100644 index 503307cfd9..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ConstructorAnnotationProcessor.java +++ /dev/null @@ -1,112 +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.spring.processor.tie; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Constructor; - -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter; -import org.springframework.util.Assert; - -public class ConstructorAnnotationProcessor extends InstantiationAwareBeanPostProcessorAdapter { - - private Class<? extends Annotation> constructorAnnotationType = org.oasisopen.sca.annotation.Constructor.class; - - private Class<? extends Annotation> autowiredAnnotationType = Autowired.class; - - public ConstructorAnnotationProcessor() { - // Default constructor. - } - - /** - * Set the 'autowired' annotation type, to be used on constructors, fields, - * setter methods and arbitrary config methods. - */ - public void setAutowiredAnnotationType(Class<? extends Annotation> autowiredAnnotationType) { - Assert.notNull(autowiredAnnotationType, "'autowiredAnnotationType' must not be null"); - this.autowiredAnnotationType = autowiredAnnotationType; - } - - /** - * Return the 'autowired' annotation type. - */ - protected Class<? extends Annotation> getAutowiredAnnotationType() { - return this.autowiredAnnotationType; - } - - /** - * Return the 'constructor' annotation type. - */ - protected Class<? extends Annotation> getConstructorAnnotationType() { - return this.constructorAnnotationType; - } - - /** - * Sets the 'constructor' annotation type. - */ - public void setConstructorAnnotationType(Class<? extends Annotation> constructorAnnotationType) { - Assert.notNull(constructorAnnotationType, "'constructorAnnotationType' type must not be null."); - this.constructorAnnotationType = constructorAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - public Constructor[] determineCandidateConstructors(Class beanClass, String beanName) throws BeansException { - /*Constructor[] declaredConstructors = beanClass.getDeclaredConstructors(); - Method[] declaredMethods = beanClass.getDeclaredMethods(); - List candidates = new ArrayList(declaredConstructors.length); - - for (int i = 0; i < declaredMethods.length; i++) { - Method method = declaredMethods[i]; - Annotation annotation = method.getAnnotation(getConstructorAnnotationType()); - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Constructor annotation is not supported on static methods"); - } - - if (candidates.size() == 1) { - throw new IllegalStateException("Only one method is allowed to have constructor annotation in a bean: " + method); - } - - candidates.add(method); - } - } - - return (Constructor[]) candidates.toArray(new Constructor[candidates.size()]);*/ - return null; - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/InitDestroyAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/InitDestroyAnnotationProcessor.java deleted file mode 100644 index 390ee040f2..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/InitDestroyAnnotationProcessor.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring.processor.tie; - -import java.lang.annotation.Annotation; - -import org.oasisopen.sca.annotation.Destroy; -import org.oasisopen.sca.annotation.Init; -import org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor; - -public class InitDestroyAnnotationProcessor extends InitDestroyAnnotationBeanPostProcessor { - - private static final long serialVersionUID = 0; - - private Class<? extends Annotation> initAnnotationType = Init.class; - private Class<? extends Annotation> destroyAnnotationType = Destroy.class; - - /** - * Gets init annotation type. - */ - protected Class<? extends Annotation> getInitAnnotationType() { - return this.initAnnotationType; - } - - /** - * Sets init annotation type. - */ - /* - * public void setInitAnnotationType(Class<? extends Annotation> - * initAnnotationType) { Assert.notNull(initAnnotationType, - * "Init annotation type must not be null."); this.initAnnotationType = - * initAnnotationType; } - */ - - /** - * Gets destroy annotation type. - */ - protected Class<? extends Annotation> getDestroyAnnotationType() { - return this.destroyAnnotationType; - } - - /** - * Sets destroy annotation type. - */ - /* - * public void setDestroyAnnotationType(Class<? extends Annotation> - * destroyAnnotationType) { Assert.notNull(destroyAnnotationType, - * "Destroy annotation type must not be null."); this.destroyAnnotationType - * = destroyAnnotationType; } - */ - - public InitDestroyAnnotationProcessor() { - // Set the @Init annotation type - setInitAnnotationType(initAnnotationType); - - // Set the @Destroy annotation type - setDestroyAnnotationType(destroyAnnotationType); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyAnnotationProcessor.java deleted file mode 100644 index ce3aafd3ef..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyAnnotationProcessor.java +++ /dev/null @@ -1,163 +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.spring.processor.tie; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.oasisopen.sca.annotation.Property; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class PropertyAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> propertyAnnotationType = Property.class; - - private PropertyValueStub propertyValue; - - public PropertyAnnotationProcessor(PropertyValueStub propertyValue) { - this.propertyValue = propertyValue; - } - - /** - * Gets property annotation type. - */ - protected Class<? extends Annotation> getPropertyAnnotationType() { - return this.propertyAnnotationType; - } - - /** - * Sets property annotation type. - */ - public void setPropertyAnnotationType(Class<? extends Annotation> propertyAnnotationType) { - Assert.notNull(propertyAnnotationType, "'propertyAnnotationType' type must not be null."); - this.propertyAnnotationType = propertyAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Property} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - - Property annotation = (Property)method.getAnnotation(getPropertyAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on static methods"); - } - - /* - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on private methods"); - } - */ - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException("Property annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - if (pd != null) { - String propName = annotation.name(); - if ("".equals(propName)) { - injectProperty(bean, pd, propertyValue.getPropertyObj(pd.getPropertyType(), pd.getName())); - } else { - injectProperty(bean, pd, propertyValue.getPropertyObj(pd.getPropertyType(), propName)); - } - } - } - } - }); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - - Property annotation = (Property)field.getAnnotation(getPropertyAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on static fields"); - } - - /* - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("Property annotation is not supported on private fields"); - } - */ - - ReflectionUtils.makeAccessible(field); - - Object propertyObj = null; - String propName = annotation.name(); - if ("".equals(propName)) { - propertyObj = propertyValue.getPropertyObj(field.getType(), field.getName()); - } else { - propertyObj = propertyValue.getPropertyObj(field.getType(), propName); - } - - if (propertyObj != null) - ReflectionUtils.setField(field, bean, propertyObj); - } - } - }); - } - - public void injectProperty(Object bean, PropertyDescriptor pd, Object propertyObj) { - - if (propertyObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {propertyObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting property: " + e.getMessage(), e); - } - } - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyValueStub.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyValueStub.java deleted file mode 100644 index 5a4b57ce81..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/PropertyValueStub.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.spring.processor.tie; - -import java.lang.reflect.Method; - -/** - * This is the Spring runtime side stub for the corresponding Tuscany tie class. - * It enables the Tuscany code to invoke methods on a Spring context without - * needing to know about any Spring classes. See the PropertyValueTie class - * in the implementation-spring module for what the tie does. - */ -public class PropertyValueStub { - - private Object tie; - private Method getPropertyObj; - - public PropertyValueStub(Object tie) { - this.tie = tie; - Class<?> tieClass = tie.getClass(); - try { - getPropertyObj = tieClass.getMethod("getPropertyObj", new Class<?>[] {Class.class, String.class}); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - public Object getPropertyObj(Class<?> propertyType, String name) { - try { - - return getPropertyObj.invoke(tie, propertyType, name); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ReferenceAnnotationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ReferenceAnnotationProcessor.java deleted file mode 100644 index 24761d2cfa..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/ReferenceAnnotationProcessor.java +++ /dev/null @@ -1,167 +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.spring.processor.tie; - -import java.beans.PropertyDescriptor; -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import org.oasisopen.sca.annotation.Reference; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.util.Assert; -import org.springframework.util.ReflectionUtils; - -public class ReferenceAnnotationProcessor implements BeanPostProcessor { - - private Class<? extends Annotation> referenceAnnotationType = Reference.class; - private ComponentStub component; - - public ReferenceAnnotationProcessor(ComponentStub component) { - this.component = component; - } - - /** - * Gets referece annotation type. - */ - protected Class<? extends Annotation> getReferenceAnnotationType() { - return this.referenceAnnotationType; - } - - /** - * Sets referece annotation type. - */ - public void setReferenceAnnotationType(Class<? extends Annotation> referenceAnnotationType) { - Assert.notNull(referenceAnnotationType, "'referenceAnnotationType' type must not be null."); - this.referenceAnnotationType = referenceAnnotationType; - } - - /** - * This method is used to execute before a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { - processAnnotation(bean); - return bean; - } - - /** - * This method is used to execute after a bean's initialization callback. - * - * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) - */ - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - return bean; - } - - /** - * <p>Processes a beans fields for injection if it has a {@link Reference} annotation.</p> - */ - protected void processAnnotation(final Object bean) { - - final Class<?> clazz = bean.getClass(); - - ReflectionUtils.doWithMethods(clazz, new ReflectionUtils.MethodCallback() { - public void doWith(Method method) { - - Reference annotation = (Reference)method.getAnnotation(getReferenceAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(method.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on static methods"); - } - - /* - if (Modifier.isPrivate(method.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on private methods"); - } - */ - - if (method.getParameterTypes().length == 0) { - throw new IllegalStateException( - "Reference annotation requires at least one argument: " + method); - } - - PropertyDescriptor pd = BeanUtils.findPropertyForMethod(method); - if (pd != null) { - String refName = annotation.name(); - if ("".equals(refName)) { - injectReference(bean, pd, pd.getName()); - } else { - injectReference(bean, pd, refName); - } - } - } - } - }); - - ReflectionUtils.doWithFields(clazz, new ReflectionUtils.FieldCallback() { - public void doWith(Field field) { - - Reference annotation = (Reference)field.getAnnotation(getReferenceAnnotationType()); - - if (annotation != null) { - if (Modifier.isStatic(field.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on static fields"); - } - - /* - if (Modifier.isPrivate(field.getModifiers())) { - throw new IllegalStateException("Reference annotation is not supported on private fields"); - } - */ - - ReflectionUtils.makeAccessible(field); - - Object referenceObj = null; - String refName = annotation.name(); - if ("".equals(refName)) { - referenceObj = component.getService(field.getType(), field.getName()); - } else { - referenceObj = component.getService(field.getType(), refName); - } - - if (referenceObj != null) - ReflectionUtils.setField(field, bean, referenceObj); - } - } - }); - } - - /** - * Processes a property descriptor to inject a service. - */ - public void injectReference(Object bean, PropertyDescriptor pd, String name) { - - Object referenceObj = component.getService(pd.getPropertyType(), name); - - if (referenceObj != null) { - try { - pd.getWriteMethod().invoke(bean, new Object[] {referenceObj}); - } catch (Throwable e) { - throw new FatalBeanException("Problem injecting reference: " + e.getMessage(), e); - } - } - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/SpringXMLLoaderTie.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/SpringXMLLoaderTie.java deleted file mode 100644 index 82aa176219..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/tie/SpringXMLLoaderTie.java +++ /dev/null @@ -1,57 +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.spring.processor.tie; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext; -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.UrlResource; - -/** - * A tie that allows Tuscany to call Spring library to load the application context for the purpose of introspection - */ -public class SpringXMLLoaderTie { - - public static ApplicationContext createApplicationContext(Object scaParentContext, - ClassLoader classLoader, - List<URL> resources) { - if (classLoader == null) { - classLoader = Thread.currentThread().getContextClassLoader(); - } - - SCAGenericApplicationContext appCtx = - new SCAGenericApplicationContext((ApplicationContext)scaParentContext, classLoader); - XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appCtx); - - // REVIEW: [rfeng] How do we control the schema validation - xmlReader.setValidating(false); - - for (URL resource : resources) { - xmlReader.loadBeanDefinitions(new UrlResource(resource)); - } - - return appCtx; - - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.handlers b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.handlers deleted file mode 100644 index e7b61bfe48..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.handlers +++ /dev/null @@ -1 +0,0 @@ -http\://www.springframework.org/schema/sca=org.apache.tuscany.sca.implementation.spring.namespace.tie.ScaNamespaceHandler
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.schemas b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.schemas deleted file mode 100644 index 249cc21c13..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/META-INF/spring.schemas +++ /dev/null @@ -1 +0,0 @@ -http\://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd=org/springframework/sca/xml/spring-sca.xsd diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/org/springframework/sca/xml/spring-sca.xsd b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/org/springframework/sca/xml/spring-sca.xsd deleted file mode 100644 index dfa0b931f6..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-tie/src/main/resources/org/springframework/sca/xml/spring-sca.xsd +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<xsd:schema xmlns="http://www.springframework.org/schema/sca" xmlns:xsd="http://www.w3.org/2001/XMLSchema" - attributeFormDefault="unqualified" elementFormDefault="qualified" - targetNamespace="http://www.springframework.org/schema/sca"> - - <xsd:element name="reference"> - <xsd:complexType> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="default" use="optional"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - - <xsd:element name="property"> - <xsd:complexType> - <xsd:attribute name="id" use="optional"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - - <xsd:element name="service"> - <xsd:complexType> - <xsd:attribute name="name" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="type" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - <xsd:attribute name="target" use="required"> - <xsd:simpleType> - <xsd:restriction base="xsd:string" /> - </xsd:simpleType> - </xsd:attribute> - </xsd:complexType> - </xsd:element> - -</xsd:schema> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/LICENSE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/META-INF/MANIFEST.MF deleted file mode 100644 index 42c577b6eb..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/META-INF/MANIFEST.MF +++ /dev/null @@ -1,29 +0,0 @@ -Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA Spring Implementation WebApp Integration
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Spring Implementation Runtime Model
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.spring.webapp
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 -Import-Package: javax.servlet,
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.extensibility;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring.context;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0.0",
- org.apache.tuscany.sca.runtime;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/NOTICE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/NOTICE deleted file mode 100644 index 1325efd8bf..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/pom.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/pom.xml deleted file mode 100644 index 32715f3492..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-spring-webapp</artifactId> - <name>Apache Tuscany SCA Spring Implementation WebApp Integration</name> - - <dependencies> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-implementation-spring-runtime</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-host-http</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - - <!-- Spring dependencies... --> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-web</artifactId> - <version>3.0.2.RELEASE</version> - </dependency> - - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - <type>jar</type> - <scope>provided</scope> - </dependency> - </dependencies> -</project> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java deleted file mode 100644 index a54ef8df17..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.implementation.spring.webapp; - -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.support.ApplicationObjectSupport; - -/** - * A singleton utility class that can be added to the Spring application context to receive injection of the containing - * Spring application context. - * - * The Spring bean definition file is: org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml - */ -public class ApplicationContextAccessorBean extends ApplicationObjectSupport implements ApplicationContextAware { - public final static String BEAN_ID = "tuscanySpringApplicationContextAccessor"; - private final static ApplicationContextAccessorBean INSTANCE = new ApplicationContextAccessorBean(); - - private ApplicationContextAccessorBean() { - } - - // Spring static factory method to create the singleton instance - public static ApplicationContextAccessorBean getInstance() { - return INSTANCE; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java deleted file mode 100644 index f95ba27242..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java +++ /dev/null @@ -1,73 +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.spring.webapp; - -import java.util.logging.Logger; - -import javax.servlet.ServletContext; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.LifeCycleListener; -import org.apache.tuscany.sca.host.http.ExtensibleServletHost; -import org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor; -import org.springframework.context.ApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; - -public class SpringWebApplicationContextAccessor implements SpringApplicationContextAccessor, LifeCycleListener { - private static Logger log = Logger.getLogger(SpringWebApplicationContextAccessor.class.getName()); - private ExtensionPointRegistry registry; - private ApplicationContext parentApplicationContext; - - public SpringWebApplicationContextAccessor(ExtensionPointRegistry registry) { - super(); - this.registry = registry; - } - - @Override - public void start() { - ExtensibleServletHost servletHost = ExtensibleServletHost.getInstance(registry); - - ServletContext servletContext = servletHost.getServletContext(); - if (servletContext != null) { - parentApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext); - if (parentApplicationContext != null) { - log.info("Spring WebApplicationContext is now injected on Tuscany"); - } - } - - if (parentApplicationContext == null) { - parentApplicationContext = ApplicationContextAccessorBean.getInstance().getApplicationContext(); - } - } - - @Override - public void stop() { - parentApplicationContext = null; - } - - public ApplicationContext getParentApplicationContext() { - return parentApplicationContext; - } - - public void setParentApplicationContext(ApplicationContext parentApplicationContext) { - this.parentApplicationContext = parentApplicationContext; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor deleted file mode 100644 index 506b02c782..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor +++ /dev/null @@ -1,17 +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. -org.apache.tuscany.sca.implementation.spring.webapp.SpringWebApplicationContextAccessor
\ No newline at end of file diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml deleted file mode 100644 index b98374a88b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<beans xmlns="http://www.springframework.org/schema/beans" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> - - <bean id="tuscanySpringApplicationContextAccessor" - class="org.apache.tuscany.sca.implementation.spring.webapp.ApplicationContextAccessorBean" - scope="singleton" factory-method="getInstance"> - </bean> - -</beans> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java deleted file mode 100644 index 6a5ae882b1..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java +++ /dev/null @@ -1,41 +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.spring.webapp; - -import org.junit.Assert; -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class ApplicationContextAccessorTestCase { - - @Test - public void testContext() { - ApplicationContext context = - new ClassPathXmlApplicationContext( - new String[] {"org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml"}); - Object accessor = context.getBean(ApplicationContextAccessorBean.BEAN_ID); - Assert.assertSame(ApplicationContextAccessorBean.getInstance(), accessor); - ApplicationContextAccessorBean contextAccessor = (ApplicationContextAccessorBean)accessor; - Assert.assertSame(context, contextAccessor.getApplicationContext()); - - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/LICENSE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/LICENSE deleted file mode 100644 index 6e529a25c4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ -
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/META-INF/MANIFEST.MF b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/META-INF/MANIFEST.MF deleted file mode 100644 index 9226b047d7..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/META-INF/MANIFEST.MF +++ /dev/null @@ -1,50 +0,0 @@ -Manifest-Version: 1.0
-SCA-Version: 1.1
-Bundle-Name: Apache Tuscany SCA Spring Implementation Model
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Spring Implementation Model
-Import-Package: javax.jws,
- javax.xml.namespace,
- javax.xml.stream,
- org.apache.tuscany.sca.assembly;version="2.0.0",
- org.apache.tuscany.sca.assembly.builder;version="2.0.0",
- org.apache.tuscany.sca.assembly.impl;version="2.0.0",
- org.apache.tuscany.sca.assembly.xml;version="2.0.0",
- org.apache.tuscany.sca.context;version="2.0.0",
- org.apache.tuscany.sca.contribution;version="2.0.0",
- org.apache.tuscany.sca.contribution.processor;version="2.0.0",
- org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.core.factory;version="2.0.0",
- org.apache.tuscany.sca.core.invocation;version="2.0.0",
- org.apache.tuscany.sca.databinding;version="2.0.0",
- org.apache.tuscany.sca.databinding.impl;version="2.0.0",
- org.apache.tuscany.sca.implementation.java;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.injection;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.introspect;version="2.0.0",
- org.apache.tuscany.sca.implementation.java.introspect.impl;version="2.0.0",
- org.apache.tuscany.sca.interfacedef;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.java.impl;version="2.0.0",
- org.apache.tuscany.sca.interfacedef.util;version="2.0.0",
- org.apache.tuscany.sca.invocation;version="2.0.0",
- org.apache.tuscany.sca.monitor;version="2.0.0",
- org.apache.tuscany.sca.policy;version="2.0.0",
- org.apache.tuscany.sca.provider;version="2.0.0",
- org.apache.tuscany.sca.runtime;version="2.0.0",
- org.oasisopen.sca;version="2.0.0",
- org.oasisopen.sca.annotation;version="2.0.0"
-Bundle-SymbolicName: org.apache.tuscany.sca.implementation.spring
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 -Export-Package: org.apache.tuscany.sca.implementation.spring;version="2.0.0",
- org.apache.tuscany.sca.implementation.spring.xml;version="2.0.0";
- uses:="javax.xml.stream,
- org.apache.tuscany.sca.contribution.resolver,
- org.apache.tuscany.sca.implementation.spring,
- org.apache.tuscany.sca.contribution.processor,
- org.apache.tuscany.sca.core,
- javax.xml.namespace"
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/NOTICE b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/NOTICE deleted file mode 100644 index 1325efd8bf..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name}
-Copyright (c) 2005 - 2008 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/pom.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/pom.xml deleted file mode 100644 index 19be313a8a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-implementation-spring</artifactId> - <name>Apache Tuscany SCA Spring Implementation Model</name> - - <dependencies> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-assembly</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-assembly-xml</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-contribution</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-sca-api</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-implementation-java</artifactId> - <version>2.0-Beta2-SNAPSHOT</version> - </dependency> - - </dependencies> -</project> diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java deleted file mode 100644 index 64b36a0a44..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java +++ /dev/null @@ -1,132 +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.spring; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <bean> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringBeanElement { - - private String id; - private String className = null; - private boolean innerBean = false; - private boolean abstractBean = false; - private boolean parentAttribute = false; - private boolean factoryBeanAttribute = false; - private boolean factoryMethodAttribute = false; - - private List<SpringPropertyElement> properties = new ArrayList<SpringPropertyElement>(); - private List<SpringConstructorArgElement> constructorargs = new ArrayList<SpringConstructorArgElement>(); - - public SpringBeanElement() { - } - - public SpringBeanElement(String id, String className) { - this.id = id; - this.className = className; - } - - public String getClassName() { - return className; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public List<SpringPropertyElement> getProperties() { - return properties; - } - - public void addProperty(SpringPropertyElement property) { - properties.add(property); - } - - public List<SpringConstructorArgElement> getCustructorArgs() { - return constructorargs; - } - - public void addCustructorArgs(SpringConstructorArgElement args) { - constructorargs.add(args); - } - - public boolean isInnerBean() { - return innerBean; - } - - public void setInnerBean(boolean innerBean) { - this.innerBean = innerBean; - } - - public boolean isAbstractBean() { - return abstractBean; - } - - public void setAbstractBean(boolean abstractBean) { - this.abstractBean = abstractBean; - } - - public boolean hasParentAttribute() { - return parentAttribute; - } - - public void setParentAttribute(boolean parentAttribute) { - this.parentAttribute = parentAttribute; - } - - public boolean hasFactoryBeanAttribute() { - return factoryBeanAttribute; - } - - public void setFactoryBeanAttribute(boolean factoryBeanAttribute) { - this.factoryBeanAttribute = factoryBeanAttribute; - } - - public boolean hasFactoryMethodAttribute() { - return factoryMethodAttribute; - } - - public void setFactoryMethodAttribute(boolean factoryMethodAttribute) { - this.factoryMethodAttribute = factoryMethodAttribute; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringBeanElement [id=").append(id).append(", className=").append(className) - .append(", innerBean=").append(innerBean).append(", abstractBean=").append(abstractBean) - .append(", parentAttribute=").append(parentAttribute).append(", factoryBeanAttribute=") - .append(factoryBeanAttribute).append(", factoryMethodAttribute=").append(factoryMethodAttribute) - .append(", properties=").append(properties).append(", constructorargs=").append(constructorargs) - .append("]"); - return builder.toString(); - } - -} // end class SpringBeanElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java deleted file mode 100644 index 1de0595d60..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java +++ /dev/null @@ -1,90 +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.spring; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <constructor-arg> element in a Spring application-context - * - this has ref attribute - * - * @version $Rev$ $Date$ - */ -public class SpringConstructorArgElement { - - private String type; - private int autoIndex = -1; - private int index = -1; - private List<String> refs = new ArrayList<String>(); - private List<String> values = new ArrayList<String>(); - - public SpringConstructorArgElement() { - - } - - public SpringConstructorArgElement(String type) { - this.type = type; - } - - public String getType() { - return this.type; - } - - public List<String> getRefs() { - return this.refs; - } - - public void addRef(String ref) { - this.refs.add(ref); - } - - public int getIndex() { - return this.index; - } - - public void setIndex(int index) { - this.index = index; - } - - public int getAutoIndex() { - return this.autoIndex; - } - - public void setAutoIndex(int index) { - this.autoIndex = index; - } - - public List<String> getValues() { - return this.values; - } - - public void addValue(String value) { - this.values.add(value); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringConstructorArgElement [type=").append(type).append(", autoIndex=").append(autoIndex) - .append(", index=").append(index).append(", refs=").append(refs).append(", values=").append(values) - .append("]"); - return builder.toString(); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java deleted file mode 100644 index a5d4adb1bb..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.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.implementation.spring; - -import java.net.URL; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Component; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Extensible; -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.assembly.impl.ImplementationImpl; -import org.apache.tuscany.sca.interfacedef.InterfaceContract; - -/** - * Represents a Spring implementation. - * - * @version $Rev$ $Date$ - */ -public class SpringImplementation extends ImplementationImpl implements Implementation, Extensible { - public final static QName TYPE = new QName(SCA11_NS, "implementation.spring"); - // The location attribute which points to the Spring application-context XML file - private String location; - // The application-context file as a Spring Resource - private List<URL> resource; - private ComponentType componentType; - // Mapping of Services to Beans - private Map<String, SpringBeanElement> serviceMap; - // Mapping of property names to Java class - private Map<String, Class<?>> propertyMap; - // List of unresolved bean property references - private Map<String, Reference> unresolvedBeanRef; - private ClassLoader classLoader; - - public SpringImplementation() { - super(TYPE); - this.location = null; - this.resource = null; - setUnresolved(true); - serviceMap = new HashMap<String, SpringBeanElement>(); - propertyMap = new HashMap<String, Class<?>>(); - unresolvedBeanRef = new HashMap<String, Reference>(); - } // end method SpringImplementation - - /* Returns the location attribute for this Spring implementation */ - public String getLocation() { - return location; - } - - /** - * Sets the location attribute for this Spring implementation - * location - a URI to the Spring application-context file - */ - public void setLocation(String location) { - this.location = location; - return; - } - - public void setResource(List<URL> resource) { - this.resource = resource; - } - - public List<URL> getResource() { - return resource; - } - - /* - * Returns the componentType for this Spring implementation - */ - public ComponentType getComponentType() { - return componentType; - } - - /* - * Sets the componentType for this Spring implementation - */ - public void setComponentType(ComponentType componentType) { - this.componentType = componentType; - } - - @Override - public List<Service> getServices() { - return componentType.getServices(); - } - - @Override - public List<Reference> getReferences() { - return componentType.getReferences(); - } - - @Override - public List<Property> getProperties() { - return componentType.getProperties(); - } - - /** - * Returns the Spring Bean which implements a particular service - * @param service the service - * @return the bean which implements the service, as a SpringBeanElement - */ - public SpringBeanElement getBeanFromService(Service service) { - SpringBeanElement theBean = serviceMap.get(service.getName()); - return theBean; - } - - /** - * Sets the mapping from a service to the Spring Bean that implements the service - * @param service the service - * @param theBean a SpringBeanElement for the Bean implementing the service - */ - public void setBeanForService(Service service, SpringBeanElement theBean) { - serviceMap.put(service.getName(), theBean); - } - - /** - * Add a mapping from a SCA property name to a Java class for the property - * @param propertyName - * @param propertyClass - */ - public void setPropertyClass(String propertyName, Class<?> propertyClass) { - if (propertyName == null || propertyClass == null) - return; - propertyMap.put(propertyName, propertyClass); - return; - } // end method setPropertyClass - - /** - * Gets the Java Class for an SCA property - * @param propertyName - the property name - * @return - a Class object for the type of the property - */ - public Class<?> getPropertyClass(String propertyName) { - return propertyMap.get(propertyName); - } // end method getPropertyClass - - public void setUnresolvedBeanRef(String refName, Reference reference) { - if (refName == null || reference == null) - return; - unresolvedBeanRef.put(refName, reference); - return; - } // end method setUnresolvedBeanRef - - public Reference getUnresolvedBeanRef(String refName) { - return unresolvedBeanRef.get(refName); - } // end method getUnresolvedBeanRef - - /** - * Use preProcess to validate and map the references and properties dynamically - */ - public void build(Component component) { - - for (Reference reference : component.getReferences()) { - if (unresolvedBeanRef.containsKey(reference.getName())) { - Reference ref = unresolvedBeanRef.get(reference.getName()); - componentType.getReferences().add(createReference(reference, ref.getInterfaceContract())); - unresolvedBeanRef.remove(reference.getName()); - } - } - - for (Property property : component.getProperties()) { - if (unresolvedBeanRef.containsKey(property.getName())) { - componentType.getProperties().add(createProperty(property)); - this.setPropertyClass(property.getName(), property.getClass()); - unresolvedBeanRef.remove(property.getName()); - } - } - } - - protected Reference createReference(Reference reference, InterfaceContract interfaze) { - Reference newReference; - try { - newReference = (Reference)reference.clone(); - if (newReference.getInterfaceContract() == null) - newReference.setInterfaceContract(interfaze); - } 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; - } - - public ClassLoader getClassLoader() { - return classLoader; - } - - public void setClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((location == null) ? 0 : location.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof SpringImplementation)) { - return false; - } - SpringImplementation other = (SpringImplementation)obj; - if (location == null) { - if (other.location != null) { - return false; - } - } else if (!location.equals(other.location)) { - return false; - } - return true; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringImplementation [location=").append(location).append(", resource=").append(resource) - .append("]"); - return builder.toString(); - } -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java deleted file mode 100644 index 1a246fa03a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationBuilder.java +++ /dev/null @@ -1,41 +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.spring; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.Component; -import org.apache.tuscany.sca.assembly.builder.BuilderContext; -import org.apache.tuscany.sca.assembly.builder.ImplementationBuilder; - -/** - * - */ -public class SpringImplementationBuilder implements ImplementationBuilder<SpringImplementation> { - - public void build(Component component, SpringImplementation implmentation, BuilderContext context) { - implmentation.build(component); - } - - public QName getImplementationType() { - return SpringImplementation.TYPE; - } - -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java deleted file mode 100644 index 27c09c1f18..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationConstants.java +++ /dev/null @@ -1,73 +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.spring; - -import javax.xml.namespace.QName; - -/** - * Constants used in Spring Application Context XML files. - */ -public interface SpringImplementationConstants { - - String SCA_NS = "http://www.springframework.org/schema/sca"; - String SPRING_NS = "http://www.springframework.org/schema/beans"; - - String PROPERTY = "property"; - QName SCA_PROPERTY_ELEMENT = new QName(SCA_NS, PROPERTY); - QName PROPERTY_ELEMENT = new QName(SPRING_NS, PROPERTY); - - String SCASERVICE = "service"; - QName SCA_SERVICE_ELEMENT = new QName(SCA_NS, SCASERVICE); - - String SCAREFERENCE = "reference"; - QName SCA_REFERENCE_ELEMENT = new QName(SCA_NS, SCAREFERENCE); - - String BEANS = "beans"; - QName BEANS_ELEMENT = new QName(SPRING_NS, BEANS); - - String IMPORT = "import"; - QName IMPORT_ELEMENT = new QName(SPRING_NS, IMPORT); - - String BEAN = "bean"; - QName BEAN_ELEMENT = new QName(SPRING_NS, BEAN); - - String CONSTRUCTORARG = "constructor-arg"; - QName CONSTRUCTORARG_ELEMENT = new QName(SPRING_NS, CONSTRUCTORARG); - - String LIST = "list"; - QName LIST_ELEMENT = new QName(SPRING_NS, LIST); - - String SET = "set"; - QName SET_ELEMENT = new QName(SPRING_NS, SET); - - String MAP = "map"; - QName MAP_ELEMENT = new QName(SPRING_NS, MAP); - - String VALUE = "value"; - QName VALUE_ELEMENT = new QName(SPRING_NS, VALUE); - - String REF = "ref"; - QName REF_ELEMENT = new QName(SPRING_NS, REF); - - String ENTRY = "entry"; - QName ENTRY_ELEMENT = new QName(SPRING_NS, ENTRY); - - String APPLICATION_CONTEXT = "application-context.xml"; -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java deleted file mode 100644 index 8de3a4cbe1..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.implementation.spring; - -import java.util.ArrayList; -import java.util.List; - -/** - * Represents a <property> element in a Spring application-context - * - this has name and ref attributes - * - * @version $Rev$ $Date$ - */ -public class SpringPropertyElement { - - private String name; - private List<String> refs = new ArrayList<String>(); - private List<String> values = new ArrayList<String>(); - - public SpringPropertyElement() { - } - - public SpringPropertyElement(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public List<String> getRefs() { - return this.refs; - } - - public void addRef(String ref) { - this.refs.add(ref); - } - - public List<String> getValues() { - return this.values; - } - - public void addValue(String value) { - this.values.add(value); - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringPropertyElement [name=").append(name).append(", refs=").append(refs).append(", values=") - .append(values).append("]"); - return builder.toString(); - } - -} // end class SpringPropertyElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java deleted file mode 100644 index f27506f28b..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java +++ /dev/null @@ -1,63 +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.spring; - -/** - * Represents an <sca:property> element in a Spring application-context - * - this has name and type attributes - * @version $Rev$ $Date$ - */ -public class SpringSCAPropertyElement { - - private String name; - private String type; - - public SpringSCAPropertyElement() { - super(); - } - - public SpringSCAPropertyElement(String name, String type) { - this.name = name; - this.type = type; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAPropertyElement [name=").append(name).append(", type=").append(type).append("]"); - return builder.toString(); - } - -} // end class SpringPropertyElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java deleted file mode 100644 index f06f05a46a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java +++ /dev/null @@ -1,106 +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.spring; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; - -/** - * Represents a <sca:reference> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringSCAReferenceElement { - - private String name; - private String type; - private String defaultBean; - private List<Intent> intents = new ArrayList<Intent>(); - private List<PolicySet> policySets = new ArrayList<PolicySet>(); - - private List<QName> intentNames = new ArrayList<QName>(); - private List<QName> policySetNames = new ArrayList<QName>(); - - public SpringSCAReferenceElement() { - - } - - public SpringSCAReferenceElement(String name, String type) { - this.name = name; - this.type = type; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public void setDefaultBean(String defaultBean) { - this.defaultBean = defaultBean; - } - - public String getDefaultBean() { - return defaultBean; - } - - public List<Intent> getRequiredIntents() { - return intents; - } - - public List<PolicySet> getPolicySets() { - return policySets; - } - - public List<QName> getIntentNames() { - return intentNames; - } - - public List<QName> getPolicySetNames() { - return policySetNames; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAReferenceElement [name=").append(name).append(", type=").append(type) - .append(", defaultBean=").append(defaultBean).append(", intents=").append(intents).append(", policySets=") - .append(policySets).append(", intentNames=").append(intentNames).append(", policySetNames=") - .append(policySetNames).append("]"); - return builder.toString(); - } - -} // end class SpringSCAReferenceElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java deleted file mode 100644 index 38c124c3b4..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java +++ /dev/null @@ -1,105 +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.spring; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; - -/** - * Represents a <sca:service> element in a Spring application-context - * - this has id and className attributes - * - plus zero or more property elements as children - * - * @version $Rev$ $Date$ - */ -public class SpringSCAServiceElement { - - private String name; - private String type; - private String target; - private List<Intent> intents = new ArrayList<Intent>(); - private List<PolicySet> policySets = new ArrayList<PolicySet>(); - private List<QName> intentNames = new ArrayList<QName>(); - private List<QName> policySetNames = new ArrayList<QName>(); - - public SpringSCAServiceElement() { - - } - - public SpringSCAServiceElement(String name, String target) { - this.name = name; - this.target = target; - } - - public void setName(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public void setType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public void setTarget(String target) { - this.target = target; - } - - public String getTarget() { - return target; - } - - public List<Intent> getRequiredIntents() { - return intents; - } - - public List<PolicySet> getPolicySets() { - return policySets; - } - - public List<QName> getIntentNames() { - return intentNames; - } - - public List<QName> getPolicySetNames() { - return policySetNames; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("SpringSCAServiceElement [name=").append(name).append(", type=").append(type) - .append(", target=").append(target).append(", intents=").append(intents).append(", policySets=") - .append(policySets).append(", intentNames=").append(intentNames).append(", policySetNames=") - .append(policySetNames).append("]"); - return builder.toString(); - } - -} // end class SpringSCAServiceElement diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java deleted file mode 100644 index 5eaf27ab81..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java +++ /dev/null @@ -1,95 +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.spring.introspect; - -import java.util.List; - -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.implementation.java.IntrospectionException; -import org.apache.tuscany.sca.implementation.java.JavaImplementation; -import org.apache.tuscany.sca.implementation.java.JavaImplementationFactory; -import org.apache.tuscany.sca.implementation.spring.SpringConstructorArgElement; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; - -/** - * Provides introspection functions for Spring beans - * This version leans heavily on the implementation-java classes - * - * @version $Rev$ $Date$ - */ -public class SpringBeanIntrospector { - - private JavaImplementationFactory javaImplementationFactory; - - /** - * The constructor sets up the various visitor elements that will be used to introspect - * the Spring bean and extract SCA information. - * - * @param assemblyFactory The Assembly Factory to use - * @param javaFactory The Java Interface Factory to use - * @param policyFactory The Policy Factory to use. - */ - public SpringBeanIntrospector(ExtensionPointRegistry registry, List<SpringConstructorArgElement> conArgs) { - - FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class); - javaImplementationFactory = factories.getFactory(JavaImplementationFactory.class); - } // end constructor - - /** - * Introspect a Spring Bean and extract the features important to SCA - * @param beanClass the Spring Bean class to introspect - * @param componentType the componentType that is filled in through the introspection - * process (assumed empty on invocation, filled on return - * @return a Map of property names to JavaElementImpl - * @throws ContributionResolveException - if there was a problem resolving the - * Spring Bean or its componentType - * - */ - public JavaImplementation introspectBean(Class<?> beanClass, ComponentType componentType) - throws ContributionResolveException { - if (componentType == null) - throw new ContributionResolveException("Introspect Spring bean: supplied componentType is null"); - - // Create a Java implementation ready for the introspection - JavaImplementation javaImplementation = javaImplementationFactory.createJavaImplementation(); - // Set the type to be implementation.spring to avoid heuristic introspection - javaImplementation.setType(SpringImplementation.TYPE); - - try { - // Introspect the bean...the results of the introspection are placed into the Java implementation - javaImplementationFactory.createJavaImplementation(javaImplementation, beanClass); - - // Extract the services, references & properties found through introspection - // put the services, references and properties into the component type - componentType.getServices().addAll(javaImplementation.getServices()); - componentType.getReferences().addAll(javaImplementation.getReferences()); - componentType.getProperties().addAll(javaImplementation.getProperties()); - - } catch (IntrospectionException e) { - throw new ContributionResolveException(e); - } // end try - - return javaImplementation; - - } // end method introspectBean - -} // end class SpringBeanIntrospector diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java deleted file mode 100644 index 4fbe5da43d..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java +++ /dev/null @@ -1,990 +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.spring.introspect; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.jar.Attributes; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.jar.Manifest; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.namespace.QName; - -import org.apache.tuscany.sca.assembly.AssemblyFactory; -import org.apache.tuscany.sca.assembly.ComponentType; -import org.apache.tuscany.sca.assembly.Multiplicity; -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.Artifact; -import org.apache.tuscany.sca.contribution.ContributionFactory; -import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.resolver.ClassReference; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; -import org.apache.tuscany.sca.implementation.java.JavaConstructorImpl; -import org.apache.tuscany.sca.implementation.java.JavaElementImpl; -import org.apache.tuscany.sca.implementation.java.JavaImplementation; -import org.apache.tuscany.sca.implementation.java.JavaParameterImpl; -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringConstructorArgElement; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.implementation.spring.SpringPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; -import org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader; -import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract; -import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; -import org.apache.tuscany.sca.interfacedef.util.JavaXMLMapper; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.Problem.Severity; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicyFactory; -import org.apache.tuscany.sca.policy.PolicySet; - -/** - * Introspects a Spring XML application-context configuration file to create <implementation-spring../> - * component type information. - * - * @version $Rev$ $Date$ - */ -public class SpringXMLComponentTypeLoader { - private final static Logger log = Logger.getLogger(SpringXMLComponentTypeLoader.class.getName()); - - private ExtensionPointRegistry registry; - private ContributionFactory contributionFactory; - private AssemblyFactory assemblyFactory; - private PolicyFactory policyFactory; - private JavaInterfaceFactory javaFactory; - private SpringBeanIntrospector beanIntrospector; - - private SpringXMLBeanDefinitionLoader xmlBeanDefinitionLoader; - - public SpringXMLComponentTypeLoader(ExtensionPointRegistry registry) { - super(); - this.registry = registry; - FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class); - this.assemblyFactory = factories.getFactory(AssemblyFactory.class); - this.policyFactory = factories.getFactory(PolicyFactory.class); - this.javaFactory = factories.getFactory(JavaInterfaceFactory.class); - this.contributionFactory = factories.getFactory(ContributionFactory.class); - this.xmlBeanDefinitionLoader = - registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(SpringXMLBeanDefinitionLoader.class); - } - - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void error(Monitor monitor, String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = - monitor.createProblem(this.getClass().getName(), - "impl-spring-validation-messages", - Severity.ERROR, - model, - message, - (Object[])messageParameters); - monitor.problem(problem); - } - } - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void warning(Monitor monitor, String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = - monitor.createProblem(this.getClass().getName(), - "impl-spring-validation-messages", - Severity.WARNING, - model, - message, - (Object[])messageParameters); - monitor.problem(problem); - } - } - protected Class<SpringImplementation> getImplementationClass() { - return SpringImplementation.class; - } - - /** - * Base method which loads the component type from the application-context attached to the - * Spring implementation - * - */ - public void load(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) - throws ContributionReadException { - //System.out.println("Spring TypeLoader - load method start"); - ComponentType componentType = implementation.getComponentType(); - /* Check that there is a component type object already set */ - if (componentType == null) { - throw new ContributionReadException("SpringXMLLoader load: implementation has no ComponentType object"); - } - if (componentType.isUnresolved()) { - /* Fetch the location of the application-context file from the implementation */ - loadFromXML(implementation, resolver, context); - if (!componentType.isUnresolved()) - implementation.setUnresolved(false); - } // end if - //System.out.println("Spring TypeLoader - load method complete"); - } // end method load - - private Class<?> resolveClass(ModelResolver resolver, String className, ProcessorContext context) - throws ClassNotFoundException { - ClassReference classReference = new ClassReference(className); - classReference = resolver.resolveModel(ClassReference.class, classReference, context); - if (classReference.isUnresolved()) { - throw new ClassNotFoundException(className); - } - Class<?> javaClass = classReference.getJavaClass(); - return javaClass; - } - - /** - * Method which fills out the component type for a Spring implementation by reading the - * Spring application-context.xml file. - * - * @param implementation SpringImplementation into which to load the component type information - * @throws ContributionReadException Failed to read the contribution - */ - private void loadFromXML(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context) - throws ContributionReadException { - List<SpringBeanElement> beans = new ArrayList<SpringBeanElement>(); - List<SpringSCAServiceElement> services = new ArrayList<SpringSCAServiceElement>(); - List<SpringSCAReferenceElement> references = new ArrayList<SpringSCAReferenceElement>(); - List<SpringSCAPropertyElement> scaproperties = new ArrayList<SpringSCAPropertyElement>(); - - URL resource; - List<URL> contextResources = new ArrayList<URL>(); - String contextPath = implementation.getLocation(); - - try { - resource = resolveLocation(resolver, contextPath, context); - contextResources = getApplicationContextResource(resource); - - implementation.setClassLoader(new ContextClassLoader(resolver, context)); - implementation.setResource(contextResources); - // The URI is used to uniquely identify the Implementation - implementation.setURI(resource.toString()); - - List<SpringBeanElement> appCxtBeans = new ArrayList<SpringBeanElement>(); - List<SpringSCAServiceElement> appCxtServices = new ArrayList<SpringSCAServiceElement>(); - List<SpringSCAReferenceElement> appCxtReferences = new ArrayList<SpringSCAReferenceElement>(); - List<SpringSCAPropertyElement> appCxtProperties = new ArrayList<SpringSCAPropertyElement>(); - - if (xmlBeanDefinitionLoader != null) { - xmlBeanDefinitionLoader.load(contextResources, - appCxtServices, - appCxtReferences, - appCxtProperties, - appCxtBeans, - context); - populatePolicies(appCxtServices, appCxtReferences); - } - // Validate the beans from individual application context for uniqueness - validateBeans(appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties, context.getMonitor()); - // Add all the validated beans to the generic list - beans.addAll(appCxtBeans); - services.addAll(appCxtServices); - references.addAll(appCxtReferences); - scaproperties.addAll(appCxtProperties); - } catch (Throwable e) { - throw new ContributionReadException(e); - } - - /* At this point, the complete application-context.xml file has been read and its contents */ - /* stored in the lists of beans, services, references. These are now used to generate */ - /* the implied componentType for the application context */ - generateComponentType(implementation, resolver, beans, services, references, scaproperties, context); - - return; - } // end method loadFromXML - - public void populatePolicies(List<SpringSCAServiceElement> appCxtServices, - List<SpringSCAReferenceElement> appCxtReferences) { - for (SpringSCAReferenceElement e : appCxtReferences) { - for (QName qn : e.getIntentNames()) { - Intent intent = policyFactory.createIntent(); - intent.setName(qn); - e.getRequiredIntents().add(intent); - } - for (QName qn : e.getPolicySetNames()) { - PolicySet ps = policyFactory.createPolicySet(); - ps.setName(qn); - e.getPolicySets().add(ps); - } - } - - for (SpringSCAServiceElement e : appCxtServices) { - for (QName qn : e.getIntentNames()) { - Intent intent = policyFactory.createIntent(); - intent.setName(qn); - e.getRequiredIntents().add(intent); - } - for (QName qn : e.getPolicySetNames()) { - PolicySet ps = policyFactory.createPolicySet(); - ps.setName(qn); - e.getPolicySets().add(ps); - } - } - } - - private URL resolveLocation(ModelResolver resolver, String contextPath, ProcessorContext context) - throws MalformedURLException, ContributionReadException { - URL resource = null; - URI uri = URI.create(contextPath); - if (!uri.isAbsolute()) { - Artifact parent = context.getArtifact(); - if (parent != null && parent.getURI() != null) { - URI base = URI.create("/" + parent.getURI()); - uri = base.resolve(uri); - // Remove the leading / to make artifact resolver happy - if (uri.toString().startsWith("/")) { - uri = URI.create(uri.toString().substring(1)); - } - } - Artifact artifact = contributionFactory.createArtifact(); - artifact.setUnresolved(true); - artifact.setURI(uri.toString()); - artifact = resolver.resolveModel(Artifact.class, artifact, context); - if (!artifact.isUnresolved()) { - resource = new URL(artifact.getLocation()); - } else { - // The resource can be out of scope of the contribution root - if (parent != null && parent.getLocation() != null) { - resource = new URL(new URL(parent.getLocation()), contextPath); - return resource; - } - throw new ContributionReadException("Location cannot be resloved: " + contextPath); - } - } else { - resource = new URL(contextPath); - } - return resource; - } - - /** - * Generates the Spring implementation component type from the configuration contained in the - * lists of beans, services, references and scaproperties derived from the application context - */ - private void generateComponentType(SpringImplementation implementation, - ModelResolver resolver, - List<SpringBeanElement> beans, - List<SpringSCAServiceElement> services, - List<SpringSCAReferenceElement> references, - List<SpringSCAPropertyElement> scaproperties, - ProcessorContext context) throws ContributionReadException { - /* - * 1. Each sca:service becomes a service in the component type - * 2. Each sca:reference becomes a reference in the component type - * 3. Each sca:property becomes a property in the component type - * 4. IF there are no explicit service elements, each bean becomes a service - * 5. Each bean property which is a reference not pointing at another bean in the - * application context becomes a reference unless it is pointing at one of the references - * 6. Each bean property which is not a reference and which is not pointing - * at another bean in the application context becomes a property in the component type - */ - - JavaImplementation javaImplementation = null; - ComponentType componentType = implementation.getComponentType(); - - try { - // Deal with the services first.... - Iterator<SpringSCAServiceElement> its = services.iterator(); - while (its.hasNext()) { - SpringSCAServiceElement serviceElement = its.next(); - Class<?> interfaze = resolveClass(resolver, serviceElement.getType(), context); - Service theService = createService(interfaze, serviceElement.getName()); - // Spring allows duplication of bean definitions in multiple context scenario, - // in such cases, the latest bean definition overrides the older ones, hence - // we will remove any older definition and use the latest. - Service duplicate = null; - for (Service service : componentType.getServices()) { - if (service.getName().equals(theService.getName())) - duplicate = service; - } - if (duplicate != null) - componentType.getServices().remove(duplicate); - - componentType.getServices().add(theService); - // Add this service to the Service / Bean map - String beanName = serviceElement.getTarget(); - boolean found = false; - for (SpringBeanElement beanElement : beans) { - if (beanName.equals(beanElement.getId())) { - if (isValidBeanForService(beanElement)) { - // add the required intents and policySets for the service - theService.getRequiredIntents().addAll(serviceElement.getRequiredIntents()); - theService.getPolicySets().addAll(serviceElement.getPolicySets()); - implementation.setBeanForService(theService, beanElement); - found = true; - break; - } - } - } // end for - - if (!found) { - // REVIEW: Adding a SpringBeanElement "proxy" so that the bean id can be used at runtime to look - // up the bean instance from the parent context - implementation.setBeanForService(theService, - new SpringBeanElement(serviceElement.getTarget(), null)); - } - } // end while - - // Next handle the references - Iterator<SpringSCAReferenceElement> itr = references.iterator(); - while (itr.hasNext()) { - SpringSCAReferenceElement referenceElement = itr.next(); - Class<?> interfaze = resolveClass(resolver, referenceElement.getType(), context); - Reference theReference = createReference(interfaze, referenceElement.getName()); - // Override the older bean definition with the latest ones - // for the duplicate definitions found. - Reference duplicate = null; - for (Reference reference : componentType.getReferences()) { - if (reference.getName().equals(theReference.getName())) - duplicate = reference; - } - if (duplicate != null) - componentType.getReferences().remove(duplicate); - - // add the required intents and policySets for this reference - theReference.getRequiredIntents().addAll(referenceElement.getRequiredIntents()); - theReference.getPolicySets().addAll(referenceElement.getPolicySets()); - componentType.getReferences().add(theReference); - } // end while - - // Next handle the properties - Iterator<SpringSCAPropertyElement> itsp = scaproperties.iterator(); - while (itsp.hasNext()) { - SpringSCAPropertyElement scaproperty = itsp.next(); - // Create a component type property if the SCA property element has a name - // and a type declared... - if (scaproperty.getType() != null && scaproperty.getName() != null) { - Property theProperty = assemblyFactory.createProperty(); - theProperty.setName(scaproperty.getName()); - // Get the Java class and then an XSD element type for the property - Class<?> propType = Class.forName(scaproperty.getType()); - theProperty.setXSDType(JavaXMLMapper.getXMLType(propType)); - // Override the older bean definition with the latest ones - // for the duplicate definitions found. - Property duplicate = null; - for (Property property : componentType.getProperties()) { - if (property.getName().equals(theProperty.getName())) - duplicate = property; - } - if (duplicate != null) - componentType.getProperties().remove(duplicate); - - componentType.getProperties().add(theProperty); - // Remember the Java Class (ie the type) for this property - implementation.setPropertyClass(theProperty.getName(), propType); - } // end if - } // end while - - // Finally deal with the beans - Iterator<SpringBeanElement> itb; - // If there are no explicit service elements, then expose all the beans - if (services.isEmpty()) { - itb = beans.iterator(); - // Loop through all the beans found - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - - // If its not a valid bean for service, ignore it - if (!isValidBeanForService(beanElement)) { - continue; - } - try { - // Load the Spring bean class - Class<?> beanClass = resolveClass(resolver, beanElement.getClassName(), context); - // Introspect the bean - beanIntrospector = new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); - ComponentType beanComponentType = assemblyFactory.createComponentType(); - javaImplementation = beanIntrospector.introspectBean(beanClass, beanComponentType); - // Set the service name as bean name - for (Service componentService : beanComponentType.getServices()) { - componentService.setName(beanElement.getId()); - } - // Get the service interface defined by this Spring Bean and add to - // the component type of the Spring Assembly - List<Service> beanServices = beanComponentType.getServices(); - componentType.getServices().addAll(beanServices); - // Add these services to the Service / Bean map - for (Service beanService : beanServices) { - implementation.setBeanForService(beanService, beanElement); - } - } catch (Throwable e) { - // [rfeng] FIXME: Some Spring beans have constructors that take pararemters injected by Spring and - // Tuscany is not happy with that during the introspection - log.log(Level.SEVERE, e.getMessage(), e); - } - } // end while - } // end if - - itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - - // If its not a valid bean for service, ignore it - if (!isValidBeanForService(beanElement)) { - continue; - } - // Ignore if the bean has no properties and constructor arguments - if (beanElement.getProperties().isEmpty() && beanElement.getCustructorArgs().isEmpty()) - continue; - - ComponentType beanComponentType = assemblyFactory.createComponentType(); - - try { - Class<?> beanClass = resolveClass(resolver, beanElement.getClassName(), context); - // Introspect the bean - beanIntrospector = new SpringBeanIntrospector(registry, beanElement.getCustructorArgs()); - javaImplementation = beanIntrospector.introspectBean(beanClass, beanComponentType); - } catch (Exception e) { - // [rfeng] FIXME: Some Spring beans have constructors that take pararemters injected by Spring and - // Tuscany is not happy with that during the introspection - log.log(Level.SEVERE, e.getMessage(), e); - continue; - } - Map<String, JavaElementImpl> propertyMap = javaImplementation.getPropertyMembers(); - JavaConstructorImpl constructor = javaImplementation.getConstructor(); - // Get the references by this Spring Bean and add the unresolved ones to - // the component type of the Spring Assembly - List<Reference> beanReferences = beanComponentType.getReferences(); - List<Property> beanProperties = beanComponentType.getProperties(); - - Set<String> excludedNames = new HashSet<String>(); - Iterator<SpringPropertyElement> itp = beanElement.getProperties().iterator(); - while (itp.hasNext()) { - SpringPropertyElement propertyElement = itp.next(); - // Exclude the reference that is also known as a spring property - excludedNames.add(propertyElement.getName()); - for (String propertyRef : propertyElement.getRefs()) { - if (propertyRefUnresolved(propertyRef, beans, references, scaproperties)) { - // This means an unresolved reference from the spring bean... - for (Reference reference : beanReferences) { - if (propertyElement.getName().equals(reference.getName())) { - // The name of the reference in this case is the string in - // the @ref attribute of the Spring property element, NOT the - // name of the field in the Spring bean.... - reference.setName(propertyRef); - componentType.getReferences().add(reference); - break; - } // end if - } // end for - - // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type - for (Property scaproperty : beanProperties) { - if (propertyElement.getName().equals(scaproperty.getName())) { - // The name of the reference in this case is the string in - // the @ref attribute of the Spring property element, NOT the - // name of the field in the Spring bean.... - Class<?> interfaze = - resolveClass(resolver, - (propertyMap.get(propertyElement.getName()).getType()).getName(), - context); - Reference theReference = createReference(interfaze, propertyRef); - implementation.setUnresolvedBeanRef(propertyRef, theReference); - break; - } // end if - } // end for - } // end if - } // end for - } // end while - - Iterator<SpringConstructorArgElement> itcr = beanElement.getCustructorArgs().iterator(); - while (itcr.hasNext()) { - SpringConstructorArgElement conArgElement = itcr.next(); - for (String constructorArgRef : conArgElement.getRefs()) { - if (propertyRefUnresolved(constructorArgRef, beans, references, scaproperties)) { - for (JavaParameterImpl parameter : constructor.getParameters()) { - String paramType = parameter.getType().getName(); - Class<?> interfaze = resolveClass(resolver, paramType, context); - // Create a component type reference/property if the constructor-arg element has a - // type attribute OR index attribute declared... - if ((conArgElement.getType() != null && paramType.equals(conArgElement.getType())) || (conArgElement - .getIndex() != -1 && (conArgElement.getIndex() == parameter.getIndex()))) { - // [rfeng] Commenting out the following code as the constructor parameter based SCA - // references are added already - /* - if (parameter.getClassifer() == org.oasisopen.sca.annotation.Reference.class) { - Reference theReference = createReference(interfaze, constructorArgRef); - componentType.getReferences().add(theReference); - } - */ - if (parameter.getClassifer() == org.oasisopen.sca.annotation.Property.class) { - // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type - // we might need to verify with the component definition later. - Reference theReference = createReference(interfaze, constructorArgRef); - implementation.setUnresolvedBeanRef(constructorArgRef, theReference); - } - } - } // end for - } // end if - } // end for - } // end while - - // [rfeng] Add the remaining introspected references (w/ @Reference but without Spring property ref) - for (Reference ref : beanReferences) { - if (!excludedNames.contains(ref.getName()) && componentType.getReference(ref.getName()) == null) { - // Only add the ones that not listed by sca:reference - componentType.getReferences().add(ref); - } - } - - } // end while - - } catch (ClassNotFoundException e) { - // Means that either an interface class, property class or a bean was not found - throw new ContributionReadException(e); - } catch (InvalidInterfaceException e) { - throw new ContributionReadException(e); - } // end try - - // If we get here, the Spring assembly component type is resolved - componentType.setUnresolved(false); - implementation.setComponentType(componentType); - return; - } // end method generateComponentType - - /* - * Determines whether a reference attribute of a Spring property element is resolved either - * by a bean in the application context or by an SCA reference element or by an SCA property - * element - * @param ref - a String containing the name of the reference - may be null - * @param beans - a List of SpringBean elements - * @param references - a List of SCA reference elements - * @return true if the property is not resolved, false if it is resolved - */ - private boolean propertyRefUnresolved(String ref, - List<SpringBeanElement> beans, - List<SpringSCAReferenceElement> references, - List<SpringSCAPropertyElement> scaproperties) { - boolean unresolved = true; - - if (ref != null) { - // Scan over the beans looking for a match - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - // Does the bean name match the ref? - if (ref.equals(beanElement.getId())) { - unresolved = false; - break; - } // end if - } // end while - // Scan over the SCA reference elements looking for a match - if (unresolved) { - Iterator<SpringSCAReferenceElement> itr = references.iterator(); - while (itr.hasNext()) { - SpringSCAReferenceElement referenceElement = itr.next(); - if (ref.equals(referenceElement.getName())) { - unresolved = false; - break; - } // end if - } // end while - } // end if - // Scan over the SCA property elements looking for a match - if (unresolved) { - Iterator<SpringSCAPropertyElement> itsp = scaproperties.iterator(); - while (itsp.hasNext()) { - SpringSCAPropertyElement propertyElement = itsp.next(); - if (ref.equals(propertyElement.getName())) { - unresolved = false; - break; - } // end if - } // end while - } // end if - } else { - // In the case where ref = null, the property is not going to be a reference of any - // kind and can be ignored - unresolved = false; - } // end if - - return unresolved; - - } // end method propertyRefUnresolved - - /** - * Validates whether the <sca:service>, <sca:reference> and <sca:property> elements - * has unique names within the application context. - */ - private void validateBeans(List<SpringBeanElement> beans, - List<SpringSCAServiceElement> services, - List<SpringSCAReferenceElement> references, - List<SpringSCAPropertyElement> scaproperties, - Monitor monitor) throws ContributionReadException { - - // The @target attribute of a <service/> subelement of a <beans/> element - // MUST have the value of the @name attribute of one of the <bean/> - // subelements of the <beans/> element. - Iterator<SpringSCAServiceElement> its = services.iterator(); - while (its.hasNext()) { - SpringSCAServiceElement serviceElement = its.next(); - boolean targetBeanExists = false; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (serviceElement.getTarget().equals(beanElement.getId())) - targetBeanExists = true; - } - if (!targetBeanExists) { - // REVIEW: [rfeng] The target bean can exist in the parent Spring application context which we don't know - // until runtime - warning(monitor, "TargetBeanDoesNotExist", beans); - } - } // end while - - // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:property/> - // subelements and the <bean/> subelements of the <beans/> element. - // AND - // The @default attribute of a <sca:reference/> subelement of a <beans/> - // element MUST have the value of the @name attribute of one of the <bean/> - // subelements of the <beans/> element. - Iterator<SpringSCAReferenceElement> itr = references.iterator(); - while (itr.hasNext()) { - SpringSCAReferenceElement referenceElement = itr.next(); - boolean defaultBeanExists = true; - boolean isUniqueReferenceName = true; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (referenceElement.getDefaultBean() != null) - if (referenceElement.getDefaultBean().equals(beanElement.getId())) - defaultBeanExists = false; - if (referenceElement.getName().equals(beanElement.getId())) - isUniqueReferenceName = false; - } - Iterator<SpringSCAPropertyElement> itp = scaproperties.iterator(); - while (itp.hasNext()) { - SpringSCAPropertyElement propertyElement = itp.next(); - if (referenceElement.getName().equals(propertyElement.getName())) - isUniqueReferenceName = false; - } - if (!defaultBeanExists) - error(monitor, "DefaultBeanDoesNotExist", beans); - if (!isUniqueReferenceName) - error(monitor, "ScaReferenceNameNotUnique", beans); - } // end while - - // The value of the @name attribute of an <sca:property/> subelement of a <beans/> - // element MUST be unique amongst the @name attributes of the <sca:reference/> - // subelements and the <bean/> subelements of the <beans/> element. - Iterator<SpringSCAPropertyElement> itp = scaproperties.iterator(); - while (itp.hasNext()) { - SpringSCAPropertyElement propertyElement = itp.next(); - boolean isUniquePropertyName = true; - Iterator<SpringBeanElement> itb = beans.iterator(); - while (itb.hasNext()) { - SpringBeanElement beanElement = itb.next(); - if (propertyElement.getName().equals(beanElement.getId())) - isUniquePropertyName = false; - } - Iterator<SpringSCAReferenceElement> itrp = references.iterator(); - while (itrp.hasNext()) { - SpringSCAReferenceElement referenceElement = itrp.next(); - if (propertyElement.getName().equals(referenceElement.getName())) - isUniquePropertyName = false; - } - if (!isUniquePropertyName) - error(monitor, "ScaPropertyNameNotUnique", beans); - } // end while - } - - /** - * Validates whether a bean definition is valid for exposing as service. - */ - private boolean isValidBeanForService(SpringBeanElement beanElement) { - - if (beanElement.isInnerBean()) - return false; - if (beanElement.hasParentAttribute()) - return false; - if (beanElement.hasFactoryMethodAttribute()) - return false; - if (beanElement.hasFactoryBeanAttribute()) - return false; - if (beanElement.getClassName() == null) - return false; - if (beanElement.getClassName().startsWith("org.springframework")) - return false; - // return true otherwise - return true; - } - - /** - * Gets hold of the application-context.xml file as a Spring resource - * @param locationAttr - the location attribute from the <implementation.spring../> element - * @param cl - the ClassLoader for the Spring implementation - */ - protected List<URL> getApplicationContextResource(URL url) throws ContributionReadException { - File manifestFile = null; - File appXmlFile; - File appXmlFolder; - File locationFile = null; - List<URL> appCtxResources = new ArrayList<URL>(); - - if (url != null) { - String path = url.getPath(); - locationFile = new File(path); - } else { - throw new ContributionReadException( - "SpringXMLComponentTypeLoader getApplicationContextResource: " + "unable to find resource file " - + url); - } - - if (locationFile.isDirectory()) { - try { - manifestFile = new File(locationFile, "META-INF" + File.separator + "MANIFEST.MF"); - if (manifestFile.exists()) { - Manifest mf = new Manifest(new FileInputStream(manifestFile)); - Attributes mainAttrs = mf.getMainAttributes(); - String appCtxPath = mainAttrs.getValue("Spring-Context"); - if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - appXmlFile = new File(locationFile, path.trim()); - if (appXmlFile.exists()) { - appCtxResources.add(appXmlFile.toURI().toURL()); - } - } - return appCtxResources; - } - } - // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the - // xml files available in the META-INF/spring folder. - appXmlFolder = new File(locationFile, "META-INF" + File.separator + "spring"); - if (appXmlFolder.exists()) { - File[] files = appXmlFolder.listFiles(); - for (File appFile : files) { - if (appFile.getName().endsWith(".xml")) { - appCtxResources.add(appFile.toURI().toURL()); - } - } - return appCtxResources; - } - } catch (IOException e) { - throw new ContributionReadException("Error reading manifest " + manifestFile); - } - } else { - if (locationFile.isFile() && locationFile.getName().endsWith(".jar")) { - try { - JarFile jf = new JarFile(locationFile); - JarEntry je; - Manifest mf = jf.getManifest(); - if (mf != null) { - Attributes mainAttrs = mf.getMainAttributes(); - String appCtxPath = mainAttrs.getValue("Spring-Context"); - if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - je = jf.getJarEntry(path.trim()); - if (je != null) - appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() - + "!/" - + appCtxPath)); - } - return appCtxResources; - } - } - // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the - // .xml files available in the META-INF/spring folder. - Enumeration<JarEntry> entries = jf.entries(); - while (entries.hasMoreElements()) { - je = entries.nextElement(); - if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { - appCtxResources.add(new URL("jar:" + locationFile.toURI().toURL() + "!/" + je.getName())); - } - } - return appCtxResources; - } catch (IOException e) { - // TODO: create a more appropriate exception type - throw new ContributionReadException( - "SpringXMLComponentTypeLoader getApplicationContextResource: " + " IO exception reading context file.", - e); - } - } else { - if (locationFile.getName().endsWith(".xml")) { - appCtxResources.add(url); - return appCtxResources; - } else { - // Deal with the directory inside a jar file, in case the contribution itself is a JAR file. - try { - if (locationFile.getPath().indexOf(".jar") > 0) { - String jarPath = url.getPath().substring(5, url.getPath().indexOf("!")); - JarFile jf = new JarFile(jarPath); - JarEntry je = - jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/") + 2) + "/" - + "META-INF" - + "/" - + "MANIFEST.MF"); - if (je != null) { - Manifest mf = new Manifest(jf.getInputStream(je)); - Attributes mainAttrs = mf.getMainAttributes(); - String appCtxPath = mainAttrs.getValue("Spring-Context"); - if (appCtxPath != null) { - String[] cxtPaths = appCtxPath.split(";"); - for (String path : cxtPaths) { - je = - jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/") + 2) + "/" - + path.trim()); - if (je != null) { - appCtxResources.add(new URL("jar:" + url.getPath() + "/" + path.trim())); - } - } - return appCtxResources; - } - } - // No MANIFEST.MF file OR no manifest-specified Spring context , then read all the - // .xml files available in the META-INF/spring folder. - Enumeration<JarEntry> entries = jf.entries(); - while (entries.hasMoreElements()) { - je = entries.nextElement(); - if (je.getName().startsWith("META-INF/spring/") && je.getName().endsWith(".xml")) { - appCtxResources.add(new URL("jar:" + url.getPath() + "/" + je.getName())); - } - } - return appCtxResources; - } - } catch (IOException e) { - throw new ContributionReadException("Error reading manifest " + manifestFile); - } - } - } - } - - throw new ContributionReadException( - "SpringXMLComponentTypeLoader getApplicationContextResource: " + "unable to read resource file " - + url); - } // end method getApplicationContextResource - - /** - * Creates a Service for the component type based on its name and Java interface - */ - public Service createService(Class<?> interfaze, String name) throws InvalidInterfaceException { - Service service = assemblyFactory.createService(); - JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract(); - service.setInterfaceContract(interfaceContract); - - // Set the name for the service - service.setName(name); - - // Set the call interface and, if present, the callback interface - JavaInterface callInterface = javaFactory.createJavaInterface(interfaze); - service.getInterfaceContract().setInterface(callInterface); - if (callInterface.getCallbackClass() != null) { - JavaInterface callbackInterface = javaFactory.createJavaInterface(callInterface.getCallbackClass()); - service.getInterfaceContract().setCallbackInterface(callbackInterface); - } - return service; - } // end method createService - - /** - * Creates a Reference for the component type based on its name and Java interface - */ - private org.apache.tuscany.sca.assembly.Reference createReference(Class<?> interfaze, String name) - throws InvalidInterfaceException { - org.apache.tuscany.sca.assembly.Reference reference = assemblyFactory.createReference(); - JavaInterfaceContract interfaceContract = javaFactory.createJavaInterfaceContract(); - reference.setInterfaceContract(interfaceContract); - - // Set the name of the reference to the supplied name and the multiplicity of the reference - // to 1..1 - for Spring implementations, this is the only multiplicity supported - reference.setName(name); - reference.setMultiplicity(Multiplicity.ONE_ONE); - - // Set the call interface and, if present, the callback interface - JavaInterface callInterface = javaFactory.createJavaInterface(interfaze); - reference.getInterfaceContract().setInterface(callInterface); - if (callInterface.getCallbackClass() != null) { - JavaInterface callbackInterface = javaFactory.createJavaInterface(callInterface.getCallbackClass()); - reference.getInterfaceContract().setCallbackInterface(callbackInterface); - } - - return reference; - } - - private class ContextClassLoader extends ClassLoader { - public ContextClassLoader(ModelResolver resolver, ProcessorContext context) { - super(); - this.resolver = resolver; - this.context = context; - } - - private ModelResolver resolver; - private ProcessorContext context; - - @Override - protected Class<?> findClass(String name) throws ClassNotFoundException { - return SpringXMLComponentTypeLoader.this.resolveClass(resolver, name, context); - } - - @Override - protected URL findResource(String name) { - try { - return resolveLocation(resolver, name, context); - } catch (Exception e) { - return null; - } - } - - @Override - protected Enumeration<URL> findResources(String name) throws IOException { - URL url = findResource(name); - if (url != null) { - return Collections.enumeration(Arrays.asList(url)); - } else { - Collection<URL> urls = Collections.emptyList(); - return Collections.enumeration(urls); - } - } - } -} // end class SpringXMLComponentTypeLoader diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java deleted file mode 100644 index 4b4144f0c8..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java +++ /dev/null @@ -1,244 +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.spring.xml; - -import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; - -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.xml.Constants; -import org.apache.tuscany.sca.assembly.xml.PolicySubjectProcessor; -import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.processor.ContributionReadException; -import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; -import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; -import org.apache.tuscany.sca.contribution.resolver.ModelResolver; -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.FactoryExtensionPoint; -import org.apache.tuscany.sca.implementation.spring.SpringImplementation; -import org.apache.tuscany.sca.implementation.spring.introspect.SpringXMLComponentTypeLoader; -import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.Problem.Severity; - -/** - * SpringArtifactProcessor is responsible for processing the XML of an <implementation.spring.../> - * element in an SCA SCDL file. - * - * @version $Rev$ $Date$ - */ -public class SpringImplementationProcessor extends BaseStAXArtifactProcessor implements - StAXArtifactProcessor<SpringImplementation> { - - private static final String LOCATION = "location"; - private static final String IMPLEMENTATION_SPRING = "implementation.spring"; - private static final QName IMPLEMENTATION_SPRING_QNAME = new QName(Constants.SCA11_NS, IMPLEMENTATION_SPRING); - private static final String MSG_LOCATION_MISSING = "Reading implementation.spring - location attribute missing"; - - private ExtensionPointRegistry registry; - private AssemblyFactory assemblyFactory; - private PolicySubjectProcessor policyProcessor; - - private FactoryExtensionPoint factories; - - public SpringImplementationProcessor(ExtensionPointRegistry registry) { - this.registry = registry; - this.factories = registry.getExtensionPoint(FactoryExtensionPoint.class); - this.assemblyFactory = factories.getFactory(AssemblyFactory.class); - this.policyProcessor = new PolicySubjectProcessor(registry); - } - - /** - * Report a exception. - * - * @param problems - * @param message - * @param model - */ - private void error(Monitor monitor, String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = - monitor.createProblem(this.getClass().getName(), - "impl-spring-validation-messages", - Severity.ERROR, - model, - message, - ex); - monitor.problem(problem); - } - } - - /** - * Report a error. - * - * @param problems - * @param message - * @param model - */ - private void error(Monitor monitor, String message, Object model, Object... messageParameters) { - if (monitor != null) { - Problem problem = - monitor.createProblem(this.getClass().getName(), - "impl-spring-validation-messages", - Severity.ERROR, - model, - message, - (Object[])messageParameters); - monitor.problem(problem); - } - } - - /* - * Read the XML and parse out the attributes. - * - * <implementation.spring.../> has a single required attribute: - * "location" - which is the target URI of of an archive file or a directory that contains the Spring - * application context files. - * If the resource identified by the location attribute is an archive file, then the file - * META-INF/MANIFEST.MF is read from the archive. - * If the location URI identifies a directory, then META-INF/MANIFEST.MF must exist - * underneath that directory. - * If the manifest file contains a header "Spring-Context" of the format: - * Spring-Context ::= path ( ';' path )* - * - * Where path is a relative path with respect to the location URI, then the set of paths - * specified in the header identify the context configuration files. - * If there is no MANIFEST.MF file or no Spring-Context header within that file, - * then the default behaviour is to build an application context using all the *.xml files - * in the META-INF/spring directory. - */ - public SpringImplementation read(XMLStreamReader reader, ProcessorContext context) - throws ContributionReadException, XMLStreamException { - - // Create the Spring implementation - SpringImplementation springImplementation = null; - - // Read the location attribute for the spring implementation - String springLocation = getURIString(reader, LOCATION); - if (springLocation != null) { - springImplementation = new SpringImplementation(); - springImplementation.setLocation(springLocation); - springImplementation.setUnresolved(true); - processComponentType(springImplementation); - } else { - error(context.getMonitor(), "LocationAttributeMissing", reader); - //throw new ContributionReadException(MSG_LOCATION_MISSING); - } - - // Read policies - policyProcessor.readPolicies(springImplementation, reader); - - // Skip to end element - while (reader.hasNext()) { - if (reader.next() == END_ELEMENT && IMPLEMENTATION_SPRING_QNAME.equals(reader.getName())) { - break; - } - } // end while - - return springImplementation; - } // end read - - /* - * Handles the component type for the Spring implementation - * @param springImplementation - a Spring implementation. The component type information - * is created for this implementation - * - */ - private void processComponentType(SpringImplementation springImplementation) { - - // Create a ComponentType and mark it unresolved - ComponentType componentType = assemblyFactory.createComponentType(); - componentType.setUnresolved(true); - springImplementation.setComponentType(componentType); - } // end processComponentType - - /* - * Write out the XML representation of the Spring implementation - * <implementation.spring location="..." /> - */ - public void write(SpringImplementation springImplementation, XMLStreamWriter writer, ProcessorContext context) - throws ContributionWriteException, XMLStreamException { - - // Write <implementation.spring> - writer.writeStartElement(Constants.SCA11_NS, IMPLEMENTATION_SPRING); - policyProcessor.writePolicyAttributes(springImplementation, writer); - - if (springImplementation.getLocation() != null) { - writer.writeAttribute(LOCATION, springImplementation.getLocation()); - } - - writer.writeEndElement(); - - } // end write - - /** - * Resolves the Spring implementation - loads the Spring application-context XML and - * derives the spring implementation componentType from it - */ - public void resolve(SpringImplementation springImplementation, ModelResolver resolver, ProcessorContext context) - throws ContributionResolveException { - - if (springImplementation == null) - return; - - Monitor monitor = context.getMonitor(); - /* Load the Spring component type by reading the Spring application context */ - SpringXMLComponentTypeLoader springLoader = new SpringXMLComponentTypeLoader(registry); - try { - // Load the Spring Implementation information from its application context file... - springLoader.load(springImplementation, resolver, context); - } catch (ContributionReadException e) { - ContributionResolveException ce = new ContributionResolveException(e); - error(monitor, "ContributionResolveException", resolver, ce); - throw ce; - } - - ComponentType ct = springImplementation.getComponentType(); - if (ct.isUnresolved()) { - // If the introspection fails to resolve, try to find a side file... - ComponentType componentType = resolver.resolveModel(ComponentType.class, ct, context); - if (componentType.isUnresolved()) { - error(monitor, "UnableToResolveComponentType", resolver); - //throw new ContributionResolveException("SpringArtifactProcessor: unable to resolve componentType for Spring component"); - } else { - springImplementation.setComponentType(componentType); - springImplementation.setUnresolved(false); - } - - } // end if - - } // end method resolve - - public QName getArtifactType() { - return IMPLEMENTATION_SPRING_QNAME; - } - - public Class<SpringImplementation> getModelType() { - return SpringImplementation.class; - } - -} // end class SpringArtifactProcessor diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java deleted file mode 100644 index a3dc353ffc..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java +++ /dev/null @@ -1,50 +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.spring.xml; - -import java.net.URL; -import java.util.List; - -import org.apache.tuscany.sca.contribution.processor.ProcessorContext; -import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; -import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; - -/** - * The utility interface to load Spring XML bean definitions into an application context - */ -public interface SpringXMLBeanDefinitionLoader { - /** - * @param resources - * @param serviceElements - * @param referenceElements - * @param propertyElements - * @param beanElements - * @param context - * @return - */ - Object load(List<URL> resources, - List<SpringSCAServiceElement> serviceElements, - List<SpringSCAReferenceElement> referenceElements, - List<SpringSCAPropertyElement> propertyElements, - List<SpringBeanElement> beanElements, - ProcessorContext context); -} diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder deleted file mode 100644 index 7ea615051e..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.assembly.builder.ImplementationBuilder +++ /dev/null @@ -1,18 +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.
-org.apache.tuscany.sca.implementation.spring.SpringImplementationBuilder;qname=http://docs.oasis-open.org/ns/opencsa/sca/200912#implementation.spring
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor deleted file mode 100644 index 880d6fade0..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor +++ /dev/null @@ -1,20 +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.
-
-# Implementation class for the artifact processor extension
-org.apache.tuscany.sca.implementation.spring.xml.SpringImplementationProcessor;qname=http://docs.oasis-open.org/ns/opencsa/sca/200912#implementation.spring,model=org.apache.tuscany.sca.implementation.spring.SpringImplementation
-
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions deleted file mode 100644 index 4a9270d094..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions +++ /dev/null @@ -1,17 +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.
-org/apache/tuscany/sca/implementation/spring/definitions.xml
diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/impl-spring-validation-messages.properties b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/impl-spring-validation-messages.properties deleted file mode 100644 index 28bd31ca11..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/impl-spring-validation-messages.properties +++ /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. -# -# -LocationAttributeMissing = Reading implementation.spring - location attribute missing -ContributionResolveException = ContributionResolveException occured due to: -UnableToResolveComponentType = SpringArtifactProcessor: unable to resolve componentType for Spring component -ScaServiceNameNotUnique = The value of the @name attribute of an <sca:service/> element MUST be unique amongst the <sca:service/> subelements of the <beans/> element -ScaReferenceNameNotUnique = The value of the @name attribute of an <sca:reference/> element MUST be unique amongst the <sca:reference/> subelements of the <beans/> element -ScaPropertyNameNotUnique = The value of the @name attribute of an <sca:property/> element MUST be unique amongst the <sca:property/> subelements of the <beans/> element -DefaultBeanDoesNotExist = The @default attribute of a <sca:reference/> element MUST have the value of the @name attribute of one of the <bean/> subelements of the <beans/> element. -TargetBeanDoesNotExist = The @target attribute of a <sca:service/> element MUST have the value of the @name attribute of one of the <bean/> subelements of the <beans/> element. diff --git a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/org/apache/tuscany/sca/implementation/spring/definitions.xml b/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/org/apache/tuscany/sca/implementation/spring/definitions.xml deleted file mode 100644 index 18e7b1e60a..0000000000 --- a/sca-java-2.x/branches/2.0-Beta2/modules/implementation-spring/src/main/resources/org/apache/tuscany/sca/implementation/spring/definitions.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> - -<!-- $Rev$ $Date$ --> - -<sca:definitions xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" - targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200912" - xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912" - xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"> - - <sca:implementationType type="sca:implementation.spring" mayProvide="" alwaysProvides=""/> - - </sca:definitions> |