summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
authorcremet <cremet@epfl.ch>2004-04-13 15:23:16 +0000
committercremet <cremet@epfl.ch>2004-04-13 15:23:16 +0000
commita5fef0730897fcb541337ea26ea4b38d805e7336 (patch)
tree2b396e020a2eb61c8c4fca7ecea8d692d9ec80b1 /sources
parent988633e2863402bb2bc70275acc3478ded37da0b (diff)
downloadscala-a5fef0730897fcb541337ea26ea4b38d805e7336.tar.gz
scala-a5fef0730897fcb541337ea26ea4b38d805e7336.tar.bz2
scala-a5fef0730897fcb541337ea26ea4b38d805e7336.zip
- When launched as a server, Scaladoc compute t...
- When launched as a server, Scaladoc compute the pages lazily using a simple cache.
Diffstat (limited to 'sources')
-rw-r--r--sources/scala/tools/scaladoc/HTMLGenerator.java33
1 files changed, 25 insertions, 8 deletions
diff --git a/sources/scala/tools/scaladoc/HTMLGenerator.java b/sources/scala/tools/scaladoc/HTMLGenerator.java
index cb435e1913..8bcfa42345 100644
--- a/sources/scala/tools/scaladoc/HTMLGenerator.java
+++ b/sources/scala/tools/scaladoc/HTMLGenerator.java
@@ -10,6 +10,7 @@ package scala.tools.scaladoc;
import java.io.Writer;
import java.io.BufferedWriter;
+import java.io.StringWriter;
import java.io.Reader;
import java.io.InputStreamReader;
import java.io.File;
@@ -561,7 +562,7 @@ public abstract class HTMLGenerator {
public String name() { return Location.getURI(sym).toString(); }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
String title = Location.getName(sym);
createPrinters(writer, Location.getURI(sym), title, SELF_FRAME);
page.printHeader(ATTRS_META, getGenerator());
@@ -1072,7 +1073,7 @@ public abstract class HTMLGenerator {
public String name() { return FRAME_PAGE; }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
createPrinters(writer, Location.makeURI(FRAME_PAGE), windowtitle, "");
page.printHeader(ATTRS_META, getGenerator());
@@ -1136,7 +1137,7 @@ public abstract class HTMLGenerator {
public String name() { return name; }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
String rsrcName = "resources/" + name;
Reader reader = new InputStreamReader(HTMLGenerator.class.getResourceAsStream(rsrcName));
if (reader == null)
@@ -1244,7 +1245,7 @@ public abstract class HTMLGenerator {
public String name() { return PACKAGE_INDEX_PAGE; }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
createPrinters(writer, Location.makeURI(PACKAGE_INDEX_PAGE), "List of packages", CLASSES_FRAME);
page.printHeader(ATTRS_META, getGenerator());
page.printOpenBody();
@@ -1280,7 +1281,7 @@ public abstract class HTMLGenerator {
public String name() { return packageSummaryPage(sym); }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
createPrinters(writer, Location.makeURI(packageSummaryPage(sym)), Location.getName(sym), ROOT_FRAME);
page.printHeader(ATTRS_META, getGenerator());
page.printOpenBody();
@@ -1324,7 +1325,7 @@ public abstract class HTMLGenerator {
public String name() { return INDEX_PAGE; }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
String title = "Scala Library Index";
createPrinters(writer, Location.makeURI(INDEX_PAGE), title, SELF_FRAME);
page.printHeader(ATTRS_META, getGenerator());
@@ -1384,7 +1385,7 @@ public abstract class HTMLGenerator {
public String name() { return HELP_PAGE; }
- public void writeOn(Writer writer) {
+ protected void computeIn(Writer writer) {
String title = "API Help";
createPrinters(writer, Location.makeURI(HELP_PAGE), title, ROOT_PAGE);
page.printHeader(ATTRS_META, getGenerator());
@@ -2110,9 +2111,25 @@ public class SearchResult {
*/
public abstract class Promise {
+ protected StringWriter cache = null;
+
/** Name of the web page. */
public abstract String name();
+ /**
+ * Print the web page on the given writer. Do not forget to close
+ * the writer afterwards. Cache the result for further reuse.
+ */
+ public void writeOn(Writer writer) {
+ if (cache == null) {
+ cache = new StringWriter();
+ computeIn(cache);
+ }
+ try {
+ writer.write(cache.toString());
+ } catch(IOException e) { e.printStackTrace(); }
+ }
+
/** Print the web page on the given writer. */
- public abstract void writeOn(Writer writer);
+ protected abstract void computeIn(Writer writer);
}