From a125cf6876e0edc5a2498df57a9df06d60b1f572 Mon Sep 17 00:00:00 2001 From: James Moger Date: Thu, 2 Jun 2011 22:40:23 -0400 Subject: Unit testing. Start of git-notes display feature. --- src/com/gitblit/wicket/pages/BlobDiffPage.java | 2 +- src/com/gitblit/wicket/pages/CommitDiffPage.java | 2 +- src/com/gitblit/wicket/pages/CommitPage.html | 8 ++++++++ src/com/gitblit/wicket/pages/CommitPage.java | 24 ++++++++++++++++++++++ .../gitblit/wicket/pages/EditRepositoryPage.java | 19 +++++++++++++++-- src/com/gitblit/wicket/pages/MetricsPage.java | 10 ++++----- src/com/gitblit/wicket/pages/SummaryPage.java | 2 +- .../gitblit/wicket/panels/CommitLegendPanel.java | 15 ++++++++++++-- 8 files changed, 70 insertions(+), 12 deletions(-) (limited to 'src/com/gitblit/wicket') diff --git a/src/com/gitblit/wicket/pages/BlobDiffPage.java b/src/com/gitblit/wicket/pages/BlobDiffPage.java index b94da011..a8f8b3c1 100644 --- a/src/com/gitblit/wicket/pages/BlobDiffPage.java +++ b/src/com/gitblit/wicket/pages/BlobDiffPage.java @@ -24,8 +24,8 @@ import org.eclipse.jgit.revwalk.RevCommit; import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.utils.DiffUtils; +import com.gitblit.utils.DiffUtils.DiffOutputType; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.JGitUtils.DiffOutputType; import com.gitblit.utils.StringUtils; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.CommitHeaderPanel; diff --git a/src/com/gitblit/wicket/pages/CommitDiffPage.java b/src/com/gitblit/wicket/pages/CommitDiffPage.java index e7af833d..4815b2c7 100644 --- a/src/com/gitblit/wicket/pages/CommitDiffPage.java +++ b/src/com/gitblit/wicket/pages/CommitDiffPage.java @@ -32,8 +32,8 @@ import com.gitblit.GitBlit; import com.gitblit.Keys; import com.gitblit.models.PathModel.PathChangeModel; import com.gitblit.utils.DiffUtils; +import com.gitblit.utils.DiffUtils.DiffOutputType; import com.gitblit.utils.JGitUtils; -import com.gitblit.utils.JGitUtils.DiffOutputType; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.CommitHeaderPanel; import com.gitblit.wicket.panels.CommitLegendPanel; diff --git a/src/com/gitblit/wicket/pages/CommitPage.html b/src/com/gitblit/wicket/pages/CommitPage.html index 1b5fffed..bd317b7a 100644 --- a/src/com/gitblit/wicket/pages/CommitPage.html +++ b/src/com/gitblit/wicket/pages/CommitPage.html @@ -44,6 +44,14 @@
[commit message]
+ + + + + + +


