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 xa...@apache.org on 2007/05/10 20:44:34 UTC
svn commit: r536990 - in /incubator/ivy/core/trunk: ./
src/java/org/apache/ivy/ant/ src/java/org/apache/ivy/core/
test/java/org/apache/ivy/ant/
Author: xavier
Date: Thu May 10 13:44:32 2007
New Revision: 536990
URL: http://svn.apache.org/viewvc?view=rev&rev=536990
Log:
FIX: Ant project reference lost from context on multiple ant calls in single thread (IVY-497) (thanks to Jaroslaw Wypychowski)
Modified:
incubator/ivy/core/trunk/CHANGES.txt
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntBuildTrigger.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntCallTrigger.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildList.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildNumber.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCachePath.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCheck.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConvertPom.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyExtractFromSources.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyFindRevision.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInfo.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyListModules.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPublish.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyVar.java
incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java
incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyPostResolveTaskTest.java
Modified: incubator/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/CHANGES.txt?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/CHANGES.txt (original)
+++ incubator/ivy/core/trunk/CHANGES.txt Thu May 10 13:44:32 2007
@@ -43,6 +43,7 @@
John Shields
Johan Stuyts
John Williams
+ Jaroslaw Wypychowski
version in SVN
=====================================
@@ -50,6 +51,7 @@
- IMPROVEMENT: Allow "main" parameters to be passed directly (instead of using -args flag) (IVY-480) (thanks to Archie Cobbs)
+- FIX: Ant project reference lost from context on multiple ant calls in single thread (IVY-497) (thanks to Jaroslaw Wypychowski)
- FIX: EOL in the doc pages (IVY-470)
- FIX: Cache is storing ArtifactOrigin properties with no guarantee of unicity and types telescope during resolve. (IVY-430) (thanks to Stephane Bailliez)
- FIX: ivy:install ant task does not fail on error (IVY-475) (thanks to Jeffrey Blatttman)
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntBuildTrigger.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntBuildTrigger.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntBuildTrigger.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntBuildTrigger.java Thu May 10 13:44:32 2007
@@ -64,7 +64,7 @@
Message.verbose("target build file already built, skipping: "+f);
} else {
Ant ant = new Ant();
- Project project = (Project)IvyContext.getContext().get(IvyTask.ANT_PROJECT_CONTEXT_KEY);
+ Project project = (Project)IvyContext.getContext().peek(IvyTask.ANT_PROJECT_CONTEXT_KEY);
if (project == null) {
project = new Project();
project.init();
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntCallTrigger.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntCallTrigger.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntCallTrigger.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/AntCallTrigger.java Thu May 10 13:44:32 2007
@@ -57,7 +57,7 @@
private String _prefix;
public void progress(IvyEvent event) {
- Project project = (Project)IvyContext.getContext().get(IvyTask.ANT_PROJECT_CONTEXT_KEY);
+ Project project = (Project)IvyContext.getContext().peek(IvyTask.ANT_PROJECT_CONTEXT_KEY);
if (project == null) {
Message.info("ant call trigger can only be used from an ant build. Ignoring.");
return;
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactProperty.java Thu May 10 13:44:32 2007
@@ -49,7 +49,7 @@
_value = value;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
try {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyArtifactReport.java Thu May 10 13:44:32 2007
@@ -68,7 +68,7 @@
_pattern = pattern;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
if (_tofile == null) {
throw new BuildException("no destination file name: please provide it through parameter 'tofile'");
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildList.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildList.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildList.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildList.java Thu May 10 13:44:32 2007
@@ -116,7 +116,7 @@
_delimiter = delimiter;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
if (_reference == null) {
throw new BuildException("reference should be provided in ivy build list");
}
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildNumber.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildNumber.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildNumber.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyBuildNumber.java Thu May 10 13:44:32 2007
@@ -91,7 +91,7 @@
_prefix = prefix;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
if (_organisation == null) {
throw new BuildException("no organisation provided for ivy findmodules");
}
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCacheFileset.java Thu May 10 13:44:32 2007
@@ -49,7 +49,7 @@
}
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
if (_setid == null) {
throw new BuildException("setid is required in ivy cachefileset");
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCachePath.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCachePath.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCachePath.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCachePath.java Thu May 10 13:44:32 2007
@@ -50,7 +50,7 @@
_id = id;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
if (_pathid == null) {
if (_id != null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCheck.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCheck.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCheck.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyCheck.java Thu May 10 13:44:32 2007
@@ -64,7 +64,7 @@
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
try {
Ivy ivy = getIvyInstance();
if (_file != null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConfigure.java Thu May 10 13:44:32 2007
@@ -125,7 +125,7 @@
CredentialsStore.INSTANCE.addCredentials(c.getRealm(), c.getHost(), c.getUsername(), c.getPasswd());
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
try {
loadDefaultProperties();
} catch (Exception ex) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConvertPom.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConvertPom.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConvertPom.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyConvertPom.java Thu May 10 13:44:32 2007
@@ -53,7 +53,7 @@
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
try {
if (_pomFile == null) {
throw new BuildException("source pom file is required for convertpom task");
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyDeliver.java Thu May 10 13:44:32 2007
@@ -314,7 +314,7 @@
_conf = confs;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyExtractFromSources.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyExtractFromSources.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyExtractFromSources.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyExtractFromSources.java Thu May 10 13:44:32 2007
@@ -109,7 +109,7 @@
_concat.addFileset(fileSet);
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
configureConcat();
Writer out = new StringWriter();
_concat.setWriter(out);
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyFindRevision.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyFindRevision.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyFindRevision.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyFindRevision.java Thu May 10 13:44:32 2007
@@ -81,7 +81,7 @@
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
if (_organisation == null) {
throw new BuildException("no organisation provided for ivy findmodules");
}
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInfo.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInfo.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInfo.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInfo.java Thu May 10 13:44:32 2007
@@ -49,7 +49,7 @@
_file = file;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
if (_file == null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyInstall.java Thu May 10 13:44:32 2007
@@ -21,12 +21,11 @@
import org.apache.ivy.Ivy;
import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.report.ResolveReport;
import org.apache.ivy.core.settings.IvySettings;
import org.apache.ivy.plugins.matcher.PatternMatcher;
import org.apache.ivy.util.filter.FilterHelper;
import org.apache.tools.ant.BuildException;
-import org.apache.ivy.core.report.ResolveReport;
-import org.apache.tools.ant.BuildException;
/**
* Allow to install a module or a set of module from repository to another one.
@@ -48,7 +47,7 @@
private String _matcher = PatternMatcher.EXACT;
private boolean _haltOnFailure = true;
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
if (_cache == null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyListModules.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyListModules.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyListModules.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyListModules.java Thu May 10 13:44:32 2007
@@ -97,7 +97,7 @@
_branch = branch;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
if (_organisation == null) {
throw new BuildException("no organisation provided for ivy findmodules");
}
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java Thu May 10 13:44:32 2007
@@ -26,7 +26,6 @@
import org.apache.ivy.core.module.id.ModuleId;
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.ivy.core.settings.IvySettings;
import org.apache.ivy.util.Message;
import org.apache.ivy.util.StringUtils;
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPublish.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPublish.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPublish.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPublish.java Thu May 10 13:44:32 2007
@@ -165,7 +165,7 @@
_replacedynamicrev = replacedynamicrev;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyReport.java Thu May 10 13:44:32 2007
@@ -119,7 +119,7 @@
_resolveId = resolveId;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRepositoryReport.java Thu May 10 13:44:32 2007
@@ -64,7 +64,7 @@
private String _xslext = "html";
private List _params = new ArrayList();
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
if (_cache == null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java Thu May 10 13:44:32 2007
@@ -133,7 +133,7 @@
return _failureProperty;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
try {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyRetrieve.java Thu May 10 13:44:32 2007
@@ -42,7 +42,7 @@
_pattern = pattern;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
_pattern = getProperty(_pattern, getSettings(), "ivy.retrieve.pattern");
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyTask.java Thu May 10 13:44:32 2007
@@ -31,7 +31,6 @@
import org.apache.ivy.util.Message;
import org.apache.ivy.util.StringUtils;
import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
@@ -41,7 +40,7 @@
* @author Xavier Hanin
*
*/
-public class IvyTask extends Task {
+public abstract class IvyTask extends Task {
public static final String ANT_PROJECT_CONTEXT_KEY = "ant-project";
private Boolean _validate = null;
@@ -252,9 +251,42 @@
return val;
}
- public void setProject(Project project) {
- super.setProject(project);
- IvyContext.getContext().set(ANT_PROJECT_CONTEXT_KEY, project);
+ /**
+ * Called when task starts its execution.
+ */
+ protected void prepareTask(){
+ //push current project on the stack in context
+ IvyContext.getContext().push(ANT_PROJECT_CONTEXT_KEY, getProject());
+ }
+
+ /**
+ * Called when task is about to finish
+ * Should clean up all state related information (stacks for example)
+ */
+ protected void finalizeTask(){
+ if(!IvyContext.getContext().pop(ANT_PROJECT_CONTEXT_KEY,getProject())){
+ Message.error("ANT project poped from stack not equals current !. Ignoring");
+ }
}
+
+ /**
+ * Ant task execute.
+ * Calls prepareTask, doExecute, finalzeTask
+ */
+ public final void execute() throws BuildException{
+ try{
+ prepareTask();
+ doExecute();
+ } finally {
+ finalizeTask();
+ }
+ }
+
+ /**
+ * The real logic of task execution after project has been set in the context.
+ * MUST be implemented by subclasses
+ * @throws BuildException
+ */
+ public abstract void doExecute() throws BuildException;
}
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyVar.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyVar.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyVar.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyVar.java Thu May 10 13:44:32 2007
@@ -92,7 +92,7 @@
_value = value;
}
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
Ivy ivy = getIvyInstance();
IvySettings settings = ivy.getSettings();
if (getName() != null) {
Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/core/IvyContext.java Thu May 10 13:44:32 2007
@@ -20,6 +20,8 @@
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Stack;
@@ -129,7 +131,89 @@
public void set(String key, Object value) {
_contextMap.put(key, new WeakReference(value));
}
+
+ /**
+ * Reads the first object from the list saved under given key in the context.
+ * If value under key represents non List object then a RuntimeException is thrown.
+ * @param key context key for the string
+ * @return top object from the list (index 0) or null if no key or list empty
+ */
+ public Object peek(String key){
+ synchronized(_contextMap){
+ Object o=_contextMap.get(key);
+ if(o==null) return null;
+ if(o instanceof List){
+ if(((List)o).size()==0) return null;
+ Object ret=((List)o).get(0);
+ return ret;
+ } else {
+ throw new RuntimeException("Cannot top from non List object "+o);
+ }
+ }
+ }
+
+ /**
+ * Removes and returns first object from the list saved under given key in the context.
+ * If value under key represents non List object then a RuntimeException is thrown.
+ * @param key context key for the string
+ * @return top object from the list (index 0) or null if no key or list empty
+ */
+ public Object pop(String key){
+ synchronized(_contextMap){
+ Object o=_contextMap.get(key);
+ if(o==null) return null;
+ if(o instanceof List){
+ if(((List)o).size()==0) return null;
+ Object ret=((List)o).remove(0);
+ return ret;
+ } else {
+ throw new RuntimeException("Cannot pop from non List object "+o);
+ }
+ }
+ }
+ /**
+ * Removes and returns first object from the list saved under given key in the context
+ * but only if it equals the given expectedValue - if not a false value is returned.
+ * If value under key represents non List object then a RuntimeException is thrown.
+ * @param key context key for the string
+ * @return true if the r
+ */
+ public boolean pop(String key, Object expectedValue){
+ synchronized(_contextMap){
+ Object o=_contextMap.get(key);
+ if(o==null) return false;
+ if(!o.equals(expectedValue)) return false;
+ if(o instanceof List){
+ if(((List)o).size()==0) return false;
+ ((List)o).remove(0);
+ return true;
+ } else {
+ throw new RuntimeException("Cannot pop from non List object "+o);
+ }
+ }
+ }
+
+ /**
+ * Puts a new object at the start of the list saved under given key in the context.
+ * If value under key represents non List object then a RuntimeException is thrown.
+ * If no list exists under given key a new LinkedList is created. This is kept
+ * without WeakReference in opposite to the put() results.
+ * @param key key context key for the string
+ * @param value value to be saved under the key
+ */
+ public void push(String key, Object value){
+ synchronized(_contextMap){
+ if(!_contextMap.containsKey(key)) _contextMap.put(key, new LinkedList());
+ Object o=_contextMap.get(key);
+ if(o instanceof List){
+ ((List)o).add(0,value);
+ } else {
+ throw new RuntimeException("Cannot push to non List object "+o);
+ }
+ }
+ }
+
public Thread getOperatingThread() {
return _operatingThread;
}
Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyPostResolveTaskTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyPostResolveTaskTest.java?view=diff&rev=536990&r1=536989&r2=536990
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyPostResolveTaskTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/ant/IvyPostResolveTaskTest.java Thu May 10 13:44:32 2007
@@ -42,7 +42,7 @@
_project.setProperty("ivy.settings.file", "test/repositories/ivysettings.xml");
_task = new IvyPostResolveTask() {
- public void execute() throws BuildException {
+ public void doExecute() throws BuildException {
prepareAndCheck();
}
};