001 package org.apache.turbine.modules; 002 003 /* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022 import org.apache.turbine.pipeline.PipelineData; 023 import org.apache.turbine.util.RunData; 024 025 /** 026 * This is the base class that defines what a Page module is. 027 * 028 * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a> 029 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> 030 * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a> 031 * @version $Id: Page.java 717934 2008-11-15 21:48:47Z tv $ 032 */ 033 public abstract class Page 034 extends Assembler 035 { 036 /** Prefix for page related classes and templates */ 037 public static final String PREFIX = "pages"; 038 039 /** Property for the size of the page cache if caching is on */ 040 public static final String CACHE_SIZE_KEY = "page.cache.size"; 041 042 /** The default size for the page cache */ 043 public static final int CACHE_SIZE_DEFAULT = 5; 044 045 /** Represents Page Objects */ 046 public static final String NAME = "page"; 047 048 /** 049 * @see org.apache.turbine.modules.Assembler#getPrefix() 050 */ 051 public String getPrefix() 052 { 053 return PREFIX; 054 } 055 056 /** 057 * A subclass must override this method to build itself. 058 * Subclasses override this method to store the page in RunData or 059 * to write the page to the output stream referenced in RunData. 060 * @deprecated Use <code>doBuild(PipelineData pipelineData)</code> instead 061 * @param data Turbine information. 062 * @exception Exception a generic exception. 063 */ 064 protected abstract void doBuild(RunData data) 065 throws Exception; 066 067 068 /** 069 * A subclass must override this method to build itself. 070 * Subclasses override this method to store the page in RunData or 071 * to write the page to the output stream referenced in RunData. 072 * Should revert to abstract when RunData goes. 073 * @param data Turbine information. 074 * @exception Exception a generic exception. 075 */ 076 protected void doBuild(PipelineData pipelineData) 077 throws Exception 078 { 079 RunData data = getRunData(pipelineData); 080 doBuild(data); 081 } 082 083 /** 084 * Subclasses can override this method to add additional 085 * functionality. This method is protected to force clients to 086 * use PageLoader to build a Page. 087 * @deprecated Use <code>build(PipelineData)</code> instead. 088 * @param data Turbine information. 089 * @exception Exception a generic exception. 090 */ 091 protected void build(RunData data) 092 throws Exception 093 { 094 doBuild(data); 095 } 096 097 098 099 /** 100 * Subclasses can override this method to add additional 101 * functionality. This method is protected to force clients to 102 * use PageLoader to build a Page. 103 * 104 * @param data Turbine information. 105 * @exception Exception a generic exception. 106 */ 107 protected void build(PipelineData pipelineData) 108 throws Exception 109 { 110 doBuild(pipelineData); 111 } 112 113 }