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


Reply via email to