You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by ma...@apache.org on 2007/03/13 22:40:02 UTC

svn commit: r517916 - in /incubator/ivy/core/trunk: src/java/org/apache/ivy/plugins/report/ test/java/org/apache/ivy/plugins/report/

Author: maartenc
Date: Tue Mar 13 15:39:55 2007
New Revision: 517916

URL: http://svn.apache.org/viewvc?view=rev&rev=517916
Log:
IMPROVE: Generated XML reports now contains more information about the resolved module

Added:
    incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportParserTest.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/ivy-with-info.xml
Modified:
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportOutputterTest.java

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java?view=diff&rev=517916&r1=517915&r2=517916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportOutputter.java Tue Mar 13 15:39:55 2007
@@ -28,6 +28,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.ArtifactOrigin;
@@ -100,6 +101,15 @@
 		out.println("\t<info");
 		out.println("\t\torganisation=\""+mrid.getOrganisation()+"\"");
 		out.println("\t\tmodule=\""+mrid.getName()+"\"");
+		out.println("\t\trevision=\""+mrid.getRevision()+"\"");
+		if (mrid.getBranch() != null) {
+			out.println("\t\tbranch=\""+mrid.getBranch()+"\"");
+		}
+		Map extraAttributes = mrid.getExtraAttributes();
+		for (Iterator it = extraAttributes.entrySet().iterator(); it.hasNext(); ) {
+			Map.Entry entry = (Entry) it.next();
+			out.println("\t\textra-" + entry.getKey() + "=\"" + entry.getValue() + "\"");
+		}
 		out.println("\t\tconf=\""+report.getConfiguration()+"\"");
 		out.println("\t\tconfs=\""+StringUtils.join(confs, ", ")+"\"");
 		out.println("\t\tdate=\""+Ivy.DATE_FORMAT.format(report.getDate())+"\"/>");
@@ -141,7 +151,7 @@
                 if (md != null && md.getHomePage() != null) {
                     details.append(" homepage=\"").append(md.getHomePage()).append("\"");
                 }
-                Map extraAttributes = md!=null?md.getExtraAttributes():dep.getResolvedId().getExtraAttributes();
+                extraAttributes = md!=null?md.getExtraAttributes():dep.getResolvedId().getExtraAttributes();
                 for (Iterator iterator = extraAttributes.keySet().iterator(); iterator.hasNext();) {
                     String attName = (String)iterator.next();
                     details.append(" extra-").append(attName).append("=\"").append(extraAttributes.get(attName)).append("\"");

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java?view=diff&rev=517916&r1=517915&r2=517916
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/plugins/report/XmlReportParser.java Tue Mar 13 15:39:55 2007
@@ -21,8 +21,10 @@
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
@@ -45,6 +47,7 @@
         private List _defaultMrids;
         private List _realMrids;
 		private List _artifacts;
+		private ModuleRevisionId _mRevisionId;
 		private File _report;
 		SaxXmlReportParser(File report) {
 	        _artifacts = new ArrayList();
@@ -114,6 +117,21 @@
                         String ext = attributes.getValue("ext");
 						Artifact artifact = new DefaultArtifact(_mrid, _pubdate, artifactName, type, ext, ExtendableItemHelper.getExtraAttributes(attributes, "extra-"));
                         _revisionArtifacts.add(artifact);
+                    } else if ("info".equals(qName)) {
+                    	String organisation = attributes.getValue("organisation");
+                    	String name = attributes.getValue("module");
+                    	String branch = attributes.getValue("branch");
+                    	String revision = attributes.getValue("revision");
+                    	Map extraAttributes = new HashMap();
+                    	for (int i = 0; i < attributes.getLength(); i++) {
+                    		String attName = attributes.getQName(i);
+                    		if (attName.startsWith("extra-")) {
+                    			String extraAttrName = attName.substring(6);
+                    			String extraAttrValue = attributes.getValue(i);
+                    			extraAttributes.put(extraAttrName, extraAttrValue);
+                    		}
+                    	}
+                    	_mRevisionId = ModuleRevisionId.newInstance(organisation, name, branch, revision, extraAttributes);
                     }
                 }
 
@@ -139,10 +157,12 @@
 		public List getModuleRevisionIds() {
 			return _mrids;
 		}
-
         public List getRealModuleRevisionIds() {
             return _realMrids;
         }
+        public ModuleRevisionId getResolvedModule() {
+        	return _mRevisionId;
+        }
     }
     
     private SaxXmlReportParser parser = null;
