From 12c5bbbb6d98103b81f9879dd823561646b804f4 Mon Sep 17 00:00:00 2001 From: Antoine Levy-Lambert Date: Tue, 28 Oct 2003 09:56:26 +0000 Subject: [PATCH] Solution for the Starteam disconnect bug PR: 24110 Submitted by: Steve Cohen (scohen at apache dot org) git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275572 13f79535-47bb-0310-9956-ffa450edef68 --- .../optional/starteam/StarTeamLabel.java | 44 +++++++++++-------- .../optional/starteam/StarTeamTask.java | 16 ++++++- .../optional/starteam/TreeBasedTask.java | 4 +- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java index 3672569db..2003eeb67 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamLabel.java @@ -76,6 +76,7 @@ import org.apache.tools.ant.BuildException; * * @author Christopher Charlier, ThoughtWorks, Inc. 2001 * @author Jason Yip + * @author Steve Cohen * @see StarBase Web Site * * @ant.task name="stlabel" category="scm" @@ -179,25 +180,32 @@ public class StarTeamLabel extends StarTeamTask { + "both specified. A revision label cannot be a build label."); } - View snapshot = openView(); - - // Create the new label and update the repository - - if (this.revisionlabel) { - new Label(snapshot, this.labelName, this.description).update(); - log("Created Revision Label " + this.labelName); - } else if (null != lastBuild) { - new Label(snapshot, this.labelName, this.description, this.lastBuild, - this.buildlabel).update(); - log("Created View Label (" - + (this.buildlabel ? "" : "non-") + "build) " + this.labelName - + " as of " + this.lastBuild.toString()); - } else { - new Label(snapshot, this.labelName, this.description, - this.buildlabel).update(); - log("Created View Label (" - + (this.buildlabel ? "" : "non-") + "build) " + this.labelName); + try { + View snapshot = openView(); + + // Create the new label and update the repository + + if (this.revisionlabel) { + new Label(snapshot, this.labelName, this.description).update(); + log("Created Revision Label " + this.labelName); + } else if (null != lastBuild) { + new Label(snapshot, this.labelName, this.description, this.lastBuild, + this.buildlabel).update(); + log("Created View Label (" + + (this.buildlabel ? "" : "non-") + "build) " + this.labelName + + " as of " + this.lastBuild.toString()); + } else { + new Label(snapshot, this.labelName, this.description, + this.buildlabel).update(); + log("Created View Label (" + + (this.buildlabel ? "" : "non-") + "build) " + this.labelName); + } + } catch (Exception e) { + throw new BuildException(e); + } finally { + disconnectFromServer(); } + } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java index cbe0f50c0..aee5856ed 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/StarTeamTask.java @@ -117,7 +117,7 @@ public abstract class StarTeamTask extends Task { private void logStarteamVersion() { log("StarTeam version: " - + BuildNumber.getDisplayString(), Project.MSG_DEBUG); + + BuildNumber.getDisplayString(), Project.MSG_VERBOSE); } @@ -317,6 +317,18 @@ public abstract class StarTeamTask extends Task { return this.server; } + /** + * disconnects from the StarTeam server. Should be called from the + * finally clause of every StarTeamTask-based execute method. + */ + protected final void disconnectFromServer() { + if (null != this.server) { + this.server.disconnect(); + log("successful disconnect from StarTeam Server " + servername, + Project.MSG_VERBOSE); + } + } + /** * returns a list of TypeNames known to the server. * @@ -362,6 +374,8 @@ public abstract class StarTeamTask extends Task { } View snapshot = createSnapshotView(view); + log("Connected to StarTeam view " + getURL(), + Project.MSG_VERBOSE); this.server = snapshot.getServer(); return snapshot; } diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java index 51c9ee16a..65837083a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java @@ -723,6 +723,8 @@ public abstract class TreeBasedTask extends StarTeamTask { } catch (Exception e) { throw new BuildException(e); + } finally { + disconnectFromServer(); } } @@ -735,7 +737,7 @@ public abstract class TreeBasedTask extends StarTeamTask { if (!stLabel.isRevisionLabel() && !stLabel.isViewLabel()) { throw new BuildException("Unexpected label type."); } - log("using label " + stLabel.getName(), Project.MSG_DEBUG); + log("using label " + stLabel.getName(), Project.MSG_VERBOSE); this.labelInUse = stLabel; return; }