<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2006, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>appserv-tags</short-name>
  <uri>Sun ONE Application Server Tags</uri>
  <description>
    This tag library is part of the GlassFish Application Server.
  </description>

  <listener>
    <listener-class>
      com.sun.appserv.web.taglibs.cache.CacheContextListener
    </listener-class>
  </listener>

  <tag>
    <name>cache</name>
    <tag-class>
      com.sun.appserv.web.taglibs.cache.CacheTag
    </tag-class>
    <body-content>JSP</body-content>
    <description>
      The cache tag lets you cache fragments of your JSP pages.
    </description>
    <attribute>
      <name>key</name>
      <required>no</required>
      <rtexprvalue>yes</rtexprvalue>
      <description>
        The cache key is suffixed to the servlet path to generate a key
        to access the cached entry. If no key is specified, a number is
        generated according to the position of the tag in the page.
      </description>
    </attribute>
    <attribute>
      <name>timeout</name>
      <required>no</required>
      <rtexprvalue>no</rtexprvalue>
      <description>
        The amount of time in seconds, after which the body of the tag
        is evaluated and the cache is refreshed. A different unit of time
        can also be specified by postfixing the timeout value with the
        desired unit: s= seconds, m= minutes, h= hours, d=days.
        The default value is "60s".
      </description>
    </attribute>
    <attribute>
      <name>nocache</name>
      <required>no</required>
      <rtexprvalue>yes</rtexprvalue>
      <description>
        If set to true, the body content is evaluated and served as if
        there was no cache tag. This offers a way to programmatically
        decide whether the cached response should be sent or whether the
        body has to be evaluated, though the response is not cached.
        The default value is "false".
      </description>
    </attribute>
    <attribute>
      <name>refresh</name>
      <required>no</required>
      <rtexprvalue>yes</rtexprvalue>
      <description>
        If set to true, the body content is evaluated irrespective of
        the timeout and the response is cached again.
        The default value is "false".
      </description>
    </attribute>
    <attribute>
      <name>scope</name>
      <required>no</required>
      <rtexprvalue>no</rtexprvalue>
      <description>
        Specifies the scope of the cache. Valid values are
        "request", "session", and "application".
        The default value is "application".
      </description>
    </attribute>
  </tag>

  <tag>
    <name>flush</name>
    <tag-class>
      com.sun.appserv.web.taglibs.cache.FlushTag
    </tag-class>
    <body-content>empty</body-content>
    <description>
      The cache tag lets you flush particular cache entries or the
      entire cache in a given scope.
    </description>
    <attribute>
      <name>key</name>
      <required>no</required>
      <rtexprvalue>yes</rtexprvalue>
      <description>
        The cache key is suffixed to the servlet path to generate a key
        to access the cached entry. If no key is specified, a number is
        generated according to the position of the tag in the page.
      </description>
    </attribute>
    <attribute>
      <name>scope</name>
      <required>no</required>
      <rtexprvalue>no</rtexprvalue>
      <description>
        Specifies the scope of the cache. Valid values are
        "request", "session", and "application".
        The default value is "application".
      </description>
    </attribute>
  </tag>
</taglib>