@@ -172,6 +192,12 @@
     
     public ModuleRevisionId[] getRealDependencyRevisionIds() {
     	return (ModuleRevisionId[])parser.getRealModuleRevisionIds().toArray(new ModuleRevisionId[parser.getRealModuleRevisionIds().size()]);
+    }
+    /**
+     * Returns the <tt>ModuleRevisionId</tt> of the resolved module.
+     */
+    public ModuleRevisionId getResolvedModule() {
+    	return parser.getResolvedModule();
     }
 }
 

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportOutputterTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportOutputterTest.java?view=diff&rev=517916&r1=517915&r2=517916
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportOutputterTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportOutputterTest.java Tue Mar 13 15:39:55 2007
@@ -76,6 +76,30 @@
         assertTrue("XML doesn't contain artifact location attribute", xml.indexOf(expectedLocation) != -1);
         assertTrue("XML doesn't contain artifact is-local attribute", xml.indexOf(expectedIsLocal) != -1);
 	}
+	
+	public void testWriteModuleInfo() throws Exception {
+        ResolveReport report = _ivy.resolve(new File("test/java/org/apache/ivy/plugins/report/ivy-with-info.xml").toURL(),
+        		getResolveOptions(new String[] {"default"}).setValidate(false));
+        assertNotNull(report);
+        
+		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+		XmlReportOutputter outputter = new XmlReportOutputter();
+		outputter.output(report.getConfigurationReport("default"), buffer);
+		buffer.flush();
+		String xml = buffer.toString();
+		
+		String orgAttribute = "organisation=\"org1\"";
+		String modAttribute = "module=\"mod1\"";
+		String revAttribute = "revision=\"1.0\"";
+		String extra1Attribute = "extra-blabla=\"abc\"";
+		String extra2Attribute = "extra-blabla2=\"123\"";
+		
+        assertTrue("XML doesn't contain organisation attribute", xml.indexOf(orgAttribute) != -1);
+        assertTrue("XML doesn't contain module attribute", xml.indexOf(modAttribute) != -1);
+        assertTrue("XML doesn't contain revision attribute", xml.indexOf(revAttribute) != -1);
+        assertTrue("XML doesn't contain extra attribute 1", xml.indexOf(extra1Attribute) != -1);
+        assertTrue("XML doesn't contain extra attribute 2", xml.indexOf(extra2Attribute) != -1);
+	}
     
     private ResolveOptions getResolveOptions(String[] confs) {
 		return new ResolveOptions().setConfs(confs).setCache(CacheManager.getInstance(_ivy.getSettings(), _cache));

Added: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportParserTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportParserTest.java?view=auto&rev=517916
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportParserTest.java (added)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/XmlReportParserTest.java Tue Mar 13 15:39:55 2007
@@ -0,0 +1,78 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.plugins.report;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.ivy.Ivy;
+import org.apache.ivy.core.cache.CacheManager;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.report.ResolveReport;
+import org.apache.ivy.core.resolve.ResolveOptions;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Delete;
+
+public class XmlReportParserTest extends TestCase {
+	private final Ivy _ivy;
+    private File _cache;
+
+    public XmlReportParserTest() throws Exception {
+        _ivy = new Ivy();
+        _ivy.configure(new File("test/repositories/ivyconf.xml"));
+    }
+
+    protected void setUp() throws Exception {
+        createCache();
+    }
+
+    private void createCache() {
+        _cache = new File("build/cache");
+        _cache.mkdirs();
+    }
+    
+    protected void tearDown() throws Exception {
+        cleanCache();
+    }
+
+    private void cleanCache() {
+        Delete del = new Delete();
+        del.setProject(new Project());
+        del.setDir(_cache);
+        del.execute();
+    }
+    
+    public void testGetResolvedModule() throws Exception {
+        ResolveReport report = _ivy.resolve(new File("test/java/org/apache/ivy/plugins/report/ivy-with-info.xml").toURL(),
+        		getResolveOptions(new String[] {"default"}).setValidate(false).setResolveId("testGetResolvedModule"));
+        assertNotNull(report);
+
+        ModuleRevisionId modRevId = report.getModuleDescriptor().getModuleRevisionId();
+        
+        XmlReportParser parser = new XmlReportParser();
+        parser.parse(_ivy.getCacheManager(_cache).getConfigurationResolveReportInCache("testGetResolvedModule", "default"));
+        ModuleRevisionId parsedModRevId = parser.getResolvedModule();
+        
+        assertEquals("Resolved module doesn't equals parsed module", modRevId, parsedModRevId);
+    }
+    
+    private ResolveOptions getResolveOptions(String[] confs) {
+		return new ResolveOptions().setConfs(confs).setCache(CacheManager.getInstance(_ivy.getSettings(), _cache));
+	}
+}

Added: incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/ivy-with-info.xml
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/ivy-with-info.xml?view=auto&rev=517916
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/ivy-with-info.xml (added)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/plugins/report/ivy-with-info.xml Tue Mar 13 15:39:55 2007
@@ -0,0 +1,10 @@
+<ivy-module version="1.0">
+	<info organisation="org1"
+	       module="mod1"
+	       revision="1.0"
+	       status="integration"
+	       publication="20041101110000"
+	       blabla="abc"
+	       blabla2="123"
+	/>
+</ivy-module>