diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-07 08:37:14 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-07 08:37:14 +0000 |
commit | aba03816bfe2d775f3235c7d8a7225b575945a2f (patch) | |
tree | d41f392df0e16e36c5a17e2d7a6c5527fa204d70 | |
parent | 3762920a8fd57276b62d6d3306c7f8a339398506 (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
-rw-r--r-- | java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java | 80 | ||||
-rw-r--r-- | java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite | 2 | ||||
-rw-r--r-- | java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF | 3 | ||||
-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 |