resurrected rev.28991

git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@29616 71c3de6d-444a-0410-be80-ed276b4c234a
This commit is contained in:
kohsuke committed 2010-03-30 23:14:29 +00:00
1 parent ef39c053f7
commit 059ef4ac26
6 files changed
+96 -2

No files matched your search

@@ -4,6 +4,9 @@ import hudson.Extension;
import hudson.util.ListBoxModel;
import org.kohsuke.stapler.QueryParameter;
import java.util.Arrays;
import java.util.Collection;
import static java.util.Arrays.asList;
/**
@@ -5,6 +5,14 @@ import hudson.ExtensionPoint;
import hudson.model.Action;
import hudson.model.Describable;
import hudson.model.Hudson;
import org.kohsuke.stapler.StaplerResponse;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import static org.apache.commons.io.IOUtils.copy;
/**
* @author Kohsuke Kawaguchi
@@ -25,6 +33,23 @@ public abstract class UISample implements ExtensionPoint, Action, Describable<UI
return getClass().getSimpleName();
}
/**
* Source files associated with this sample.
*/
public List<SourceFile> getSourceFiles() {
return Arrays.asList(new SourceFile(getClass().getSimpleName()+".java"));
}
/**
* Binds {@link SourceFile}s into URL.
*/
public SourceFile getSourceFile(String name) {
for (SourceFile sf : getSourceFiles())
if (sf.name.equals(name))
return sf;
return null;
}
/**
* Returns a paragraph of natural text that describes this sample.
* Interpreted as HTML.
@@ -42,4 +67,27 @@ public abstract class UISample implements ExtensionPoint, Action, Describable<UI
return Hudson.getInstance().getExtensionList(UISample.class);
}
/**
* @author Kohsuke Kawaguchi
*/
public class SourceFile {
public final String name;
public SourceFile(String name) {
this.name = name;
}
public URL resolve() {
return UISample.this.getClass().getResource(name);
}
/**
* Serves this source file.
*/
public void doIndex(StaplerResponse rsp) throws IOException {
rsp.setContentType("text/plain;charset=UTF-8");
copy(resolve().openStream(),rsp.getOutputStream());
}
}
}