Author: gscokart
Date: Sun Jul 20 02:50:36 2008
New Revision: 678264

URL: http://svn.apache.org/viewvc?rev=678264&view=rev
Log:
(IVY-89) properties from referenced from settings file are now relative to the 
location of the settings file, not relative to the execution directory)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
    
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-ref.xml
    
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=678264&r1=678263&r2=678264&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Sun Jul 20 02:50:36 2008
@@ -160,6 +160,7 @@
 - FIX: Relative include in a settings must be evaluated relatively to the 
settings file (IVY-372)
 - FIX: The Bundle-Version is 0.0.0 in the build artifacts (IVY-802)
 - FIX: Fix the encoding used in XML reports (IVY-816)
+- FIX: Properties tag in ivy conf do not support relative path (IVY-89)
 
 - DOCUMENTATION: Fixed more than a hundred (100+) obsolete "configuration" 
references; replaced with "settings" (IVY-863) (thanks to Sakari Maaranen)
 - DOCUMENTATION: Elaborated documentation of ivy files and deliver/publish 
tasks (IVY-847) (thanks to Sakari Maaranen)

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java?rev=678264&r1=678263&r2=678264&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
(original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
Sun Jul 20 02:50:36 2008
@@ -380,14 +380,11 @@
                     ivy.setSettingsVariables(settingsURL);
                 }
             } else {
-                File incFile = new File(propFilePath);
-                if (incFile.isAbsolute()) {
-                    settingsURL = incFile.toURI().toURL();
-                } else {
-                    settingsURL = new URL(this.settings , propFilePath);
-                }
+                settingsURL = urlFromFileAttribute(propFilePath);
                 Message.verbose("including file: " + settingsURL);
-                ivy.setSettingsVariables(incFile);
+                ivy.setSettingsVariables(new File(propFilePath));
+                //We can not use the setSettingsVariables(URL) because that 
would put different
+                //values for the properties.  I'm not sure what would be the 
regression...
             }
             new XmlSettingsParser(ivy).parse(configurator, settingsURL);
         } finally {
@@ -395,29 +392,29 @@
         }
     }
 
-    private void propertiesStarted(Map attributes) {
+    /** Provide an URL referencing the given filepath.  If filePath is an 
absolute path, then
+     * the resulting URL point to a local file, otherwise, the filepath is 
evaluated relatively
+     * to the URL of the current settings file (can be local file or remote 
URL).
+     */
+    private URL urlFromFileAttribute(String filePath) throws 
MalformedURLException {
+        File incFile = new File(filePath);
+        if (incFile.isAbsolute()) {
+            return incFile.toURI().toURL();
+        } else {
+            return new URL(this.settings , filePath);
+        }      
+    }
+
+    private void propertiesStarted(Map attributes) throws IOException {
         String propFilePath = (String) attributes.get("file");
         String environmentPrefix = (String) attributes.get("environment");
         if (propFilePath != null) {
-            String override = (String) attributes.get("override");
-            try {
-                Message.verbose("loading properties: " + propFilePath);
-                ivy.loadProperties(new File(propFilePath), override == null ? 
true : Boolean
-                        .valueOf(override).booleanValue());
-            } catch (Exception fileEx) {
-                Message.verbose("failed to load properties as file: trying as 
url: "
-                        + propFilePath);
-                try {
-                    ivy.loadProperties(
-                        new URL(propFilePath), override == null ? true : 
Boolean
-                            .valueOf(override).booleanValue());
-                } catch (Exception urlEx) {
-                    throw new IllegalArgumentException(
-                        "unable to load properties from " + propFilePath
-                        + ". Tried both as an url and a file, with no success. 
"
-                        + "File exception: " + fileEx + ". URL exception: " + 
urlEx);
-                }
-            }
+            String overrideStr = (String) attributes.get("override");
+            boolean override = overrideStr == null ? true 
+                                                   : 
Boolean.valueOf(overrideStr).booleanValue();
+            Message.verbose("loading properties: " + propFilePath);
+            URL fileUrl = urlFromFileAttribute(propFilePath);
+            ivy.loadProperties(fileUrl, override);
         } else if (environmentPrefix != null) {
             ivy.getVariableContainer().setEnvironmentPrefix(environmentPrefix);
         } else {

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-ref.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-ref.xml?rev=678264&r1=678263&r2=678264&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-ref.xml 
(original)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-ref.xml 
Sun Jul 20 02:50:36 2008
@@ -17,7 +17,7 @@
    under the License.    
 -->
 <ivysettings>
-       <properties 
file="test/java/org/apache/ivy/core/settings/ivysettings.properties"/>
+       <properties file="ivysettings.properties"/>
        <settings   defaultCache="mycache"/>
        <resolvers>
                <filesystem name="fs" latest="latest-time">

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml?rev=678264&r1=678263&r2=678264&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml 
(original)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml 
Sun Jul 20 02:50:36 2008
@@ -18,7 +18,7 @@
 -->
 <ivysettings>
        <property name="shared" value="sharedrep"/>
-       <properties 
file="test/java/org/apache/ivy/core/settings/ivysettings.properties"/>
+       <properties file="ivysettings.properties"/>
        <settings defaultResolver="libraries" validate="false" />
        <caches defaultCacheDir="mycache" checkUpToDate="false"
                        ivyPattern="[module]/ivys/ivy-[revision].xml" 


Reply via email to