summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/implementation-spring/src
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-07 08:37:14 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-07 08:37:14 +0000
commitaba03816bfe2d775f3235c7d8a7225b575945a2f (patch)
treed41f392df0e16e36c5a17e2d7a6c5527fa204d70 /java/sca/modules/implementation-spring/src
parent3762920a8fd57276b62d6d3306c7f8a339398506 (diff)
Apply patch from Ramkumar Ramalingam for TUSCANY-2493: Specs gap in implementation-spring location attribute
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@683550 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/implementation-spring/src')
-rw-r--r--java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java80
-rw-r--r--java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite2
-rw-r--r--java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF3
-rw-r--r--java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml (renamed from java/sca/modules/implementation-spring/src/test/resources/META-INF/sca/SpringSCAProperty-context.xml)66
4 files changed, 80 insertions, 71 deletions
diff --git a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
index 80dde1be89..50c7bfa9f3 100644
--- a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
+++ b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
@@ -446,22 +446,21 @@ public class SpringXMLComponentTypeLoader {
throws ContributionReadException {
File manifestFile = null;
File appXmlFile;
- File locationFile = new File(locationAttr);
-
- if (!locationFile.exists()) {
- // FIXME hack
- URL url = cl.getResource(locationAttr);
- if (url != null) {
- return new UrlResource(url);
- }
+ File locationFile = null;
+
+ URL url = cl.getResource(locationAttr);
+ if (url != null) {
+ String path = url.getPath();
+ locationFile = new File(path);
+ } else {
throw new ContributionReadException(
- "SpringXMLLoader getApplicationContextResource: " + "unable to find resource file "
- + locationFile.toString());
+ "SpringXMLLoader getApplicationContextResource: " + "unable to find resource file "
+ + locationAttr);
}
if (locationFile.isDirectory()) {
try {
- manifestFile = new File(locationFile, "META-INF/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();
@@ -474,44 +473,51 @@ public class SpringXMLComponentTypeLoader {
}
}
// no manifest-specified Spring context, use default
- appXmlFile = new File(locationFile, APPLICATION_CONTEXT);
+ appXmlFile = new File(locationFile, "META-INF" + File.separator + "spring"
+ + File.separator + APPLICATION_CONTEXT);
if (appXmlFile.exists()) {
return new UrlResource(appXmlFile.toURL());
}
} catch (IOException e) {
throw new ContributionReadException("Error reading manifest " + manifestFile);
}
- } else {
- try {
- JarFile jf = new JarFile(locationFile);
- JarEntry je;
- Manifest mf = jf.getManifest();
- if (mf != null) {
- Attributes mainAttrs = mf.getMainAttributes();
- String appCtxPath = mainAttrs.getValue("Spring-Context");
- if (appCtxPath != null) {
- je = jf.getJarEntry(appCtxPath);
- if (je != null) {
- // TODO return a Spring specific Resource type for jars
- return new UrlResource(new URL("jar:" + locationFile.toURI().toURL() + "!/" + appCtxPath));
+ } else {
+ if (locationFile.isFile() && locationFile.getName().indexOf(".jar") < 0) {
+ return new UrlResource(url);
+ }
+ else {
+ try {
+ JarFile jf = new JarFile(locationFile);
+ JarEntry je;
+ Manifest mf = jf.getManifest();
+ if (mf != null) {
+ Attributes mainAttrs = mf.getMainAttributes();
+ String appCtxPath = mainAttrs.getValue("Spring-Context");
+ if (appCtxPath != null) {
+ je = jf.getJarEntry(appCtxPath);
+ if (je != null) {
+ // TODO return a Spring specific Resource type for jars
+ return new UrlResource(new URL("jar:" + locationFile.toURI().toURL() + "!/" + appCtxPath));
+ }
}
}
+ je = jf.getJarEntry("META-INF" + File.separator + "spring"
+ + File.separator + APPLICATION_CONTEXT);
+ if (je != null) {
+ return new UrlResource(new URL("jar:" + locationFile.toURI().toURL() + "!/" + APPLICATION_CONTEXT));
+ }
+ } catch (IOException e) {
+ // bad archive
+ // TODO: create a more appropriate exception type
+ throw new ContributionReadException(
+ "SpringXMLLoader getApplicationContextResource: " + " IO exception reading context file.",
+ e);
}
- je = jf.getJarEntry(APPLICATION_CONTEXT);
- if (je != null) {
- return new UrlResource(new URL("jar:" + locationFile.toURI().toURL() + "!/" + APPLICATION_CONTEXT));
- }
- } catch (IOException e) {
- // bad archive
- // TODO: create a more appropriate exception type
- throw new ContributionReadException(
- "SpringXMLLoader getApplicationContextResource: " + " IO exception reading context file.",
- e);
}
}
- throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: " + APPLICATION_CONTEXT
- + "not found");
+ throw new ContributionReadException("SpringXMLLoader getApplicationContextResource: "
+ + "META-INF/spring/" + APPLICATION_CONTEXT + "not found");
} // end method getApplicationContextResource
/**
diff --git a/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite b/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
index b811122b41..af1b3be0a5 100644
--- a/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
+++ b/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
@@ -32,7 +32,7 @@
</component>
<component name="HelloWorldComponent">
- <implementation.spring location="META-INF/sca/SpringSCAProperty-context.xml"/>
+ <implementation.spring location="spring"/>
<property name="TestProperty">Hello</property>
</component>
diff --git a/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF b/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..950dbeba4c
--- /dev/null
+++ b/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Spring-Context: META-INF/spring/SpringSCAProperty-context.xml
+
diff --git a/java/sca/modules/implementation-spring/src/test/resources/META-INF/sca/SpringSCAProperty-context.xml b/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
index a181446ffb..36763a2d7a 100644
--- a/java/sca/modules/implementation-spring/src/test/resources/META-INF/sca/SpringSCAProperty-context.xml
+++ b/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
@@ -1,34 +1,34 @@
-<?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.springframework.org/schema/sca/spring-sca.xsd">
-
- <bean id="testBean" class="org.apache.tuscany.sca.implementation.spring.itests.mock.TestSCAPropertyBean" lazy-init="true">
- <property name="hello" ref="TestProperty"/>
- </bean>
-
- <sca:property id="foo" name="TestProperty" type="java.lang.String"/>
-
+<?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.springframework.org/schema/sca/spring-sca.xsd">
+
+ <bean id="testBean" class="org.apache.tuscany.sca.implementation.spring.itests.mock.TestSCAPropertyBean" lazy-init="true">
+ <property name="hello" ref="TestProperty"/>
+ </bean>
+
+ <sca:property id="foo" name="TestProperty" type="java.lang.String"/>
+
</beans> \ No newline at end of file