+
diff --git a/src/com/gitblit/wicket/pages/CommitPage.java b/src/com/gitblit/wicket/pages/CommitPage.java index bc0d8792..3af9cf1d 100644 --- a/src/com/gitblit/wicket/pages/CommitPage.java +++ b/src/com/gitblit/wicket/pages/CommitPage.java @@ -18,6 +18,7 @@ package com.gitblit.wicket.pages; import java.util.ArrayList; import java.util.List; +import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; @@ -33,8 +34,10 @@ import org.eclipse.jgit.revwalk.RevCommit; import com.gitblit.DownloadZipServlet; import com.gitblit.GitBlit; import com.gitblit.Keys; +import com.gitblit.models.GitNote; import com.gitblit.models.PathModel.PathChangeModel; import com.gitblit.utils.JGitUtils; +import com.gitblit.utils.StringUtils; import com.gitblit.utils.JGitUtils.SearchType; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.CommitHeaderPanel; @@ -112,6 +115,27 @@ public class CommitPage extends RepositoryPage { addFullText("fullMessage", c.getFullMessage(), true); + // git notes + List notes = JGitUtils.getNotesOnCommit(r, c); + ListDataProvider notesDp = new ListDataProvider(notes); + DataView notesView = new DataView("notes", notesDp) { + private static final long serialVersionUID = 1L; + + public void populateItem(final Item item) { + GitNote entry = item.getModelObject(); + Component c = new LinkPanel("refName", null, entry.notesRef.displayName, + CommitPage.class, newCommitParameter(entry.notesRef.commit.getName())); + WicketUtils.setCssClass(c, "headRef"); + item.add(c); + item.add(createPersonPanel("authorName", entry.notesRef.commit.getAuthorIdent(), SearchType.AUTHOR)); + item.add(WicketUtils.createTimestampLabel("authorDate", + entry.notesRef.commit.getAuthorIdent().getWhen(), getTimeZone())); + item.add(new Label("noteContent", StringUtils.breakLinesForHtml(entry.content)).setEscapeModelStrings(false)); + } + }; + add(notesView.setVisible(notes.size() > 0)); + + // changed paths list List paths = JGitUtils.getFilesInCommit(r, c); add(new CommitLegendPanel("commitLegend", paths)); diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index eb2a8e64..e5496a1a 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -19,7 +19,6 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -104,6 +103,22 @@ public class EditRepositoryPage extends BasePage { // automatically convert backslashes to forward slashes repositoryModel.name = repositoryModel.name.replace('\\', '/'); + // Automatically replace // with / + repositoryModel.name = repositoryModel.name.replace("//", "/"); + + // prohibit folder paths + if (repositoryModel.name.startsWith("/")) { + error("Leading root folder references (/) are prohibited."); + return; + } + if (repositoryModel.name.startsWith("../")) { + error("Relative folder references (../) are prohibited."); + return; + } + if (repositoryModel.name.contains("/../")) { + error("Relative folder references (../) are prohibited."); + return; + } // confirm valid characters in repository name char[] validChars = { '/', '.', '_', '-' }; @@ -120,7 +135,7 @@ public class EditRepositoryPage extends BasePage { } } } - + // confirm access restriction selection if (repositoryModel.accessRestriction == null) { error("Please select access restriction!"); diff --git a/src/com/gitblit/wicket/pages/MetricsPage.java b/src/com/gitblit/wicket/pages/MetricsPage.java index 2186ae37..c6231e9d 100644 --- a/src/com/gitblit/wicket/pages/MetricsPage.java +++ b/src/com/gitblit/wicket/pages/MetricsPage.java @@ -47,7 +47,7 @@ public class MetricsPage extends RepositoryPage { public MetricsPage(PageParameters params) { super(params); Repository r = getRepository(); - insertLinePlot("commitsChart", MetricUtils.getDateMetrics(r, false)); + insertLinePlot("commitsChart", MetricUtils.getDateMetrics(r, false, null)); insertBarPlot("dayOfWeekChart", getDayOfWeekMetrics(r)); insertLinePlot("timeOfDayChart", getTimeOfDayMetrics(r)); insertPieChart("authorsChart", getAuthorMetrics(r)); @@ -57,7 +57,7 @@ public class MetricsPage extends RepositoryPage { if ((metrics != null) && (metrics.size() > 0)) { IChartData data = WicketUtils.getChartData(metrics); - ChartProvider provider = new ChartProvider(new Dimension(400, 100), ChartType.LINE, + ChartProvider provider = new ChartProvider(new Dimension(500, 100), ChartType.LINE, data); ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM); dateAxis.setLabels(new String[] { metrics.get(0).name, @@ -82,7 +82,7 @@ public class MetricsPage extends RepositoryPage { if ((metrics != null) && (metrics.size() > 0)) { IChartData data = WicketUtils.getChartData(metrics); - ChartProvider provider = new ChartProvider(new Dimension(400, 100), + ChartProvider provider = new ChartProvider(new Dimension(500, 100), ChartType.BAR_VERTICAL_SET, data); ChartAxis dateAxis = new ChartAxis(ChartAxisType.BOTTOM); List labels = new ArrayList(); @@ -110,7 +110,7 @@ public class MetricsPage extends RepositoryPage { for (Metric metric : metrics) { labels.add(metric.name); } - ChartProvider provider = new ChartProvider(new Dimension(400, 200), ChartType.PIE, data); + ChartProvider provider = new ChartProvider(new Dimension(500, 200), ChartType.PIE, data); provider.setPieLabels(labels.toArray(new String[labels.size()])); add(new Chart(wicketId, provider)); } else { @@ -164,7 +164,7 @@ public class MetricsPage extends RepositoryPage { } private List getAuthorMetrics(Repository repository) { - List authors = MetricUtils.getAuthorMetrics(repository); + List authors = MetricUtils.getAuthorMetrics(repository, true); Collections.sort(authors, new Comparator() { @Override public int compare(Metric o1, Metric o2) { diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java index c054fcca..a2d36d2e 100644 --- a/src/com/gitblit/wicket/pages/SummaryPage.java +++ b/src/com/gitblit/wicket/pages/SummaryPage.java @@ -77,7 +77,7 @@ public class SummaryPage extends RepositoryPage { List metrics = null; Metric metricsTotal = null; if (GitBlit.getBoolean(Keys.web.generateActivityGraph, true)) { - metrics = MetricUtils.getDateMetrics(r, true); + metrics = MetricUtils.getDateMetrics(r, true, null); metricsTotal = metrics.remove(0); } diff --git a/src/com/gitblit/wicket/panels/CommitLegendPanel.java b/src/com/gitblit/wicket/panels/CommitLegendPanel.java index bbfa1855..d875233a 100644 --- a/src/com/gitblit/wicket/panels/CommitLegendPanel.java +++ b/src/com/gitblit/wicket/panels/CommitLegendPanel.java @@ -17,6 +17,7 @@ package com.gitblit.wicket.panels; import java.text.MessageFormat; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -29,7 +30,6 @@ import org.apache.wicket.markup.repeater.data.ListDataProvider; import org.eclipse.jgit.diff.DiffEntry.ChangeType; import com.gitblit.models.PathModel.PathChangeModel; -import com.gitblit.utils.JGitUtils; import com.gitblit.wicket.WicketUtils; public class CommitLegendPanel extends Panel { @@ -38,7 +38,7 @@ public class CommitLegendPanel extends Panel { public CommitLegendPanel(String id, List paths) { super(id); - final Map stats = JGitUtils.getChangedPathsStats(paths); + final Map stats = getChangedPathsStats(paths); ListDataProvider legendDp = new ListDataProvider( new ArrayList(stats.keySet())); DataView legendsView = new DataView("legend", legendDp) { @@ -74,4 +74,15 @@ public class CommitLegendPanel extends Panel { }; add(legendsView); } + + protected Map getChangedPathsStats(List paths) { + Map stats = new HashMap(); + for (PathChangeModel path : paths) { + if (!stats.containsKey(path.changeType)) { + stats.put(path.changeType, new AtomicInteger(0)); + } + stats.get(path.changeType).incrementAndGet(); + } + return stats; + } } \ No newline at end of file -- cgit v1.2.3