![JAR search and dependency download from the Maven repository](/logo.png)
hudson.scm.ChangeLogSet Maven / Gradle / Ivy
Show all versions of svn-release-mgr Show documentation
package hudson.scm;
import hudson.MarkupText;
import hudson.Util;
import hudson.model.AbstractBuild;
import hudson.model.User;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* Represents SCM change list.
*
*
* Use the "index" view of this object to render the changeset detail page,
* and use the "digest" view of this object to render the summary page.
* For the change list at project level, see {@link SCM}.
*
*
* {@link Iterator} is expected to return recent changes first.
*
* @author Kohsuke Kawaguchi
*/
@ExportedBean(defaultVisibility=999)
public abstract class ChangeLogSet implements Iterable {
/**
* {@link AbstractBuild} whose change log this object represents.
*/
public final AbstractBuild,?> build;
protected ChangeLogSet(AbstractBuild, ?> build) {
this.build = build;
}
/**
* Returns true if there's no change.
*/
public abstract boolean isEmptySet();
/**
* All changes in the change set.
*/
// method for the remote API.
@Exported
public final Object[] getItems() {
List r = new ArrayList();
for (T t : this)
r.add(t);
return r.toArray();
}
/**
* Constant instance that represents no changes.
*/
public static ChangeLogSet extends ChangeLogSet.Entry> createEmpty(AbstractBuild build) {
return new CVSChangeLogSet(build,Collections.emptyList());
}
@ExportedBean(defaultVisibility=999)
public static abstract class Entry {
private ChangeLogSet parent;
public ChangeLogSet getParent() {
return parent;
}
/**
* Should be invoked before a {@link ChangeLogSet} is exposed to public.
*/
protected void setParent(ChangeLogSet parent) {
this.parent = parent;
}
/**
* Gets the "commit message".
*
*
* The exact definition depends on the individual SCM implementation.
*
* @return
* Can be empty but never null.
*/
public abstract String getMsg();
/**
* The user who made this change.
*
* @return
* never null.
*/
public abstract User getAuthor();
/**
* Returns a set of paths in the workspace that was
* affected by this change.
*
*
* Contains string like 'foo/bar/zot'. No leading/trailing '/',
* and separator must be normalized to '/'.
*
* @return never null.
*/
public abstract Collection getAffectedPaths();
/**
* Gets the text fully marked up by {@link ChangeLogAnnotator}.
*/
public String getMsgAnnotated() {
MarkupText markup = new MarkupText(getMsgEscaped());
for (ChangeLogAnnotator a : ChangeLogAnnotator.annotators)
a.annotate(parent.build,this,markup);
return markup.toString();
}
/**
* Message escaped for HTML
*/
public String getMsgEscaped() {
return Util.escape(getMsg());
}
}
}