Index: main/core/src/main/java/hudson/scm/RepositoryBrowsers.java =================================================================== RCS file: /cvs/hudson/hudson/main/core/src/main/java/hudson/scm/RepositoryBrowsers.java,v retrieving revision 1.4 diff -u -r1.4 RepositoryBrowsers.java --- main/core/src/main/java/hudson/scm/RepositoryBrowsers.java 25 Mar 2007 01:23:49 -0000 1.4 +++ main/core/src/main/java/hudson/scm/RepositoryBrowsers.java 2 Apr 2007 05:36:37 -0000 @@ -21,7 +21,7 @@ /** * List of all installed {@link RepositoryBrowsers}. */ - public static final List>> LIST = Arrays.asList( + public static final List>> LIST = Descriptor.toList( ViewCVS.DESCRIPTOR, ViewSVN.DESCRIPTOR, FishEyeSVN.DESCRIPTOR Index: plugins/trac/src/main/java/hudson/plugins/trac/TracRepositoryBrowser.java =================================================================== RCS file: /cvs/hudson/hudson/plugins/trac/src/main/java/hudson/plugins/trac/TracRepositoryBrowser.java,v retrieving revision 1.2 diff -u -r1.2 TracRepositoryBrowser.java --- plugins/trac/src/main/java/hudson/plugins/trac/TracRepositoryBrowser.java 2 Apr 2007 02:16:43 -0000 1.2 +++ plugins/trac/src/main/java/hudson/plugins/trac/TracRepositoryBrowser.java 2 Apr 2007 05:36:39 -0000 @@ -2,6 +2,7 @@ import hudson.model.Descriptor; import hudson.model.AbstractProject; +import hudson.scm.EditType; import hudson.scm.RepositoryBrowser; import hudson.scm.SubversionChangeLogSet.LogEntry; import hudson.scm.SubversionChangeLogSet.Path; @@ -9,6 +10,7 @@ import org.kohsuke.stapler.StaplerRequest; import java.io.IOException; +import java.net.MalformedURLException; import java.net.URL; /** @@ -19,32 +21,35 @@ } /** - * Gets the {@link TracProjectProperty#tracWebsite} value configured - * for the current project. + * Gets a URL for the {@link TracProjectProperty#tracWebsite} value + * configured for the current project. */ - private String getTracWebURL(LogEntry cs) { + private URL getTracWebURL(LogEntry cs) throws MalformedURLException { AbstractProject p = cs.getParent().build.getProject(); TracProjectProperty tpp = p.getProperty(TracProjectProperty.class); if(tpp==null) return null; - else return tpp.tracWebsite; + else return new URL(tpp.tracWebsite); } + @Override public URL getDiffLink(Path path) throws IOException { - String baseUrl = getTracWebURL(path.getLogEntry()); - // TODO - throw new UnsupportedOperationException(); + if(path.getEditType()!= EditType.EDIT) + return null; // no diff if this is not an edit change + URL baseUrl = getTracWebURL(path.getLogEntry()); + int revision = path.getLogEntry().getRevision(); + return new URL(baseUrl, "changeset/" + revision + path.getValue() + "#file0"); } + @Override public URL getFileLink(Path path) throws IOException { - String baseUrl = getTracWebURL(path.getLogEntry()); - // TODO - throw new UnsupportedOperationException(); + URL baseUrl = getTracWebURL(path.getLogEntry()); + return baseUrl == null ? null : new URL(baseUrl, "browser" + path.getValue() + "#L1"); } + @Override public URL getChangeSetLink(LogEntry changeSet) throws IOException { - String baseUrl = getTracWebURL(changeSet); - // TODO - throw new UnsupportedOperationException(); + URL baseUrl = getTracWebURL(changeSet); + return baseUrl == null ? null : new URL(baseUrl, "changeset" + changeSet.getRevision()); } public DescriptorImpl getDescriptor() { Index: plugins/trac/src/main/resources/hudson/plugins/trac/TracRepositoryBrowser/config.jelly =================================================================== RCS file: plugins/trac/src/main/resources/hudson/plugins/trac/TracRepositoryBrowser/config.jelly diff -N plugins/trac/src/main/resources/hudson/plugins/trac/TracRepositoryBrowser/config.jelly --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ plugins/trac/src/main/resources/hudson/plugins/trac/TracRepositoryBrowser/config.jelly 2 Apr 2007 05:36:40 -0000 @@ -0,0 +1 @@ +