blob: febdbccef426a39bee216f7959acc0e25f08fc69 [file] [log] [blame]
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.tapestry.engine;
import org.apache.tapestry.IComponent;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.parse.ComponentTemplate;
/**
* A source of localized HTML templates for components.
* The cache is the means of access for components to load thier templates,
* which they need not do until just before rendering.
*
* <p>The template cache must be able to locate and parse templates as needed.
* It may maintain templates in memory.
*
* @author Howard Ship
* @version $Id$
*
**/
public interface ITemplateSource
{
/**
* Name of an {@link org.apache.tapestry.IAsset} of a component that provides the template
* for the asset. This overrides the default (that the template is in
* the same directory as the specification). This allows
* pages or component templates to be located properly, relative to static
* assets (such as images and stylesheets).
*
* @since 2.2
*
**/
public static final String TEMPLATE_ASSET_NAME = "$template";
/**
* Name of the component parameter that will be automatically bound to
* the HTML tag that is used to insert the component in the parent template.
* If the parent component does not have a template (i.e. it extends
* AbstractComponent, not BaseComponent), then this parameter is bound to null.
*
* @since 3.0
*
**/
public static final String TEMPLATE_TAG_PARAMETER_NAME = "templateTag";
/**
* Locates the template for the component.
*
* @param cycle The request cycle loading the template; this is required
* in some cases when the template is loaded from an {@link org.apache.tapestry.IAsset}.
* @param component The component for which a template should be loaded.
*
* @throws org.apache.tapestry.ApplicationRuntimeException if the resource cannot be located or loaded.
*
**/
public ComponentTemplate getTemplate(IRequestCycle cycle, IComponent component);
/**
* Invoked to have the source clear any internal cache. This is most often
* used when debugging an application.
*
**/
public void reset();
}