[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ivy-commits
Subject:    svn commit: r551867 - in /incubator/ivy/core/trunk:
From:       gscokart () apache ! org
Date:       2007-06-29 12:16:13
Message-ID: 20070629121613.BDC501A981D () eris ! apache ! org
[Download RAW message or body]

Author: gscokart
Date: Fri Jun 29 05:16:12 2007
New Revision: 551867

URL: http://svn.apache.org/viewvc?view=rev&rev=551867
Log:
refactoring to prepare support of relative url in XmlModuleDescriptorUpdater

Modified:
    incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
  incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
  incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs3.xml
  incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update.xml


Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java
                
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java?view=diff&rev=551867&r1=551866&r2=551867
 ==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java \
                (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/RelativeUrlResolver.java \
Fri Jun 29 05:16:12 2007 @@ -26,8 +26,23 @@
  */
 public abstract class RelativeUrlResolver {
 
+    /**
+     * Resolve the url in the context of context.  
+     * @param context The URL of the ressource containing the reference url
+     * @param url a relative or absolution url string
+     * @throws MalformedURLException
+     */
     public abstract URL getURL(URL context , String url) throws \
MalformedURLException;  
+    /**
+     * Relsovle file or url path relatively to a context.  file is considered first.
+     * If file is not defined, url will be considered.  
+     * @param context The URL of the ressource containing the reference file or url
+     * @param file a relative or absolute path
+     * @param url a relative or absolution url string
+     * @return the resulting url or null if faile and url are null.
+     * @throws MalformedURLException
+     */
     public URL getURL(URL context, String file, String url) throws \
MalformedURLException {  if (file != null) {
             File f = new File(file);

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
                
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plu \
gins/parser/xml/XmlModuleDescriptorUpdater.java?view=diff&rev=551867&r1=551866&r2=551867
 ==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java \
                (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java \
Fri Jun 29 05:16:12 2007 @@ -59,6 +59,7 @@
  * possible the original syntax
  */
 public class XmlModuleDescriptorUpdater {
+    private static final int MAX_HEADER_LENGTH = 10000;
     public static String LINE_SEPARATOR = System.getProperty("line.separator");
 
     /**
@@ -87,10 +88,46 @@
             final Map resolvedRevisions, final String status, final String revision,
             final Date pubdate, final Namespace ns, final boolean replaceInclude,
             String[] confsToExclude) throws IOException, SAXException {
-        update(settings, srcURL.openStream(), destFile, resolvedRevisions, status, \
                revision,
-            pubdate, ns, replaceInclude, confsToExclude);
+        if (destFile.getParentFile() != null) {
+            destFile.getParentFile().mkdirs();
+        }
+        OutputStream destStream = new FileOutputStream(destFile);
+        try {
+            update(settings, srcURL, destStream, resolvedRevisions, status, \
revision, +                pubdate, ns, replaceInclude, confsToExclude);
+        } finally {
+            try {
+                destStream.close();
+            } catch (IOException e) {
+                Message.warn("failed to close a stream : " + e.toString());
+            }
+        }
     }
 
+    public static void update(final IvySettings settings, URL srcURL, OutputStream \
destFile, +            final Map resolvedRevisions, final String status, final String \
revision, +            final Date pubdate, final Namespace ns, final boolean \
replaceInclude, +            String[] confsToExclude) throws IOException, \
SAXException { +        InputStream in = srcURL.openStream();
+        try {
+            update(settings, srcURL, in, destFile, resolvedRevisions, status, \
revision, +                pubdate, ns, replaceInclude, confsToExclude);
+        } finally {
+            try {
+                in.close();
+            } catch (IOException e) {
+                Message.warn("failed to close a stream : " + e.toString());
+            }
+            try {
+                destFile.close();
+            } catch (IOException e) {
+                Message.warn("failed to close a stream : " + e.toString());
+            }
+        }
+
+    }
+
+    
     public static void update(final IvySettings settings, InputStream in, File \
                destFile,
             final Map resolvedRevisions, final String status, final String revision,
             final Date pubdate, final Namespace ns, final boolean replaceInclude,
@@ -100,16 +137,19 @@
         }
         OutputStream fos = new FileOutputStream(destFile);
         try {
-            update(settings, in, fos, resolvedRevisions, status, revision, pubdate, \
ns, +            //TODO : the inputStream context should be given.
+            update(settings, null, in, fos, resolvedRevisions, status, revision, \
pubdate, ns,  replaceInclude, confsToExclude);
         } finally {
             try {
                 in.close();
             } catch (IOException e) {
+                Message.warn("failed to close a stream : " + e.toString());
             }
             try {
                 fos.close();
             } catch (IOException e) {
+                Message.warn("failed to close a stream : " + e.toString());
             }
         }
     }
@@ -136,10 +176,12 @@
 
         private final List confs;
 
+        private final URL relativePathCtx;
+
         public UpdaterHandler(final IvySettings settings, final PrintWriter out,
                 final Map resolvedRevisions, final String status, final String \
                revision,
                 final Date pubdate, final Namespace ns, final boolean \
                replaceInclude,
-                final String[] confs) {
+                final String[] confs, final URL relativePathCtx) {
             this.settings = settings;
             this.out = out;
             this.resolvedRevisions = resolvedRevisions;
@@ -148,6 +190,7 @@
             this.pubdate = pubdate;
             this.ns = ns;
             this.replaceInclude = replaceInclude;
+            this.relativePathCtx = relativePathCtx;
             if (confs != null) {
                 this.confs = Arrays.asList(confs);
             } else {
@@ -228,16 +271,26 @@
                 }
             } else if (replaceInclude && "include".equals(qName)
                     && _context.contains("configurations")) {
+                //TODO, in the case of !replaceInclude, we should still replace the \
relative path +                //by an absolute path. 
                 final ExtendedBuffer buffer = new ExtendedBuffer(getContext());
                 _buffers.push(buffer);
                 try {
                     URL url;
-                    String fileName = substitute(settings, \
                attributes.getValue("file"));
-                    if (fileName == null) {
-                        String urlStr = substitute(settings, \
                attributes.getValue("url"));
-                        url = new URL(urlStr);
+                    if (settings != null) {
+                        url = \
settings.getRelativeUrlResolver().getURL(relativePathCtx, +                           \
settings.substitute(attributes.getValue("file")), +                            \
settings.substitute(attributes.getValue("url")));  } else {
-                        url = new File(fileName).toURL();
+                        //TODO : settings can be null, but I don't why.  
+                        //Check if the next code is correct in that case
+                        String fileName = attributes.getValue("file");
+                        if (fileName == null) {
+                            String urlStr = attributes.getValue("url");
+                            url = new URL(urlStr);
+                        } else {
+                            url = new File(fileName).toURL();
+                        }
                     }
                     XMLHelper.parse(url, null, new DefaultHandler() {
                         boolean _insideConfigurations = false;
@@ -606,28 +659,21 @@
 
     }
 
-    public static void update(final IvySettings settings, InputStream inStream,
-            OutputStream outStream, final Map resolvedRevisions, final String \
                status,
-            final String revision, final Date pubdate, final Namespace ns,
-            final boolean replaceInclude) throws IOException, SAXException {
-        update(settings, inStream, outStream, resolvedRevisions, status, revision, \
                pubdate, ns,
-            replaceInclude, null);
-    }
-
-    public static void update(final IvySettings settings, InputStream inStream,
+    public static void update(final IvySettings settings, URL inStreamCtx, \
                InputStream inStream,
             OutputStream outStream, final Map resolvedRevisions, final String \
                status,
             final String revision, final Date pubdate, final Namespace ns,
-            final boolean replaceInclude, String[] confsToExclude) throws \
IOException, SAXException { +            final boolean replaceInclude, String[] \
confsToExclude)  +            throws IOException, SAXException {
         final PrintWriter out = new PrintWriter(new OutputStreamWriter(outStream, \
"UTF-8"));  final BufferedInputStream in = new BufferedInputStream(inStream);
 
-        in.mark(10000); // assume the header is never larger than 10000 bytes.
+        in.mark(MAX_HEADER_LENGTH); // assume the header is never larger than 10000 \
bytes.  copyHeader(in, out);
         in.reset(); // reposition the stream at the beginning
 
         try {
             UpdaterHandler updaterHandler = new UpdaterHandler(settings, out, \
                resolvedRevisions,
-                    status, revision, pubdate, ns, replaceInclude, confsToExclude);
+                    status, revision, pubdate, ns, replaceInclude, confsToExclude, \
inStreamCtx);  XMLHelper.parse(in, null, updaterHandler, updaterHandler);
         } catch (ParserConfigurationException e) {
             IllegalStateException ise = new IllegalStateException(

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java
                
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/pl \
ugins/parser/xml/XmlModuleUpdaterTest.java?view=diff&rev=551867&r1=551866&r2=551867 \
                ==============================================================================
                
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java \
                (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/XmlModuleUpdaterTest.java \
Fri Jun 29 05:16:12 2007 @@ -23,6 +23,7 @@
 import java.io.File;
 import java.io.FileReader;
 import java.io.InputStreamReader;
+import java.net.URL;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -82,9 +83,11 @@
         //file to test-configurations-import6.xml in order to use a path relative to
         //the execution directory.
         //But that may hidde a bug!
-        XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                .getResourceAsStream("test-configurations-import6.xml"), buffer, new \
                HashMap(),
-            "release", "mynewrev", new Date(), null, true);
+        URL settingsUrl = new File("test/java/org/apache/ivy/plugins/parser/xml/" 
+            + "test-configurations-import4.xml").toURL();
+        XmlModuleDescriptorUpdater.update(new IvySettings(), settingsUrl, buffer, \
new HashMap(), +            "release", "mynewrev", new Date(), null,
+        true, null);
 
         String updatedXml = buffer.toString();
 
@@ -95,9 +98,11 @@
 
     public void testUpdateWithExcludeConfigurations1() throws Exception {
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                .getResourceAsStream("test-update-excludedconfs1.xml"), buffer, new \
                HashMap(),
-            "release", "mynewrev", new Date(), null, true, new String[] \
{"myconf2"}); +        URL settingsUrl = new \
File("test/java/org/apache/ivy/plugins/parser/xml/"  +                + \
"test-update-excludedconfs1.xml").toURL(); +        \
XmlModuleDescriptorUpdater.update(new IvySettings(), settingsUrl,  +            \
buffer, new HashMap(), "release", "mynewrev", new Date(), null, true,  +            \
new String[] {"myconf2"});  
         XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();
         ModuleDescriptor updatedMd = parser.parseDescriptor(new IvySettings(),
@@ -120,10 +125,12 @@
 
     public void testUpdateWithExcludeConfigurations2() throws Exception {
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+        URL settingFile = new File("test/java/org/apache/ivy/plugins/parser/xml/" 
+            + "test-update-excludedconfs2.xml").toURL();
         try {
-            XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                    .getResourceAsStream("test-update-excludedconfs2.xml"), buffer, \
                new HashMap(),
-                "release", "mynewrev", new Date(), null, true, new String[] \
{"myconf2"}); +            XmlModuleDescriptorUpdater.update(new IvySettings(), \
settingFile, buffer, +                new HashMap(), "release", "mynewrev", new \
Date(), null, true, +                new String[] {"myconf2"});
             fail("IllegalArgumentException hasn't been thrown");
         } catch (IllegalArgumentException e) {
             // this is ok
@@ -134,8 +141,10 @@
 
     public void testUpdateWithExcludeConfigurations3() throws Exception {
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                .getResourceAsStream("test-update-excludedconfs3.xml"), buffer, new \
HashMap(), +        URL settingsUrl = new \
File("test/java/org/apache/ivy/plugins/parser/xml/"  +            + \
"test-update-excludedconfs3.xml").toURL(); +
+        XmlModuleDescriptorUpdater.update(new IvySettings(), settingsUrl, buffer, \
                new HashMap(),
             "release", "mynewrev", new Date(), null, true, new String[] {"myconf2", \
"conf2"});  
         XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();
@@ -161,8 +170,9 @@
 
     public void testUpdateWithExcludeConfigurations4() throws Exception {
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                .getResourceAsStream("test-update-excludedconfs4.xml"), buffer, new \
HashMap(), +        URL settingsUrl = new \
File("test/java/org/apache/ivy/plugins/parser/xml/"  +            + \
"test-update-excludedconfs4.xml").toURL(); +        \
XmlModuleDescriptorUpdater.update(new IvySettings(), settingsUrl, buffer, new \
                HashMap(),
             "release", "mynewrev", new Date(), null, true, new String[] \
{"myconf2"});  
         XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();
@@ -186,8 +196,9 @@
 
     public void testUpdateWithExcludeConfigurations5() throws Exception {
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-        XmlModuleDescriptorUpdater.update(new IvySettings(), \
                XmlModuleUpdaterTest.class
-                .getResourceAsStream("test-update-excludedconfs5.xml"), buffer, new \
HashMap(), +        URL settingsUrl = new \
File("test/java/org/apache/ivy/plugins/parser/xml/"  +            + \
"test-update-excludedconfs5.xml").toURL(); +        \
XmlModuleDescriptorUpdater.update(new IvySettings(), settingsUrl, buffer, new \
                HashMap(),
             "release", "mynewrev", new Date(), null, true, new String[] \
{"myconf2"});  
         XmlModuleDescriptorParser parser = XmlModuleDescriptorParser.getInstance();

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs3.xml
                
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/pl \
ugins/parser/xml/test-update-excludedconfs3.xml?view=diff&rev=551867&r1=551866&r2=551867
 ==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs3.xml \
                (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update-excludedconfs3.xml \
Fri Jun 29 05:16:12 2007 @@ -25,7 +25,7 @@
 	       status="integration"
 	       publication="20041101110000" />
 	<configurations>
-		<include file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations.xml"/>
 +		<include file="imported-configurations.xml"/>
 		<conf name="myconf1" description="desc 1"/>
 		<conf name="myconf2" description="desc 2" visibility="public"/>
 		<conf name="myconf3" description="desc 3" visibility="private"/>

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update.xml
                
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update.xml?view=diff&rev=551867&r1=551866&r2=551867
 ==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update.xml \
                (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/xml/test-update.xml \
Fri Jun 29 05:16:12 2007 @@ -40,7 +40,7 @@
 		</description>
 	</info>
 	<configurations>
-		<include file="test/java/org/apache/ivy/plugins/parser/xml/imported-configurations-with-mapping.xml"/>
 +		<include file="imported-configurations-with-mapping.xml"/>
 		<conf name="${myvar}" description="desc 1"/>
 		<conf name="myconf2" description="desc 2" visibility="public"/>
 		<conf name="myconf3" description="desc 3" visibility="private"/>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic