Author: xavier
Date: Tue May 26 15:50:41 2009
New Revision: 778769
URL: http://svn.apache.org/viewvc?rev=778769&view=rev
Log:
IMPROVEMENT: Pre and post retrieve artifact events (IVY-1084)
Added:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
(with props)
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
(with props)
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
(with props)
Modified:
ant/ivy/core/trunk/CHANGES.txt
ant/ivy/core/trunk/doc/settings/triggers.html
ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
ant/ivy/core/trunk/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java
Modified: ant/ivy/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=778769&r1=778768&r2=778769&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Tue May 26 15:50:41 2009
@@ -87,6 +87,8 @@
trunk
=====================================
+- IMPROVEMENT: Pre and post retrieve artifact events (IVY-1084)
+
- FIX: Ibiblio resolver throws IndexOutOfBoundsException when using snapshot
versions with usepoms='false' (IVY-1028)
- FIX: Wrong BuildException messages (findmodules) (IVY-1056)
- FIX: PomModuleDescriptorBuilder does not resolve ejb type dependencies to
jar extension (IVY-1058) (thanks to Andrey Lomakin)
Modified: ant/ivy/core/trunk/doc/settings/triggers.html
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/settings/triggers.html?rev=778769&r1=778768&r2=778769&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/settings/triggers.html (original)
+++ ant/ivy/core/trunk/doc/settings/triggers.html Tue May 26 15:50:41 2009
@@ -171,6 +171,40 @@
</td>
<td>Fired at the end of the retrieve process.</td>
</tr>
+ <tr><td>pre-retrieve-artifact <br/><span class="since">since
2.1</span></td>
+ <td>
+ <ul>
+ <li>organisation</li>the organisation of the artifact which is
about to be retrieved
+ <li>module</li>the name of the module of the artifact which is
about to be retrieved
+ <li>revision</li>the revision of the the artifact which is about
to be retrieved
+ <li>artifact</li>the name of the the artifact which is about to be
retrieved
+ <li>type</li>the type of the the artifact which is about to be
retrieved
+ <li>ext</li>the extension of the the artifact which is about to be
retrieved
+ <li>metadata</li>true if the retrieved artifact is a metadata
artifact, false for published artifacts
+ <li>size</li>the size in bytes of the retrieved artifact
+ <li>from</li>the absolute path from which it will be retrieved
(usually a location in cache)
+ <li>to</li>the absolute path to which it will be retrieved
+ </ul>
+ </td>
+ <td>Fired before an artifact is retrieved from cache to a local
location</td>
+ </tr>
+ <tr><td>post-retrieve-artifact <br/><span class="since">since
2.1</span></td>
+ <td>
+ <ul>
+ <li>organisation</li>the organisation of the artifact which has
just been retrieved
+ <li>module</li>the name of the module of the artifact which has
just been retrieved
+ <li>revision</li>the revision of the the artifact which has just
been retrieved
+ <li>artifact</li>the name of the the artifact which has just been
retrieved
+ <li>type</li>the type of the the artifact which has just been
retrieved
+ <li>ext</li>the extension of the the artifact which has just been
retrieved
+ <li>metadata</li>true if the retrieved artifact is a metadata
artifact, false for published artifacts
+ <li>size</li>the size in bytes of the retrieved artifact
+ <li>from</li>the absolute path from which it has just been
retrieved (usually a location in cache)
+ <li>to</li>the absolute path to which it has just been retrieved
+ </ul>
+ </td>
+ <td>Fired after an artifact is retrieved from cache to a local
location</td>
+ </tr>
<tr><td>pre-publish-artifact <br/><span class="since">since 2.0</span></td>
<td>
<ul>
Added:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java?rev=778769&view=auto
==============================================================================
---
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
(added)
+++
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
Tue May 26 15:50:41 2009
@@ -0,0 +1,31 @@
+/*
+ * 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.core.event.retrieve;
+
+import java.io.File;
+
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+
+public class EndRetrieveArtifactEvent extends RetrieveArtifactEvent {
+ public static final String NAME = "pre-retrieve-artifact";
+
+ public EndRetrieveArtifactEvent(
+ ArtifactDownloadReport report, File destFile) {
+ super(NAME, report, destFile);
+ }
+}
Propchange:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java?rev=778769&view=auto
==============================================================================
---
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
(added)
+++
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
Tue May 26 15:50:41 2009
@@ -0,0 +1,57 @@
+/*
+ * 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.core.event.retrieve;
+
+import java.io.File;
+
+import org.apache.ivy.core.event.IvyEvent;
+import org.apache.ivy.core.module.descriptor.Artifact;
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+
+public class RetrieveArtifactEvent extends IvyEvent {
+ private ArtifactDownloadReport report;
+
+ private File destFile;
+
+ public RetrieveArtifactEvent(
+ String name,
+ ArtifactDownloadReport report, File destFile) {
+ super(name);
+ addArtifactAttributes(report.getArtifact());
+
+ this.report = report;
+ this.destFile = destFile;
+ addAttribute("from", report.getLocalFile().getAbsolutePath());
+ addAttribute("to", destFile.getAbsolutePath());
+ addAttribute("size", String.valueOf(destFile.length()));
+ }
+
+ protected void addArtifactAttributes(Artifact artifact) {
+ addMridAttributes(artifact.getModuleRevisionId());
+ addAttributes(artifact.getAttributes());
+ addAttribute("metadata", String.valueOf(artifact.isMetadata()));
+ }
+
+ public File getDestFile() {
+ return destFile;
+ }
+
+ public ArtifactDownloadReport getReport() {
+ return report;
+ }
+}
Propchange:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java?rev=778769&view=auto
==============================================================================
---
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
(added)
+++
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
Tue May 26 15:50:41 2009
@@ -0,0 +1,31 @@
+/*
+ * 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.core.event.retrieve;
+
+import java.io.File;
+
+import org.apache.ivy.core.report.ArtifactDownloadReport;
+
+public class StartRetrieveArtifactEvent extends RetrieveArtifactEvent {
+ public static final String NAME = "pre-retrieve-artifact";
+
+ public StartRetrieveArtifactEvent(
+ ArtifactDownloadReport report, File destFile) {
+ super(NAME, report, destFile);
+ }
+}
Propchange:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java?rev=778769&r1=778768&r2=778769&view=diff
==============================================================================
---
ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
(original)
+++
ant/ivy/core/trunk/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
Tue May 26 15:50:41 2009
@@ -38,7 +38,9 @@
import org.apache.ivy.core.LogOptions;
import org.apache.ivy.core.cache.ResolutionCacheManager;
import org.apache.ivy.core.event.EventManager;
+import org.apache.ivy.core.event.retrieve.EndRetrieveArtifactEvent;
import org.apache.ivy.core.event.retrieve.EndRetrieveEvent;
+import org.apache.ivy.core.event.retrieve.StartRetrieveArtifactEvent;
import org.apache.ivy.core.event.retrieve.StartRetrieveEvent;
import org.apache.ivy.core.module.descriptor.Artifact;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
@@ -128,11 +130,19 @@
File destFile = settings.resolveFile((String) it2.next());
if (!settings.isCheckUpToDate() || !upToDate(archive,
destFile)) {
Message.verbose("\t\tto " + destFile);
+ if (this.eventManager != null) {
+ this.eventManager.fireIvyEvent(
+ new StartRetrieveArtifactEvent(artifact,
destFile));
+ }
if (options.isMakeSymlinks()) {
FileUtil.symlink(archive, destFile, null, true);
} else {
FileUtil.copy(archive, destFile, null, true);
}
+ if (this.eventManager != null) {
+ this.eventManager.fireIvyEvent(
+ new EndRetrieveArtifactEvent(artifact,
destFile));
+ }
totalCopiedSize += destFile.length();
targetsCopied++;
} else {
Modified:
ant/ivy/core/trunk/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java
URL:
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java?rev=778769&r1=778768&r2=778769&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java
Tue May 26 15:50:41 2009
@@ -28,7 +28,9 @@
import org.apache.ivy.core.IvyPatternHelper;
import org.apache.ivy.core.event.IvyEvent;
import org.apache.ivy.core.event.IvyListener;
+import org.apache.ivy.core.event.retrieve.EndRetrieveArtifactEvent;
import org.apache.ivy.core.event.retrieve.EndRetrieveEvent;
+import org.apache.ivy.core.event.retrieve.StartRetrieveArtifactEvent;
import org.apache.ivy.core.event.retrieve.StartRetrieveEvent;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
import org.apache.ivy.core.report.ResolveReport;
@@ -141,10 +143,12 @@
ModuleDescriptor md = report.getModuleDescriptor();
String pattern =
"build/test/retrieve/[module]/[conf]/[artifact]-[revision].[ext]";
ivy.retrieve(md.getModuleRevisionId(), pattern, getRetrieveOptions());
- assertEquals(2, events.size());
+ assertEquals(4, events.size());
assertTrue(events.get(0) instanceof StartRetrieveEvent);
- assertTrue(events.get(1) instanceof EndRetrieveEvent);
- EndRetrieveEvent ev = (EndRetrieveEvent) events.get(1);
+ assertTrue(events.get(1) instanceof StartRetrieveArtifactEvent);
+ assertTrue(events.get(2) instanceof EndRetrieveArtifactEvent);
+ assertTrue(events.get(3) instanceof EndRetrieveEvent);
+ EndRetrieveEvent ev = (EndRetrieveEvent) events.get(3);
assertEquals(1, ev.getNbCopied());
assertEquals(0, ev.getNbUpToDate());