summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/implementation-policies/CalculatorService-context.xml39
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/access/Calculator.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/access/CalculatorService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-access/CalculatorService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/Calculator.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/CalculatorService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/CalculatorService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/SpringImport-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/SpringImport-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/SpringHelloWorld-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/SpringHelloWorld-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/StockQuoteService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/StockQuoteService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/beanRefContext.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/beanRefContext.xml)4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/StockQuote.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/Calculator.composite4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/META-INF/spring/CalculatorService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/CalculatorService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/SpringFolderLocation.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/MANIFEST.MF (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/MANIFEST.MF)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/spring/SpringSCAProperty-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/spring/SpringSCAProperty-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/SpringJarLocation.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/spring-context.jar (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-jar/spring-context.jar)bin1471 -> 1471 bytes
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringDelegationHelloWorld-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringDelegationHelloWorld-context.xml)72
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringHelloWorld-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringHelloWorld-context.xml)60
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorld.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringHelloWorld.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringExplicitReference-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringExplicitReference-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringImplicitReference-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringImplicitReference-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringExplicitReference.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringImplicitReference.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringExplicitService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringExplicitService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringImplicitService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringImplicitService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringExplicitService.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringImplicitService.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/Calculator.composite2
-rw-r--r--branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/META-INF/spring/CalculatorService-context.xml (renamed from branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/spring-annotation/CalculatorService-context.xml)0
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/MultipleContextTestCase.java3
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/StockQuoteServer.java6
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/implementation/policies/CalculatorClient.java5
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/location/folder/SpringFolderLocationTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/location/jar/SpringJarLocationTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractHelloWorldTestCase.java5
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractSCATestCase.java22
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorldTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringHelloWorldTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringExplicitReferenceTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringImplicitReferenceTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringExplicitServiceTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringImplicitServiceTestCase.java4
-rw-r--r--branches/sca-java-1.x/itest/spring/src/test/java/spring/annotations/CalculatorClient.java1
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringContextTie.java5
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringImplementationStub.java24
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java50
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java294
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java4
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java18
-rw-r--r--branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java65
52 files changed, 436 insertions, 301 deletions
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/implementation-policies/CalculatorService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/implementation-policies/CalculatorService-context.xml
deleted file mode 100644
index 7c84965629..0000000000
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/implementation-policies/CalculatorService-context.xml
+++ /dev/null
@@ -1,39 +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"
- xmlns:sca="http://www.springframework.org/schema/sca"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
-
- <bean id="CalculatorServiceBean" class="calculator.CalculatorServiceImpl">
- <property name="addService" ref="addService"/>
- <property name="subtractService" ref="subtractService"/>
- <property name="multiplyService" ref="multiplyService"/>
- <property name="divideService" ref="divideService"/>
- </bean>
-
- <sca:reference name="addService" type="calculator.AddService"/>
- <sca:reference name="subtractService" type="calculator.SubtractService"/>
- <sca:reference name="multiplyService" type="calculator.MultiplyService"/>
- <sca:reference name="divideService" type="calculator.DivideService"/>
-
-</beans>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/Calculator.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/Calculator.composite
index 03116905fc..4704239620 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/Calculator.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/Calculator.composite
@@ -24,7 +24,7 @@
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
<component name="CalculatorServiceComponent">
- <implementation.spring location="META-INF/sca/context-access/CalculatorService-context.xml"/>
+ <implementation.spring location="CalculatorService-context.xml"/>
<reference name="addService" target="AddServiceComponent" />
<reference name="subtractService" target="SubtractServiceComponent" />
<reference name="multiplyService" target="MultiplyServiceComponent" />
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-access/CalculatorService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/CalculatorService-context.xml
index 87458b99a3..87458b99a3 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-access/CalculatorService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/access/CalculatorService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/Calculator.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/Calculator.composite
index 709de34a34..6662531971 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/Calculator.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/Calculator.composite
@@ -24,7 +24,7 @@
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
<component name="CalculatorServiceComponent">
- <implementation.spring location="META-INF/sca/context-imports/SpringImport-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringImport-context.xml"/>
<reference name="addService" target="AddServiceComponent" />
<reference name="subtractService" target="SubtractServiceComponent" />
<reference name="multiplyService" target="MultiplyServiceComponent" />
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/CalculatorService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/CalculatorService-context.xml
index 7c84965629..7c84965629 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/CalculatorService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/CalculatorService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/SpringImport-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/SpringImport-context.xml
index 3faed92fd2..3faed92fd2 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/SpringImport-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/imports/META-INF/spring/SpringImport-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/SpringHelloWorld-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/SpringHelloWorld-context.xml
index c20679241f..c20679241f 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/SpringHelloWorld-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/SpringHelloWorld-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/StockQuoteService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/StockQuoteService-context.xml
index 74473073ea..74473073ea 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/StockQuoteService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/StockQuoteService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/beanRefContext.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/beanRefContext.xml
index 930b92f4be..8d86820d44 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-multiple/beanRefContext.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/META-INF/spring/beanRefContext.xml
@@ -27,8 +27,8 @@
<bean id="beanRefFactory" class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
<list>
- <value>META-INF/sca/context-multiple/StockQuoteService-context.xml</value>
- <value>META-INF/sca/context-multiple/SpringHelloWorld-context.xml</value>
+ <value>context/multiple/META-INF/spring/StockQuoteService-context.xml</value>
+ <value>context/multiple/META-INF/spring/SpringHelloWorld-context.xml</value>
</list>
</constructor-arg>
</bean>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/StockQuote.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/StockQuote.composite
index 780795a7a0..eb40f30b3c 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/StockQuote.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/context/multiple/StockQuote.composite
@@ -29,7 +29,7 @@
</service>
<component name="StockQuoteServiceComponent">
- <implementation.spring location="META-INF/sca/context-multiple/beanRefContext.xml"/>
+ <implementation.spring location="META-INF/spring/beanRefContext.xml"/>
</component>
</composite>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/Calculator.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/Calculator.composite
index 0551dc60ef..98cd9ec225 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/Calculator.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/Calculator.composite
@@ -24,7 +24,7 @@
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
<component name="CalculatorServiceComponent">
- <implementation.spring location="META-INF/sca/implementation-policies/CalculatorService-context.xml">
+ <implementation.spring location="META-INF/spring/CalculatorService-context.xml">
<operation name="divide" requires="tuscany:logging"/>
<operation name="subtract" requires="tuscany:logging"/>
</implementation.spring>
@@ -51,7 +51,7 @@
</component>
<component name="AnotherCalculatorServiceComponent">
- <implementation.spring location="META-INF/sca/implementation-policies/CalculatorService-context.xml" requires="tuscany:logging"/>
+ <implementation.spring location="META-INF/spring/CalculatorService-context.xml" requires="tuscany:logging"/>
<reference name="addService" target="AddServiceComponent" />
<reference name="subtractService" target="SubtractServiceComponent" />
<reference name="multiplyService" target="MultiplyServiceComponent" />
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/CalculatorService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/META-INF/spring/CalculatorService-context.xml
index 7c84965629..7c84965629 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/context-imports/CalculatorService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/implementation/policies/META-INF/spring/CalculatorService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/SpringFolderLocation.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/SpringFolderLocation.composite
index 7f6268f6b5..50d6456737 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/SpringFolderLocation.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/SpringFolderLocation.composite
@@ -32,7 +32,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/location-folder"/>
+ <implementation.spring location="springapp"/>
<property name="TestProperty">Hello</property>
</component>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/MANIFEST.MF b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/MANIFEST.MF
index 950dbeba4c..950dbeba4c 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/MANIFEST.MF
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/MANIFEST.MF
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/spring/SpringSCAProperty-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/spring/SpringSCAProperty-context.xml
index d2f406294d..d2f406294d 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-folder/META-INF/spring/SpringSCAProperty-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/location/folder/springapp/META-INF/spring/SpringSCAProperty-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/SpringJarLocation.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/SpringJarLocation.composite
index 1f8792e4d8..b0b191801d 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/SpringJarLocation.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/SpringJarLocation.composite
@@ -32,7 +32,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/location-jar/spring-context.jar"/>
+ <implementation.spring location="spring-context.jar"/>
<property name="TestProperty">Hello</property>
</component>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-jar/spring-context.jar b/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/spring-context.jar
index d8ee59a610..d8ee59a610 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/location-jar/spring-context.jar
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/location/jar/spring-context.jar
Binary files differ
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringDelegationHelloWorld-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringDelegationHelloWorld-context.xml
index 18ab7e332d..932ebb1361 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringDelegationHelloWorld-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringDelegationHelloWorld-context.xml
@@ -1,37 +1,37 @@
-<?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.
--->
-<!-- Application context for the SpringHelloWorld testcase -->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:sca="http://www.springframework.org/schema/sca"
- xsi:schemaLocation="
-http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
-
- <bean id="delegateBean"
- class="org.apache.tuscany.sca.itest.spring.TestHelloWorldBean" lazy-init="true">
- </bean>
-
- <bean id="testBean"
- class="org.apache.tuscany.sca.itest.spring.TestHelloWorldDelegatorBean" lazy-init="true">
- <property name="delegate"><ref bean="delegateBean"/></property>
- </bean>
-
+<?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.
+-->
+<!-- Application context for the SpringHelloWorld testcase -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+ <bean id="delegateBean"
+ class="org.apache.tuscany.sca.itest.spring.TestHelloWorldBean" lazy-init="true">
+ </bean>
+
+ <bean id="testBean"
+ class="org.apache.tuscany.sca.itest.spring.TestHelloWorldDelegatorBean" lazy-init="true">
+ <property name="delegate"><ref bean="delegateBean"/></property>
+ </bean>
+
</beans> \ No newline at end of file
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringHelloWorld-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringHelloWorld-context.xml
index 62e4e077b6..c20679241f 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/SpringHelloWorld-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/META-INF/spring/SpringHelloWorld-context.xml
@@ -1,31 +1,31 @@
-<?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.
--->
-<!-- Application context for the SpringHelloWorld testcase -->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:sca="http://www.springframework.org/schema/sca"
- xsi:schemaLocation="
-http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
-
- <bean id="testBean" class="org.apache.tuscany.sca.itest.spring.TestHelloWorldBean" lazy-init="true">
- </bean>
-
+<?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.
+-->
+<!-- Application context for the SpringHelloWorld testcase -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/sca http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd">
+
+ <bean id="testBean" class="org.apache.tuscany.sca.itest.spring.TestHelloWorldBean" lazy-init="true">
+ </bean>
+
</beans> \ No newline at end of file
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorld.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorld.composite
index 70b2d5fdab..bd050135da 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorld.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorld.composite
@@ -26,7 +26,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/SpringDelegationHelloWorld-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringDelegationHelloWorld-context.xml"/>
</component>
</composite>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringHelloWorld.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringHelloWorld.composite
index bab9ecb528..1047d2a210 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringHelloWorld.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/org/apache/tuscany/sca/itest/spring/SpringHelloWorld.composite
@@ -26,7 +26,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/SpringHelloWorld-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringHelloWorld-context.xml"/>
</component>
</composite>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringExplicitReference-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringExplicitReference-context.xml
index d18d8312e3..d18d8312e3 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringExplicitReference-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringExplicitReference-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringImplicitReference-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringImplicitReference-context.xml
index df4b9b28cf..df4b9b28cf 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-references/SpringImplicitReference-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/META-INF/spring/SpringImplicitReference-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringExplicitReference.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringExplicitReference.composite
index ea0d002414..25adcc183e 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringExplicitReference.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringExplicitReference.composite
@@ -21,7 +21,7 @@
name="SpringExplicitReference">
<component name="ClientComponent">
- <implementation.spring location="META-INF/sca/sca-references/SpringExplicitReference-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringExplicitReference-context.xml"/>
<reference name="testReference" target="ReferenceComponent"/>
</component>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringImplicitReference.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringImplicitReference.composite
index 256eeb2dcc..31429e5f63 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringImplicitReference.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/references/SpringImplicitReference.composite
@@ -28,7 +28,7 @@
name="SpringImplicitReference">
<component name="ClientComponent">
- <implementation.spring location="META-INF/sca/sca-references/SpringImplicitReference-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringImplicitReference-context.xml"/>
<reference name="testReference" target="ReferenceComponent"/>
</component>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringExplicitService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringExplicitService-context.xml
index 194bc4bcc9..194bc4bcc9 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringExplicitService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringExplicitService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringImplicitService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringImplicitService-context.xml
index 1c63311367..1c63311367 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/sca-services/SpringImplicitService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/META-INF/spring/SpringImplicitService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringExplicitService.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringExplicitService.composite
index 5f851517e8..6958c28361 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringExplicitService.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringExplicitService.composite
@@ -27,7 +27,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/sca-services/SpringExplicitService-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringExplicitService-context.xml"/>
</component>
</composite>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringImplicitService.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringImplicitService.composite
index 482c81df23..3969eef213 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringImplicitService.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/sca/services/SpringImplicitService.composite
@@ -26,7 +26,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/sca-services/SpringImplicitService-context.xml"/>
+ <implementation.spring location="META-INF/spring/SpringImplicitService-context.xml"/>
</component>
</composite>
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/Calculator.composite b/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/Calculator.composite
index a8a1f5b703..2c0de830ab 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/Calculator.composite
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/Calculator.composite
@@ -24,7 +24,7 @@
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0">
<component name="CalculatorServiceComponent">
- <implementation.spring location="META-INF/sca/spring-annotation/CalculatorService-context.xml"/>
+ <implementation.spring location="META-INF/spring/CalculatorService-context.xml"/>
<property name="message">HelloWorld</property>
<reference name="addService" target="AddServiceComponent" />
<reference name="subtractService" target="SubtractServiceComponent" />
diff --git a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/spring-annotation/CalculatorService-context.xml b/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/META-INF/spring/CalculatorService-context.xml
index 4110a9a7b7..4110a9a7b7 100644
--- a/branches/sca-java-1.x/itest/spring/src/main/resources/META-INF/sca/spring-annotation/CalculatorService-context.xml
+++ b/branches/sca-java-1.x/itest/spring/src/main/resources/spring/annotations/META-INF/spring/CalculatorService-context.xml
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/MultipleContextTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/MultipleContextTestCase.java
index 75b296bf32..3ea2d0c207 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/MultipleContextTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/MultipleContextTestCase.java
@@ -19,11 +19,12 @@
package context.multiple;
import junit.framework.TestCase;
-
+import org.junit.Ignore;
/**
* Tests out the big bank service
*
*/
+@Ignore("TUSCANY-3069")
public class MultipleContextTestCase extends TestCase {
public void testServer() throws Exception {
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/StockQuoteServer.java b/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/StockQuoteServer.java
index ca64d5fcb9..0f4d9f7c42 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/StockQuoteServer.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/context/multiple/StockQuoteServer.java
@@ -18,6 +18,9 @@
*/
package context.multiple;
+import java.io.File;
+
+import org.apache.tuscany.sca.node.SCAContribution;
import org.apache.tuscany.sca.node.SCANode;
import org.apache.tuscany.sca.node.SCANodeFactory;
import org.springframework.context.ApplicationContext;
@@ -34,7 +37,8 @@ public class StockQuoteServer {
System.out.println("Starting the Sample SCA StockQuote Service...");
SCANodeFactory factory = SCANodeFactory.newInstance();
- SCANode node = factory.createSCANodeFromClassLoader("context/multiple/StockQuote.composite", StockQuoteServer.class.getClassLoader());
+ SCANode node = factory.createSCANode(new File("src/main/resources/context/multiple/StockQuote.composite").toURL().toString(),
+ new SCAContribution("TestContribution", new File("src/main/resources/context/multiple/").toURL().toString()));
node.start();
// Method 1: To access the Spring Application Context instance
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/implementation/policies/CalculatorClient.java b/branches/sca-java-1.x/itest/spring/src/test/java/implementation/policies/CalculatorClient.java
index 27e634d301..bc29f54d86 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/implementation/policies/CalculatorClient.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/implementation/policies/CalculatorClient.java
@@ -46,8 +46,9 @@ public class CalculatorClient {
}
SCANodeFactory factory = SCANodeFactory.newInstance();
- SCANode node = factory.createSCANodeFromClassLoader("implementation/policies/Calculator.composite", CalculatorServiceImpl.class.getClassLoader());
- node.start();
+ SCANode node = factory.createSCANode(new File("src/main/resources/implementation/policies/Calculator.composite").toURL().toString(),
+ new SCAContribution("TestContribution", new File("src/main/resources/implementation/policies/").toURL().toString()));
+ node.start();
CalculatorService calculatorService =
((SCAClient)node).getService(CalculatorService.class, "CalculatorServiceComponent");
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/location/folder/SpringFolderLocationTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/location/folder/SpringFolderLocationTestCase.java
index 88ac2e8cb5..bd1150e99a 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/location/folder/SpringFolderLocationTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/location/folder/SpringFolderLocationTestCase.java
@@ -37,5 +37,9 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringFolderLocationTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringFolderLocationTestCase() {
+ super("SpringFolderLocation.composite", "location/folder");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/location/jar/SpringJarLocationTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/location/jar/SpringJarLocationTestCase.java
index e3600a355c..102cd69874 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/location/jar/SpringJarLocationTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/location/jar/SpringJarLocationTestCase.java
@@ -37,5 +37,9 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringJarLocationTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringJarLocationTestCase() {
+ super("SpringJarLocation.composite", "location/jar");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractHelloWorldTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractHelloWorldTestCase.java
index 634e3d34af..aa63fbd5c2 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractHelloWorldTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractHelloWorldTestCase.java
@@ -19,7 +19,6 @@
package org.apache.tuscany.sca.itest.spring;
-
/**
* Basic "hello world" style test case for testing Spring component implementation
*
@@ -29,6 +28,10 @@ public abstract class AbstractHelloWorldTestCase extends AbstractSCATestCase<Hel
/**
* Calls the hello world service and checks that it gives the right response...
*/
+ public AbstractHelloWorldTestCase(String compositeName, String contributionLocation) {
+ super(compositeName, contributionLocation);
+ }
+
public void testHello() throws Exception {
assertEquals("Hello petra", service.sayHello("petra"));
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractSCATestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractSCATestCase.java
index aeb7918add..e9fc938d7c 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractSCATestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/AbstractSCATestCase.java
@@ -21,16 +21,36 @@ package org.apache.tuscany.sca.itest.spring;
import junit.framework.TestCase;
+import java.io.File;
+import java.net.MalformedURLException;
+
import org.apache.tuscany.sca.host.embedded.SCADomain;
public abstract class AbstractSCATestCase<T> extends TestCase {
protected SCADomain domain;
+ protected String compositeName;
+ protected String contributionLocation;
protected T service;
+
+ public AbstractSCATestCase(String compositeName, String contributionLocation) {
+ super();
+ this.compositeName = compositeName;
+ this.contributionLocation = contributionLocation;
+ try {
+ if (contributionLocation != null) {
+ File f = new File("target/classes/" + contributionLocation);
+ this.contributionLocation = f.toURL().toString();
+ }
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ }
@Override
protected void setUp() throws Exception {
- domain = SCADomain.newInstance(getCompositeName());
+ domain = SCADomain.newInstance("http://localhost", contributionLocation, compositeName);
+ //domain = SCADomain.newInstance(getCompositeName());
service = domain.getService(getServiceClass(), "ClientComponent");
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorldTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorldTestCase.java
index 4088691ccd..11ed16e6b4 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorldTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringDelegationHelloWorldTestCase.java
@@ -28,4 +28,8 @@ package org.apache.tuscany.sca.itest.spring;
*/
public class SpringDelegationHelloWorldTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringDelegationHelloWorldTestCase() {
+ super("SpringDelegationHelloWorld.composite", "org/apache/tuscany/sca/itest/spring");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringHelloWorldTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringHelloWorldTestCase.java
index 840bf59b73..bec19b76de 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringHelloWorldTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/org/apache/tuscany/sca/itest/spring/SpringHelloWorldTestCase.java
@@ -29,4 +29,8 @@ package org.apache.tuscany.sca.itest.spring;
*/
public class SpringHelloWorldTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringHelloWorldTestCase() {
+ super("SpringHelloWorld.composite", "org/apache/tuscany/sca/itest/spring");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringExplicitReferenceTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringExplicitReferenceTestCase.java
index 9bc12c3e7b..603d2524f6 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringExplicitReferenceTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringExplicitReferenceTestCase.java
@@ -38,4 +38,8 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringExplicitReferenceTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringExplicitReferenceTestCase() {
+ super("SpringExplicitReference.composite", "sca/references");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringImplicitReferenceTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringImplicitReferenceTestCase.java
index 52ea64a3ed..757f12c08b 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringImplicitReferenceTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/sca/references/SpringImplicitReferenceTestCase.java
@@ -39,6 +39,10 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringImplicitReferenceTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringImplicitReferenceTestCase() {
+ super("SpringImplicitReference.composite", "sca/references");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringExplicitServiceTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringExplicitServiceTestCase.java
index 35f44b2af7..03af1e6b12 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringExplicitServiceTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringExplicitServiceTestCase.java
@@ -33,4 +33,8 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringExplicitServiceTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringExplicitServiceTestCase() {
+ super("SpringExplicitService.composite", "sca/services");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringImplicitServiceTestCase.java b/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringImplicitServiceTestCase.java
index 488bdcb202..6f17be1970 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringImplicitServiceTestCase.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/sca/services/SpringImplicitServiceTestCase.java
@@ -31,4 +31,8 @@ import org.apache.tuscany.sca.itest.spring.AbstractHelloWorldTestCase;
*/
public class SpringImplicitServiceTestCase extends AbstractHelloWorldTestCase {
// super class does it all getting composite based on this class name
+
+ public SpringImplicitServiceTestCase() {
+ super("SpringImplicitService.composite", "sca/services");
+ }
}
diff --git a/branches/sca-java-1.x/itest/spring/src/test/java/spring/annotations/CalculatorClient.java b/branches/sca-java-1.x/itest/spring/src/test/java/spring/annotations/CalculatorClient.java
index c21561a962..34e10de85b 100644
--- a/branches/sca-java-1.x/itest/spring/src/test/java/spring/annotations/CalculatorClient.java
+++ b/branches/sca-java-1.x/itest/spring/src/test/java/spring/annotations/CalculatorClient.java
@@ -27,7 +27,6 @@ import org.apache.tuscany.sca.node.SCANode;
import org.apache.tuscany.sca.node.SCANodeFactory;
import calculator.CalculatorService;
-import calculator.CalculatorServiceImpl;
/**
diff --git a/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringContextTie.java b/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringContextTie.java
index 2cd60d201f..94556eae57 100644
--- a/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringContextTie.java
+++ b/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringContextTie.java
@@ -88,6 +88,7 @@ public class SpringContextTie {
private AbstractApplicationContext createApplicationContext(SCAParentApplicationContext scaParentContext, URL resource) {
XmlBeanFactory beanFactory = new XmlBeanFactory(new UrlResource(resource));
+ beanFactory.setBeanClassLoader(implementation.getClassLoader());
AbstractApplicationContext appContext = null;
for (String bean : beanFactory.getBeanDefinitionNames()) {
@@ -123,8 +124,9 @@ public class SpringContextTie {
}
}
- appContext = new ClassPathXmlApplicationContext(listValues, false, scaParentContext);
+ appContext = new ClassPathXmlApplicationContext(listValues, false, scaParentContext);
appContext.refresh();
+ appContext.getBeanFactory().setBeanClassLoader(implementation.getClassLoader());
if (isAnnotationSupported)
includeAnnotationProcessors(appContext.getBeanFactory());
return appContext;
@@ -135,6 +137,7 @@ public class SpringContextTie {
if (isAnnotationSupported)
includeAnnotationProcessors(beanFactory);
appContext = new GenericApplicationContext(beanFactory, scaParentContext);
+ appContext.setClassLoader(implementation.getClassLoader());
return appContext;
}
diff --git a/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringImplementationStub.java b/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringImplementationStub.java
index 3139c9c500..b123be8b5c 100644
--- a/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringImplementationStub.java
+++ b/branches/sca-java-1.x/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/runtime/context/SpringImplementationStub.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.implementation.spring.runtime.context;
@@ -29,7 +29,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException;
* 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.
+ * in the implementation-spring module for what the tie does.
*/
public class SpringImplementationStub {
@@ -39,7 +39,8 @@ public class SpringImplementationStub {
Method getComponentName;
Method getComponentTie;
Method getPropertyValueTie;
-
+ Method getClassLoader;
+
public SpringImplementationStub(Object tie) {
this.tie = tie;
Class<?> tieClass = tie.getClass();
@@ -49,11 +50,12 @@ public class SpringImplementationStub {
getComponentName = tieClass.getMethod("getComponentName");
getComponentTie = tieClass.getMethod("getComponentTie");
getPropertyValueTie = tieClass.getMethod("getPropertyValueTie");
+ getClassLoader = tieClass.getMethod("getClassLoader");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
-
+
public String getURI() {
try {
@@ -114,4 +116,14 @@ public class SpringImplementationStub {
throw new RuntimeException(e);
}
}
+
+ public ClassLoader getClassLoader() {
+ try {
+
+ return (ClassLoader) getClassLoader.invoke(tie);
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
index 48608a4b34..bee0e462fc 100644
--- a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
+++ b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.implementation.spring;
@@ -35,9 +35,9 @@ import org.apache.tuscany.sca.interfacedef.InterfaceContract;
import org.apache.tuscany.sca.runtime.RuntimeComponent;
/**
- * Represents a Spring implementation.
- *
- * @version $Rev: 511195 $ $Date: 2007-02-24 02:29:46 +0000 (Sat, 24 Feb 2007) $
+ * Represents a Spring implementation.
+ *
+ * @version $Rev: 511195 $ $Date: 2007-02-24 02:29:46 +0000 (Sat, 24 Feb 2007) $
*/
public class SpringImplementation extends ImplementationImpl implements Implementation, ComponentPreProcessor, Extensible {
@@ -53,6 +53,8 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
// List of unresolved bean property references
private Hashtable<String, Reference> unresolvedBeanRef;
+ private ClassLoader classLoader;
+
public SpringImplementation() {
this.location = null;
this.resource = null;
@@ -84,8 +86,8 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
return resource;
}
- /*
- * Returns the componentType for this Spring implementation
+ /*
+ * Returns the componentType for this Spring implementation
*/
public ComponentType getComponentType() {
return componentType;
@@ -145,35 +147,35 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
} // end method setPropertyClass
/**
- * Gets the Java Class for an SCA property
+ * 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
+ * Use preProcess to validate and map the references and properties dynamically
*/
public void preProcess(Component component) {
if (!(component instanceof RuntimeComponent))
return;
-
+
RuntimeComponent rtc = (RuntimeComponent) component;
-
+
for (Reference reference : rtc.getReferences()) {
if (unresolvedBeanRef.containsKey(reference.getName())) {
Reference ref = unresolvedBeanRef.get(reference.getName());
@@ -184,14 +186,14 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
}
for (Property property : rtc.getProperties()) {
- if (unresolvedBeanRef.containsKey(property.getName())) {
+ 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 {
@@ -203,7 +205,7 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
}
return newReference;
}
-
+
protected Property createProperty(Property property) {
Property newProperty;
try {
@@ -213,4 +215,12 @@ public class SpringImplementation extends ImplementationImpl implements Implemen
}
return newProperty;
}
+
+ public ClassLoader getClassLoader() {
+ return classLoader;
+ }
+
+ public void setClassLoader(ClassLoader classLoader) {
+ this.classLoader = classLoader;
+ }
}
diff --git a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java
index 3ed3060d8f..d021d27dfc 100644
--- a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java
+++ b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java
@@ -24,8 +24,14 @@ import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
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.Iterator;
import java.util.List;
import java.util.Map;
@@ -45,6 +51,11 @@ 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.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.implementation.java.JavaImplementation;
@@ -68,28 +79,30 @@ import org.apache.tuscany.sca.policy.PolicyFactory;
/**
* Introspects a Spring XML application-context configuration file to create <implementation-spring../>
- * component type information.
- *
+ * component type information.
+ *
*
* @version $Rev: 512919 $ $Date: 2007-02-28 19:32:56 +0000 (Wed, 28 Feb 2007) $
*/
public class SpringXMLComponentTypeLoader {
-
+ private XMLInputFactory xmlInputFactory;
+ private ContributionFactory contributionFactory;
private AssemblyFactory assemblyFactory;
private JavaInterfaceFactory javaFactory;
private PolicyFactory policyFactory;
- private ClassLoader cl;
private SpringBeanIntrospector beanIntrospector;
- private String contextPath;
- public SpringXMLComponentTypeLoader(AssemblyFactory assemblyFactory,
+ public SpringXMLComponentTypeLoader(ModelFactoryExtensionPoint factories,
+ AssemblyFactory assemblyFactory,
JavaInterfaceFactory javaFactory,
PolicyFactory policyFactory) {
super();
this.assemblyFactory = assemblyFactory;
this.javaFactory = javaFactory;
this.policyFactory = policyFactory;
+ this.contributionFactory = factories.getFactory(ContributionFactory.class);
+ this.xmlInputFactory = factories.getFactory(XMLInputFactory.class);
}
protected Class<SpringImplementation> getImplementationClass() {
@@ -97,11 +110,11 @@ public class SpringXMLComponentTypeLoader {
}
/**
- * Base method which loads the component type from the application-context attached to the
+ * Base method which loads the component type from the application-context attached to the
* Spring implementation
- *
+ *
*/
- public void load(SpringImplementation implementation) throws ContributionReadException {
+ public void load(SpringImplementation implementation, ModelResolver resolver) throws ContributionReadException {
//System.out.println("Spring TypeLoader - load method start");
ComponentType componentType = implementation.getComponentType();
/* Check that there is a component type object already set */
@@ -110,45 +123,54 @@ public class SpringXMLComponentTypeLoader {
}
if (componentType.isUnresolved()) {
/* Fetch the location of the application-context file from the implementation */
- loadFromXML(implementation);
+ loadFromXML(implementation, resolver);
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) throws ClassNotFoundException {
+ ClassReference classReference = new ClassReference(className);
+ classReference = resolver.resolveModel(ClassReference.class, classReference);
+ 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
+ * 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) throws ContributionReadException {
+ private void loadFromXML(SpringImplementation implementation, ModelResolver resolver) throws ContributionReadException {
XMLStreamReader reader;
List<SpringBeanElement> beans = new ArrayList<SpringBeanElement>();
List<SpringSCAServiceElement> services = new ArrayList<SpringSCAServiceElement>();
List<SpringSCAReferenceElement> references = new ArrayList<SpringSCAReferenceElement>();
- List<SpringSCAPropertyElement> scaproperties = new ArrayList<SpringSCAPropertyElement>();
+ List<SpringSCAPropertyElement> scaproperties = new ArrayList<SpringSCAPropertyElement>();
URL resource;
- contextPath = implementation.getLocation();
+ String contextPath = implementation.getLocation();
try {
- // FIXME - is the ContextClassLoader the right place to start the search?
- cl = Thread.currentThread().getContextClassLoader();
+ resource = resolveLocation(resolver, contextPath);
+ resource = getApplicationContextResource(resource);
- resource = getApplicationContextResource(contextPath, cl);
+ implementation.setClassLoader(new ContextClassLoader(resolver));
implementation.setResource(resource);
// The URI is used to uniquely identify the Implementation
- implementation.setURI(resource.toString());
- // FIXME - need a better way to handle the XMLInputFactory than allocating a new one every time
- XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
- reader = xmlFactory.createXMLStreamReader(resource.openStream());
+ implementation.setURI(resource.toString());
+ reader = xmlInputFactory.createXMLStreamReader(resource.openStream());
- // System.out.println("Spring TypeLoader - starting to read context file");
- readContextDefinition(reader, beans, services, references, scaproperties);
+ // System.out.println("Spring TypeLoader - starting to read context file");
+ readContextDefinition(resolver, reader, contextPath, beans, services, references, scaproperties);
} catch (IOException e) {
throw new ContributionReadException(e);
@@ -159,44 +181,64 @@ public class SpringXMLComponentTypeLoader {
/* 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, beans, services, references, scaproperties);
+ generateComponentType(implementation, resolver, beans, services, references, scaproperties);
return;
} // end method loadFromXML
+
+ private URL resolveLocation(ModelResolver resolver, String contextPath) throws MalformedURLException,
+ ContributionReadException {
+ URL resource = null;
+ URI uri = URI.create(contextPath);
+ if (!uri.isAbsolute()) {
+ Artifact artifact = contributionFactory.createArtifact();
+ artifact.setUnresolved(true);
+ artifact.setURI(contextPath);
+ artifact = resolver.resolveModel(Artifact.class, artifact);
+ if (!artifact.isUnresolved()) {
+ resource = new URL(artifact.getLocation());
+ } else {
+ throw new ContributionReadException("Location cannot be resloved: " + contextPath);
+ }
+ } else {
+ resource = new URL(contextPath);
+ }
+ return resource;
+ }
+
/**
* Method which returns the XMLStreamReader for the Spring application-context.xml file
* specified in the location attribute
*/
- private XMLStreamReader getApplicationContextReader(String location) throws ContributionReadException {
-
+ private XMLStreamReader getApplicationContextReader(ModelResolver resolver, String location) throws ContributionReadException {
+
try {
- // FIXME - is the ContextClassLoader the right place to start the search?
- cl = Thread.currentThread().getContextClassLoader();
- URL resource = getApplicationContextResource(location, cl);
- // FIXME - need a better way to handle the XMLInputFactory than allocating a new one every time
- XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
- XMLStreamReader reader = xmlFactory.createXMLStreamReader(resource.openStream());
+ URL resource = getApplicationContextResource(resolveLocation(resolver, location));
+ XMLStreamReader reader =
+ xmlInputFactory.createXMLStreamReader(resource.openStream());
return reader;
} catch (IOException e) {
throw new ContributionReadException(e);
} catch (XMLStreamException e) {
throw new ContributionReadException(e);
}
- }
-
+ }
+
/**
- * Method which reads the spring context definitions from Spring application-context.xml
- * file and identifies the defined beans, properties, services and references
+ * Method which reads the spring context definitions from Spring application-context.xml
+ * file and identifies the defined beans, properties, services and references
*/
- private void readContextDefinition(XMLStreamReader reader,
- List<SpringBeanElement> beans,
- List<SpringSCAServiceElement> services,
- List<SpringSCAReferenceElement> references,
- List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException {
-
+ private void readContextDefinition(ModelResolver resolver,
+ XMLStreamReader reader,
+ String contextPath,
+ List<SpringBeanElement> beans,
+ List<SpringSCAServiceElement> services,
+ List<SpringSCAReferenceElement> references,
+ List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException {
+
SpringBeanElement bean = null;
-
+
try {
boolean completed = false;
while (!completed) {
@@ -210,9 +252,9 @@ public class SpringXMLComponentTypeLoader {
if (location != null) {
// FIXME - need to find a right way of generating this path
String resourcePath = contextPath.substring(0, contextPath.lastIndexOf("/")+1) + location;
- XMLStreamReader ireader = getApplicationContextReader(resourcePath);
+ XMLStreamReader ireader = getApplicationContextReader(resolver, resourcePath);
// Read the context definition for the identified imported resource
- readContextDefinition(ireader, beans, services, references, scaproperties);
+ readContextDefinition(resolver, ireader, contextPath, beans, services, references, scaproperties);
}
} else if (SpringImplementationConstants.SERVICE_ELEMENT.equals(qname)) {
SpringSCAServiceElement service =
@@ -234,7 +276,7 @@ public class SpringXMLComponentTypeLoader {
.getAttributeValue(null, "class"));
beans.add(bean);
// Read the <bean> element and its child elements
- readBeanDefinition(reader, bean, beans, services, references, scaproperties);
+ readBeanDefinition(resolver, reader, contextPath, bean, beans, services, references, scaproperties);
} // end if*/
break;
case END_ELEMENT:
@@ -249,24 +291,26 @@ public class SpringXMLComponentTypeLoader {
throw new ContributionReadException(e);
}
}
-
-
+
+
/**
* Method which reads the bean definitions from Spring application-context.xml file and identifies
- * the defined beans, properties, services and references
+ * the defined beans, properties, services and references
*/
- private void readBeanDefinition(XMLStreamReader reader,
- SpringBeanElement bean,
- List<SpringBeanElement> beans,
- List<SpringSCAServiceElement> services,
- List<SpringSCAReferenceElement> references,
- List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException {
-
+ private void readBeanDefinition(ModelResolver resolver,
+ XMLStreamReader reader,
+ String contextPath,
+ SpringBeanElement bean,
+ List<SpringBeanElement> beans,
+ List<SpringSCAServiceElement> services,
+ List<SpringSCAReferenceElement> references,
+ List<SpringSCAPropertyElement> scaproperties) throws ContributionReadException {
+
SpringBeanElement innerbean = null;
SpringPropertyElement property = null;
SpringConstructorArgElement constructorArg = null;
int autoConstructorIndex = -1;
-
+
try {
boolean completed = false;
while (!completed) {
@@ -278,13 +322,13 @@ public class SpringXMLComponentTypeLoader {
.getAttributeValue(null, "class"));
innerbean.setInnerBean(true);
beans.add(innerbean);
- readBeanDefinition(reader, innerbean, beans, services, references, scaproperties);
+ readBeanDefinition(resolver, reader, contextPath, innerbean, beans, services, references, scaproperties);
} else if (SpringImplementationConstants.PROPERTY_ELEMENT.equals(qname)) {
property = new SpringPropertyElement(reader.getAttributeValue(null, "name"), reader
.getAttributeValue(null, "ref"));
bean.addProperty(property);
} else if (SpringImplementationConstants.CONSTRUCTORARG_ELEMENT.equals(qname)) {
- constructorArg = new SpringConstructorArgElement(reader.getAttributeValue(null, "ref"),
+ constructorArg = new SpringConstructorArgElement(reader.getAttributeValue(null, "ref"),
reader.getAttributeValue(null, "type"));
autoConstructorIndex++;
constructorArg.setAutoIndex(autoConstructorIndex);
@@ -294,17 +338,17 @@ public class SpringXMLComponentTypeLoader {
String value = reader.getAttributeValue(null, "value");
constructorArg.addValue(value);
if ((value.indexOf(".xml") != -1)) {
- if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) {
- XMLStreamReader creader = getApplicationContextReader(value);
+ if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) {
+ XMLStreamReader creader = getApplicationContextReader(resolver, value);
// Read the context definition for the constructor-arg resources
- readContextDefinition(creader, beans, services, references, scaproperties);
+ readContextDefinition(resolver, creader, contextPath, beans, services, references, scaproperties);
}
}
}
bean.addCustructorArgs(constructorArg);
} else if (SpringImplementationConstants.REF_ELEMENT.equals(qname)) {
String ref = reader.getAttributeValue(null, "bean");
- // Check if the parent element is a property
+ // Check if the parent element is a property
if (property != null) property.setRef(ref);
// Check if the parent element is a constructor-arg
if (constructorArg != null) constructorArg.setRef(ref);
@@ -315,10 +359,10 @@ public class SpringXMLComponentTypeLoader {
constructorArg.addValue(value);
// Identify the XML resource specified for the constructor-arg element
if ((value.indexOf(".xml") != -1)) {
- if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) {
- XMLStreamReader creader = getApplicationContextReader(value);
+ if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) {
+ XMLStreamReader creader = getApplicationContextReader(resolver, value);
// Read the context definition for the constructor-arg resources
- readContextDefinition(creader, beans, services, references, scaproperties);
+ readContextDefinition(resolver, creader, contextPath, beans, services, references, scaproperties);
}
}
}
@@ -345,6 +389,7 @@ public class SpringXMLComponentTypeLoader {
* 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,
@@ -354,9 +399,9 @@ public class SpringXMLComponentTypeLoader {
* 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
+ * 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
+ * 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
*/
@@ -364,11 +409,11 @@ public class SpringXMLComponentTypeLoader {
ComponentType componentType = implementation.getComponentType();
try {
- // Deal with the services first....
+ // Deal with the services first....
Iterator<SpringSCAServiceElement> its = services.iterator();
while (its.hasNext()) {
SpringSCAServiceElement serviceElement = its.next();
- Class<?> interfaze = cl.loadClass(serviceElement.getType());
+ Class<?> interfaze = resolveClass(resolver, serviceElement.getType());
Service theService = createService(interfaze, serviceElement.getName());
componentType.getServices().add(theService);
// Add this service to the Service / Bean map
@@ -384,11 +429,11 @@ public class SpringXMLComponentTypeLoader {
Iterator<SpringSCAReferenceElement> itr = references.iterator();
while (itr.hasNext()) {
SpringSCAReferenceElement referenceElement = itr.next();
- Class<?> interfaze = cl.loadClass(referenceElement.getType());
+ Class<?> interfaze = resolveClass(resolver, referenceElement.getType());
Reference theReference = createReference(interfaze, referenceElement.getName());
componentType.getReferences().add(theReference);
} // end while
-
+
// Next handle the properties
Iterator<SpringSCAPropertyElement> itsp = scaproperties.iterator();
while (itsp.hasNext()) {
@@ -404,7 +449,7 @@ public class SpringXMLComponentTypeLoader {
componentType.getProperties().add(theProperty);
// Remember the Java Class (ie the type) for this property
implementation.setPropertyClass(theProperty.getName(), propType);
- } // end if
+ } // end if
} // end while
// Finally deal with the beans
@@ -418,7 +463,7 @@ public class SpringXMLComponentTypeLoader {
// If its a innerBean, ignore it
if (beanElement.isInnerBean()) continue;
// Load the Spring bean class
- Class<?> beanClass = cl.loadClass(beanElement.getClassName());
+ Class<?> beanClass = resolveClass(resolver, beanElement.getClassName());
// Introspect the bean
beanIntrospector =
new SpringBeanIntrospector(assemblyFactory, javaFactory, policyFactory, beanElement.getCustructorArgs());
@@ -434,15 +479,15 @@ public class SpringXMLComponentTypeLoader {
}
} // end while
} // end if
-
+
itb = beans.iterator();
while (itb.hasNext()) {
- SpringBeanElement beanElement = itb.next();
+ SpringBeanElement beanElement = itb.next();
// Ignore if the bean has no properties and constructor arguments
- if (beanElement.getProperties().isEmpty() && beanElement.getCustructorArgs().isEmpty())
+ if (beanElement.getProperties().isEmpty() && beanElement.getCustructorArgs().isEmpty())
continue;
-
- Class<?> beanClass = cl.loadClass(beanElement.getClassName());
+
+ Class<?> beanClass = resolveClass(resolver, beanElement.getClassName());
// Introspect the bean
beanIntrospector =
new SpringBeanIntrospector(assemblyFactory, javaFactory, policyFactory, beanElement.getCustructorArgs());
@@ -454,7 +499,7 @@ public class SpringXMLComponentTypeLoader {
// the component type of the Spring Assembly
List<Reference> beanReferences = beanComponentType.getReferences();
List<Property> beanProperties = beanComponentType.getProperties();
-
+
Iterator<SpringPropertyElement> itp = beanElement.getProperties().iterator();
while (itp.hasNext()) {
SpringPropertyElement propertyElement = itp.next();
@@ -469,33 +514,33 @@ public class SpringXMLComponentTypeLoader {
componentType.getReferences().add(reference);
} // 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 = cl.loadClass((propertyMap.get(propertyElement.getName()).getType()).getName());
+ Class<?> interfaze = resolveClass(resolver, (propertyMap.get(propertyElement.getName()).getType()).getName());
Reference theReference = createReference(interfaze, propertyElement.getRef());
implementation.setUnresolvedBeanRef(propertyElement.getRef(), theReference);
} // end if
} // end for
} // end if
} // end while
-
+
Iterator<SpringConstructorArgElement> itcr = beanElement.getCustructorArgs().iterator();
while (itcr.hasNext()) {
SpringConstructorArgElement conArgElement = itcr.next();
if (propertyRefUnresolved(conArgElement.getRef(), beans, references, scaproperties)) {
for (JavaParameterImpl parameter : constructor.getParameters()) {
String paramType = parameter.getType().getName();
- Class<?> interfaze = cl.loadClass(paramType);
+ Class<?> interfaze = resolveClass(resolver, paramType);
// 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())) ||
- (conArgElement.getAutoIndex() == parameter.getIndex()))
+ if ((conArgElement.getType() != null && paramType.equals(conArgElement.getType())) ||
+ (conArgElement.getIndex() != -1 && (conArgElement.getIndex() == parameter.getIndex())) ||
+ (conArgElement.getAutoIndex() == parameter.getIndex()))
{
if (parameter.getClassifer().getName().equals("org.osoa.sca.annotations.Reference")) {
Reference theReference = createReference(interfaze, conArgElement.getRef());
@@ -507,11 +552,11 @@ public class SpringXMLComponentTypeLoader {
Reference theReference = createReference(interfaze, conArgElement.getRef());
implementation.setUnresolvedBeanRef(conArgElement.getRef(), theReference);
}
- }
- } // end for
+ }
+ } // end for
} // end if
} // end while
-
+
} // end while
} catch (ClassNotFoundException e) {
@@ -520,7 +565,7 @@ public class SpringXMLComponentTypeLoader {
} catch (InvalidInterfaceException e) {
throw new ContributionReadException(e);
} catch (ContributionResolveException e) {
-
+
} // end try
// If we get here, the Spring assembly component type is resolved
@@ -592,25 +637,24 @@ public class SpringXMLComponentTypeLoader {
* @param locationAttr - the location attribute from the <implementation.spring../> element
* @param cl - the ClassLoader for the Spring implementation
*/
- protected URL getApplicationContextResource(String locationAttr, ClassLoader cl)
+ protected URL getApplicationContextResource(URL url)
throws ContributionReadException {
File manifestFile = null;
File appXmlFile;
File locationFile = null;
-
- URL url = cl.getResource(locationAttr);
+
if (url != null) {
String path = url.getPath();
- locationFile = new File(path);
+ locationFile = new File(path);
} else {
throw new ContributionReadException(
- "SpringXMLLoader getApplicationContextResource: " + "unable to find resource file "
- + locationAttr);
+ "SpringXMLLoader getApplicationContextResource: " + "unable to find resource file "
+ + url);
}
if (locationFile.isDirectory()) {
try {
- manifestFile = new File(locationFile, "META-INF"+ File.separator +"MANIFEST.MF");
+ manifestFile = new File(locationFile, "META-INF"+ File.separator +"MANIFEST.MF");
if (manifestFile.exists()) {
Manifest mf = new Manifest(new FileInputStream(manifestFile));
Attributes mainAttrs = mf.getMainAttributes();
@@ -623,7 +667,7 @@ public class SpringXMLComponentTypeLoader {
}
}
// no manifest-specified Spring context, use default
- appXmlFile = new File(locationFile, "META-INF" + File.separator + "spring"
+ appXmlFile = new File(locationFile, "META-INF" + File.separator + "spring"
+ File.separator + SpringImplementationConstants.APPLICATION_CONTEXT);
if (appXmlFile.exists()) {
return appXmlFile.toURL();
@@ -631,7 +675,7 @@ public class SpringXMLComponentTypeLoader {
} catch (IOException e) {
throw new ContributionReadException("Error reading manifest " + manifestFile);
}
- } else {
+ } else {
if (locationFile.isFile() && locationFile.getName().endsWith(".jar")) {
try {
JarFile jf = new JarFile(locationFile);
@@ -655,21 +699,21 @@ public class SpringXMLComponentTypeLoader {
} catch (IOException e) {
// bad archive
// TODO: create a more appropriate exception type
- throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: "
+ throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: "
+ " IO exception reading context file.", e);
}
}
else {
if (locationFile.getName().endsWith(".xml")) {
return url;
- }
+ }
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 jarEntry = url.getPath().substring(6, url.getPath().indexOf("!"));
- JarFile jf = new JarFile(jarEntry);
- JarEntry je = jf.getJarEntry(url.getPath().substring(url.getPath().indexOf("!/")+2)
+ JarFile jf = new JarFile(jarEntry);
+ 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));
@@ -682,15 +726,15 @@ public class SpringXMLComponentTypeLoader {
}
}
}
- }
+ }
} catch (IOException e) {
throw new ContributionReadException("Error reading manifest " + manifestFile);
}
- }
+ }
}
}
- throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: "
+ throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: "
+ "META-INF/spring/" + SpringImplementationConstants.APPLICATION_CONTEXT + "not found");
} // end method getApplicationContextResource
@@ -739,4 +783,38 @@ public class SpringXMLComponentTypeLoader {
return reference;
}
+
+ private class ContextClassLoader extends ClassLoader {
+ public ContextClassLoader(ModelResolver resolver) {
+ super();
+ this.resolver = resolver;
+ }
+
+ private ModelResolver resolver;
+
+ @Override
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ return SpringXMLComponentTypeLoader.this.resolveClass(resolver, name);
+ }
+
+ @Override
+ protected URL findResource(String name) {
+ try {
+ return resolveLocation(resolver, name);
+ } 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/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java
index e8b398bd3a..55dd1d6027 100644
--- a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java
+++ b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java
@@ -89,6 +89,7 @@ public class SpringContextStub {
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
+ e.printStackTrace();
throw new RuntimeException(e);
}
}
@@ -101,6 +102,7 @@ public class SpringContextStub {
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
+ e.printStackTrace();
throw new RuntimeException(e);
}
}
@@ -113,6 +115,7 @@ public class SpringContextStub {
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
+ e.printStackTrace();
throw new RuntimeException(e);
}
}
@@ -127,6 +130,7 @@ public class SpringContextStub {
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
+ e.printStackTrace();
throw new RuntimeException(e);
}
}
diff --git a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java
index ac913fdee2..0a069c032f 100644
--- a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java
+++ b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationTie.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.implementation.spring.invocation;
@@ -35,20 +35,20 @@ import org.apache.tuscany.sca.runtime.RuntimeComponent;
* 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.
+ * in the implementation-spring-runtime module for what the stub does.
*/
public class SpringImplementationTie {
private SpringImplementation implementation;
private RuntimeComponent component;
private JavaPropertyValueObjectFactory propertyFactory;
-
+
public SpringImplementationTie(SpringImplementation implementation, RuntimeComponent component, JavaPropertyValueObjectFactory propertyFactory) {
this.implementation = implementation;
this.component = component;
this.propertyFactory = propertyFactory;
}
-
+
public String getURI() {
throw new IllegalStateException("Not yet impl");
}
@@ -132,7 +132,7 @@ public class SpringImplementationTie {
throw new RuntimeException("Unable to find Bean with name " + name);
} // end method getBean( String, Class )
-
+
public Object getComponentTie() {
return new ComponentTie(component);
}
@@ -140,4 +140,8 @@ public class SpringImplementationTie {
public Object getPropertyValueTie() {
return new PropertyValueTie(component, propertyFactory);
}
+
+ public ClassLoader getClassLoader() {
+ return implementation.getClassLoader();
+ }
}
diff --git a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java
index abe3954b9a..869935be6e 100644
--- a/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java
+++ b/branches/sca-java-1.x/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java
@@ -6,15 +6,15 @@
* 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.
+ * under the License.
*/
package org.apache.tuscany.sca.implementation.spring.xml;
@@ -31,12 +31,12 @@ import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
-import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.implementation.spring.SpringImplementation;
import org.apache.tuscany.sca.implementation.spring.introspect.SpringXMLComponentTypeLoader;
import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
@@ -48,8 +48,8 @@ import org.apache.tuscany.sca.policy.PolicyFactory;
/**
* SpringArtifactProcessor is responsible for processing the XML of an <implementation.spring.../>
* element in an SCA SCDL file.
- *
- * @version $Rev: 511195 $ $Date: 2007-02-24 02:29:46 +0000 (Sat, 24 Feb 2007) $
+ *
+ * @version $Rev: 511195 $ $Date: 2007-02-24 02:29:46 +0000 (Sat, 24 Feb 2007) $
*/
public class SpringImplementationProcessor implements StAXArtifactProcessor<SpringImplementation> {
@@ -63,18 +63,21 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
private PolicyFactory policyFactory;
private PolicyAttachPointProcessor policyProcessor;
private Monitor monitor;
-
+
+ private ModelFactoryExtensionPoint factories;
+
public SpringImplementationProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
+ this.factories = modelFactories;
this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
this.javaFactory = modelFactories.getFactory(JavaInterfaceFactory.class);
this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
this.policyProcessor = new PolicyAttachPointProcessor(policyFactory);
this.monitor = monitor;
}
-
+
/**
* Report a exception.
- *
+ *
* @param problems
* @param message
* @param model
@@ -85,10 +88,10 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
monitor.problem(problem);
}
}
-
+
/**
* Report a error.
- *
+ *
* @param problems
* @param message
* @param model
@@ -102,21 +105,21 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
/*
* 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 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.
+ * 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
+ *
+ * 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 METAINF/spring directory.
*/
public SpringImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
@@ -135,7 +138,7 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
error("LocationAttributeMissing", reader);
//throw new ContributionReadException(MSG_LOCATION_MISSING);
}
-
+
// Read policies
policyProcessor.readPolicies(springImplementation, reader);
@@ -153,7 +156,7 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
* 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) {
@@ -173,7 +176,7 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
policyProcessor.writePolicyPrefixes(springImplementation, writer);
writer.writeStartElement(Constants.SCA10_NS, IMPLEMENTATION_SPRING);
policyProcessor.writePolicyAttributes(springImplementation, writer);
-
+
if (springImplementation.getLocation() != null) {
writer.writeAttribute(LOCATION, springImplementation.getLocation());
}
@@ -188,16 +191,16 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
*/
public void resolve(SpringImplementation springImplementation, ModelResolver resolver)
throws ContributionResolveException {
-
+
if (springImplementation == null)
return;
/* Load the Spring component type by reading the Spring application context */
SpringXMLComponentTypeLoader springLoader =
- new SpringXMLComponentTypeLoader(assemblyFactory, javaFactory, policyFactory);
+ new SpringXMLComponentTypeLoader(factories, assemblyFactory, javaFactory, policyFactory);
try {
// Load the Spring Implementation information from its application context file...
- springLoader.load(springImplementation);
+ springLoader.load(springImplementation, resolver);
} catch (ContributionReadException e) {
ContributionResolveException ce = new ContributionResolveException(e);
error("ContributionResolveException", resolver, ce);
@@ -210,12 +213,12 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri
ComponentType componentType = resolver.resolveModel(ComponentType.class, ct);
if (componentType.isUnresolved()) {
error("UnableToResolveComponentType", resolver);
- //throw new ContributionResolveException("SpringArtifactProcessor: unable to resolve componentType for Spring component");
+ //throw new ContributionResolveException("SpringArtifactProcessor: unable to resolve componentType for Spring component");
} else {
springImplementation.setComponentType(componentType);
springImplementation.setUnresolved(false);
- }
-
+ }
+
} // end if
} // end method resolve