Author: antelder
Date: Thu Aug 7 01:37:14 2008
New Revision: 683550
URL: http://svn.apache.org/viewvc?rev=683550&view=rev
Log:
Apply patch from Ramkumar Ramalingam for TUSCANY-2493: Specs gap in
implementation-spring location attribute
Added:
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
Removed:
tuscany/java/sca/modules/implementation-spring/src/test/resources/META-INF/sca/SpringSCAProperty-context.xml
Modified:
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
tuscany/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
Modified:
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java?rev=683550&r1=683549&r2=683550&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
(original)
+++
tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
Thu Aug 7 01:37:14 2008
@@ -446,22 +446,21 @@
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 @@
}
}
// 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
/**
Modified:
tuscany/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite?rev=683550&r1=683549&r2=683550&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
(original)
+++
tuscany/java/sca/modules/implementation-spring/src/test/resources/org/apache/tuscany/sca/implementation/spring/itests/helloworld/SpringSCAProperty.composite
Thu Aug 7 01:37:14 2008
@@ -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>
Added:
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF?rev=683550&view=auto
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
(added)
+++
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/MANIFEST.MF
Thu Aug 7 01:37:14 2008
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Spring-Context: META-INF/spring/SpringSCAProperty-context.xml
+
Added:
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml?rev=683550&view=auto
==============================================================================
---
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
(added)
+++
tuscany/java/sca/modules/implementation-spring/src/test/resources/spring/META-INF/spring/SpringSCAProperty-context.xml
Thu Aug 7 01:37:14 2008
@@ -0,0 +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"/>
+
+</beans>
\ No newline at end of file