You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/12/07 22:07:37 UTC
svn commit: r1211633 - in
/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm:
ChangeFile.java ChangeSet.java ScmFileStatus.java
Author: olamy
Date: Wed Dec 7 21:07:37 2011
New Revision: 1211633
URL: http://svn.apache.org/viewvc?rev=1211633&view=rev
Log:
[SCM-649] Enhance SCM changelog model to hold more data about changes
patch regarding model change.
patch modified with adding @since on added fields
Submitted by Petr Kozelka.
Modified:
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java
maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeFile.java Wed Dec 7 21:07:37 2011
@@ -45,6 +45,25 @@ public class ChangeFile
private String revision;
/**
+ * edit type on the file
+ * note: perhaps we should use a different type, ideally enum ? this one seems to target quite different usecases ...
+ * @since 1.7
+ */
+ private ScmFileStatus action;
+
+ /**
+ * the name before copying or moving
+ * @since 1.7
+ */
+ private String originalName;
+
+ /**
+ * the revision from which we {@link ScmFileStatus copied} or {@link ScmFileStatus moved} this file or directory
+ * @since 1.7
+ */
+ private String originalRevision;
+
+ /**
* Constructor for the ChangeFile object without all details available
*
* @param name file name
@@ -78,23 +97,40 @@ public class ChangeFile
}
/**
- * Gets the revision attribute of the ChangeLogFile object.
+ * Setter for property name.
*
- * @return the latest revision of the file
+ * @param name New value of property name.
*/
- public String getRevision()
+ public void setName( String name )
{
- return revision;
+ this.name = name;
+ }
+
+ public String getOriginalName() {
+ return originalName;
+ }
+
+ public void setOriginalName( String originalName ) {
+
+ this.originalName = originalName;
+ }
+
+ public String getOriginalRevision() {
+ return originalRevision;
+ }
+
+ public void setOriginalRevision(String originalRevision) {
+ this.originalRevision = originalRevision;
}
/**
- * Setter for property name.
+ * Gets the revision attribute of the ChangeLogFile object.
*
- * @param name New value of property name.
+ * @return the latest revision of the file
*/
- public void setName( String name )
+ public String getRevision()
{
- this.name = name;
+ return revision;
}
/**
@@ -107,6 +143,14 @@ public class ChangeFile
this.revision = revision;
}
+ public ScmFileStatus getAction() {
+ return action;
+ }
+
+ public void setAction( ScmFileStatus action ) {
+ this.action = action;
+ }
+
/**
* Provide a version of the object as a string for debugging purposes
*
@@ -114,13 +158,29 @@ public class ChangeFile
*/
public String toString()
{
- StringBuilder buffer = new StringBuilder( getName() );
+ StringBuilder buffer = new StringBuilder( );
+
+ if ( getAction() != null )
+ {
+ buffer.append( "[" ).append( getAction() ).append( "]:" );
+ }
+ buffer.append( getName() );
if ( getRevision() != null )
{
buffer.append( ", " ).append( getRevision() );
}
+ if ( getOriginalName() != null )
+ {
+ buffer.append( ", originalName" ).append( getOriginalName() );
+ }
+
+ if ( getOriginalRevision() != null )
+ {
+ buffer.append( ", originalRevision=" ).append( getOriginalRevision() );
+ }
+
return buffer.toString();
}
}
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ChangeSet.java Wed Dec 7 21:07:37 2011
@@ -23,8 +23,11 @@ import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import org.apache.maven.scm.provider.ScmProviderRepository;
import org.apache.maven.scm.util.FilenameUtils;
@@ -120,6 +123,18 @@ public class ChangeSet
private String revision;
/**
+ * Revision from which this one originates
+ * @since 1.7
+ */
+ private String parentRevision;
+
+ /**
+ * Revisions that were merged into this one
+ * @since 1.7
+ */
+ private Set<String> mergedRevisions;
+
+ /**
* @param strDate Date the changes were committed
* @param userDatePattern pattern of date
* @param comment comment provided at commit time
@@ -416,13 +431,44 @@ public class ChangeSet
{
this.revision = revision;
}
-
-
+
+ public String getParentRevision() {
+ return parentRevision;
+ }
+
+ public void setParentRevision(String parentRevision) {
+ this.parentRevision = parentRevision;
+ }
+
+ public void addMergedRevision(String mergedRevision) {
+ if (mergedRevisions == null) {
+ mergedRevisions = new LinkedHashSet<String>();
+ }
+ mergedRevisions.add(mergedRevision);
+ }
+
+ public Set<String> getMergedRevisions() {
+ return mergedRevisions == null ? Collections.<String>emptySet() : mergedRevisions;
+ }
+
+ public void setMergedRevisions(Set<String> mergedRevisions) {
+ this.mergedRevisions = mergedRevisions;
+ }
+
/** {@inheritDoc} */
public String toString()
{
StringBuilder result = new StringBuilder( author == null ? " null " : author );
result.append( "\n" ).append( date == null ? "null " : date.toString() ).append( "\n" );
+ // parent(s)
+ if ( parentRevision != null ) {
+ result.append( "parent: " ).append( parentRevision );
+ if ( !mergedRevisions.isEmpty() ) {
+ result.append( " + " );
+ result.append( mergedRevisions );
+ }
+ result.append( "\n" );
+ }
if ( files != null )
{
for ( ChangeFile file : files )
@@ -460,13 +506,34 @@ public class ChangeSet
.append( author )
.append( "]]></author>\n" );
+ if ( parentRevision != null) {
+ buffer.append( "\t\t<parent>" ).append( getParentRevision() ).append( "</parent>\n" );
+ }
+ for ( String mergedRevision : getMergedRevisions() )
+ {
+ buffer.append( "\t\t<merge>" ).append( mergedRevision ).append( "</merge>\n" );
+ }
+
if ( files != null )
{
for ( ChangeFile file : files )
{
- buffer.append( "\t\t<file>\n" ).append( "\t\t\t<name>" ).append( escapeValue( file.getName() ) )
- .append( "</name>\n" ).append( "\t\t\t<revision>" ).append( file.getRevision() )
- .append( "</revision>\n" );
+ buffer.append( "\t\t<file>\n" );
+ if ( file.getAction() != null )
+ {
+ buffer.append( "\t\t\t<action>" ).append( file.getAction() ).append( "</action>\n" );
+ }
+ buffer.append( "\t\t\t<name>" ).append( escapeValue( file.getName() ) ).append( "</name>\n" );
+ buffer.append( "\t\t\t<revision>" ).append( file.getRevision() ).append( "</revision>\n" );
+ if ( file.getOriginalName() != null )
+ {
+ buffer.append( "\t\t\t<orig-name>" ).append( escapeValue( file.getOriginalName() ) ).append( "</orig-name>\n" );
+ }
+ if ( file.getOriginalRevision() != null )
+ {
+ buffer.append( "\t\t\t<orig-revision>" ).append( file.getOriginalRevision() ).append(
+ "</orig-revision>\n" );
+ }
buffer.append( "\t\t</file>\n" );
}
}
@@ -502,6 +569,8 @@ public class ChangeSet
result = prime * result + ( ( author == null ) ? 0 : author.hashCode() );
result = prime * result + ( ( comment == null ) ? 0 : comment.hashCode() );
result = prime * result + ( ( date == null ) ? 0 : date.hashCode() );
+ result = prime * result + ( ( parentRevision == null ) ? 0 : parentRevision.hashCode() );
+ result = prime * result + ( ( mergedRevisions == null ) ? 0 : mergedRevisions.hashCode() );
result = prime * result + ( ( files == null ) ? 0 : files.hashCode() );
return result;
}
Modified: maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java
URL: http://svn.apache.org/viewvc/maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java?rev=1211633&r1=1211632&r2=1211633&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java (original)
+++ maven/scm/trunk/maven-scm-api/src/main/java/org/apache/maven/scm/ScmFileStatus.java Wed Dec 7 21:07:37 2011
@@ -58,6 +58,18 @@ public final class ScmFileStatus
public static final ScmFileStatus MODIFIED = new ScmFileStatus( "modified" );
/**
+ * The file has been renamed or moved in the working tree.
+ * @since 1.7
+ */
+ public static final ScmFileStatus RENAMED = new ScmFileStatus( "renamed" );
+
+ /**
+ * The file has been copied in the working tree.
+ * @since 1.7
+ */
+ public static final ScmFileStatus COPIED = new ScmFileStatus( "copied" );
+
+ /**
* The file is missing in the working tree.
*/
public static final ScmFileStatus MISSING = new ScmFileStatus( "missing" );