http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/cache/TemplateConfigurationFactoryException.html
----------------------------------------------------------------------
diff --git 
a/builds/fm2.3.28/api/freemarker/cache/TemplateConfigurationFactoryException.html
 
b/builds/fm2.3.28/api/freemarker/cache/TemplateConfigurationFactoryException.html
new file mode 100644
index 0000000..37b19b8
--- /dev/null
+++ 
b/builds/fm2.3.28/api/freemarker/cache/TemplateConfigurationFactoryException.html
@@ -0,0 +1,280 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:56 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TemplateConfigurationFactoryException (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TemplateConfigurationFactoryException 
(FreeMarker 2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateConfigurationFactoryException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateConfigurationFactory.html" 
title="class in freemarker.cache"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a 
href="../../index.html?freemarker/cache/TemplateConfigurationFactoryException.html"
 target="_top">Frames</a></li>
+<li><a href="TemplateConfigurationFactoryException.html" 
target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.cache</div>
+<h2 title="Class TemplateConfigurationFactoryException" class="title">Class 
TemplateConfigurationFactoryException</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>java.lang.Throwable</li>
+<li>
+<ul class="inheritance">
+<li>java.lang.Exception</li>
+<li>
+<ul class="inheritance">
+<li>freemarker.cache.TemplateConfigurationFactoryException</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Serializable</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span 
class="typeNameLabel">TemplateConfigurationFactoryException</span>
+extends java.lang.Exception</pre>
+<div class="block">Non-I/O exception thrown by <a 
href="../../freemarker/cache/TemplateConfigurationFactory.html" title="class in 
freemarker.cache"><code>TemplateConfigurationFactory</code></a>-s.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.24</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../serialized-form.html#freemarker.cache.TemplateConfigurationFactoryException">Serialized
 Form</a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateConfigurationFactoryException.html#TemplateConfigurationFactoryException-java.lang.String-">TemplateConfigurationFactoryException</a></span>(java.lang.String&nbsp;message)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateConfigurationFactoryException.html#TemplateConfigurationFactoryException-java.lang.String-java.lang.Throwable-">TemplateConfigurationFactoryException</a></span>(java.lang.String&nbsp;message,
+                                     
java.lang.Throwable&nbsp;cause)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a 
name="methods.inherited.from.class.java.lang.Throwable">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
+<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, 
getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, 
printStackTrace, printStackTrace, setStackTrace, toString</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, 
wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TemplateConfigurationFactoryException-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TemplateConfigurationFactoryException</h4>
+<pre>public&nbsp;TemplateConfigurationFactoryException(java.lang.String&nbsp;message)</pre>
+</li>
+</ul>
+<a 
name="TemplateConfigurationFactoryException-java.lang.String-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TemplateConfigurationFactoryException</h4>
+<pre>public&nbsp;TemplateConfigurationFactoryException(java.lang.String&nbsp;message,
+                                             
java.lang.Throwable&nbsp;cause)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateConfigurationFactoryException.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateConfigurationFactory.html" 
title="class in freemarker.cache"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a 
href="../../index.html?freemarker/cache/TemplateConfigurationFactoryException.html"
 target="_top">Frames</a></li>
+<li><a href="TemplateConfigurationFactoryException.html" 
target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/cache/TemplateLoader.html
----------------------------------------------------------------------
diff --git a/builds/fm2.3.28/api/freemarker/cache/TemplateLoader.html 
b/builds/fm2.3.28/api/freemarker/cache/TemplateLoader.html
new file mode 100644
index 0000000..d1835e9
--- /dev/null
+++ b/builds/fm2.3.28/api/freemarker/cache/TemplateLoader.html
@@ -0,0 +1,388 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:56 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TemplateLoader (FreeMarker 2.3.28-nightly_20180310T195428Z-incubating 
API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TemplateLoader (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLoader.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a 
href="../../freemarker/cache/TemplateConfigurationFactoryException.html" 
title="class in freemarker.cache"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupContext.html" title="class 
in freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLoader.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLoader.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.cache</div>
+<h2 title="Interface TemplateLoader" class="title">Interface 
TemplateLoader</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Subinterfaces:</dt>
+<dd><a href="../../freemarker/cache/StatefulTemplateLoader.html" 
title="interface in freemarker.cache">StatefulTemplateLoader</a></dd>
+</dl>
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../freemarker/cache/ByteArrayTemplateLoader.html" title="class 
in freemarker.cache">ByteArrayTemplateLoader</a>, <a 
href="../../freemarker/cache/ClassTemplateLoader.html" title="class in 
freemarker.cache">ClassTemplateLoader</a>, <a 
href="../../freemarker/cache/FileTemplateLoader.html" title="class in 
freemarker.cache">FileTemplateLoader</a>, <a 
href="../../freemarker/cache/MultiTemplateLoader.html" title="class in 
freemarker.cache">MultiTemplateLoader</a>, <a 
href="../../freemarker/cache/StringTemplateLoader.html" title="class in 
freemarker.cache">StringTemplateLoader</a>, <a 
href="../../freemarker/cache/URLTemplateLoader.html" title="class in 
freemarker.cache">URLTemplateLoader</a>, <a 
href="../../freemarker/cache/WebappTemplateLoader.html" title="class in 
freemarker.cache">WebappTemplateLoader</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public interface <span class="typeNameLabel">TemplateLoader</span></pre>
+<div class="block">FreeMarker loads template "files" through objects that 
implement this interface,
+ thus the templates need not be real files, and can come from any kind of data 
source
+ (like classpath, servlet context, database, etc). While FreeMarker provides a 
few
+ <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a> implementations 
out-of-the-box, it's normal for embedding
+ frameworks to use their own implementations.
+ 
+ <p>To set the <a href="../../freemarker/cache/TemplateLoader.html" 
title="interface in freemarker.cache"><code>TemplateLoader</code></a> used by 
FreeMaker, use
+ <a 
href="../../freemarker/template/Configuration.html#setTemplateLoader-freemarker.cache.TemplateLoader-"><code>Configuration.setTemplateLoader(TemplateLoader)</code></a>.
+ 
+ <p>Implementations of this interface should be thread-safe.
+ 
+ <p>Implementations should override <code>Object.toString()</code> to show 
information about from where the
+ <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a> loads the templates. For 
example, for a template loader that loads template from database
+ table <code>toString</code> could return something like
+ <code>"MyDatabaseTemplateLoader(user=\"cms\", 
table=\"mail_templates\")"</code>. This string will be shown in
+ <a href="../../freemarker/template/TemplateNotFoundException.html" 
title="class in freemarker.template"><code>TemplateNotFoundException</code></a> 
exception messages, next to the template name.
+ 
+ <p>For those who has to dig deeper, note that the <a 
href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a> is actually stored inside
+ the <a href="../../freemarker/cache/TemplateCache.html" title="class in 
freemarker.cache"><code>TemplateCache</code></a> of the <a 
href="../../freemarker/template/Configuration.html" title="class in 
freemarker.template"><code>Configuration</code></a>, and is normally only 
accessed directly
+ by the <a href="../../freemarker/cache/TemplateCache.html" title="class in 
freemarker.cache"><code>TemplateCache</code></a>, and templates are get via the 
<a href="../../freemarker/cache/TemplateCache.html" title="class in 
freemarker.cache"><code>TemplateCache</code></a> API-s.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a 
href="javascript:show(4);">Abstract Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-">closeTemplateSource</a></span>(java.lang.Object&nbsp;templateSource)</code>
+<div class="block">Closes the template source, releasing any resources held 
that are only required for reading the template and/or
+ its metadata.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-">findTemplateSource</a></span>(java.lang.String&nbsp;name)</code>
+<div class="block">Finds the template in the backing storage and returns an 
object that identifies the storage location where the
+ template can be loaded from.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-">getLastModified</a></span>(java.lang.Object&nbsp;templateSource)</code>
+<div class="block">Returns the time of last modification of the specified 
template source.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>java.io.Reader</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLoader.html#getReader-java.lang.Object-java.lang.String-">getReader</a></span>(java.lang.Object&nbsp;templateSource,
+         java.lang.String&nbsp;encoding)</code>
+<div class="block">Returns the character stream of a template represented by 
the specified template source.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="findTemplateSource-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>findTemplateSource</h4>
+<pre>java.lang.Object&nbsp;findTemplateSource(java.lang.String&nbsp;name)
+                             throws java.io.IOException</pre>
+<div class="block">Finds the template in the backing storage and returns an 
object that identifies the storage location where the
+ template can be loaded from. See the return value for more information.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>name</code> - The name (template root directory relative path) of 
the template, already localized and normalized by
+            the <a href="../../freemarker/cache/TemplateCache.html" 
title="class in freemarker.cache"><code>cache</code></a>. It is completely up 
to the loader implementation to
+            interpret the name, however it should expect to receive 
hierarchical paths where path components are
+            separated by a slash (not backslash). Backslashes (or any other OS 
specific separator character) are
+            not considered as separators by FreeMarker, and thus they will not 
be replaced with slash before
+            passing to this method, so it's up to the template loader to 
handle them (say, by throwing an
+            exception that tells the user that the path (s)he has entered is 
invalid, as (s)he must use slash --
+            typical mistake of Windows users). The passed names are always 
considered relative to some
+            loader-defined root location (often referred as the "template root 
directory"), and will never start
+            with a slash, nor will they contain a path component consisting of 
either a single or a double dot --
+            these are all resolved by the template cache before passing the 
name to the loader. As a side effect,
+            paths that trivially reach outside template root directory, such 
as <tt>../my.ftl</tt>, will be
+            rejected by the template cache, so they never reach the template 
loader. Note again, that if the path
+            uses backslash as path separator instead of slash as (the template 
loader should not accept that), the
+            normalization will not properly happen, as FreeMarker (the cache) 
recognizes only the slashes as
+            separators.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>An object representing the template source, which can be supplied in 
subsequent calls to
+         <a 
href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-"><code>getLastModified(Object)</code></a>
 and <a 
href="../../freemarker/cache/TemplateLoader.html#getReader-java.lang.Object-java.lang.String-"><code>getReader(Object,
 String)</code></a>, when those are called on the
+         same <a href="../../freemarker/cache/TemplateLoader.html" 
title="interface in freemarker.cache"><code>TemplateLoader</code></a>. 
<code>null</code> must be returned if the source for the template doesn't exist;
+         don't throw exception then! The exact type of this object is up to 
the <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a>
+         implementation. As this object is possibly used as hash key in 
caches, and is surly compared with another
+         template source for equality, <b>it must have a proper 
<code>Object.equals(Object)</code> and
+         <code>Object.hashCode()</code>) implementation</b>. Especially, 
template sources that refer to the same
+         physical source must be equivalent, otherwise template caching can 
become inefficient. This is only
+         expected from <code>Object.equals(Object)</code> when the compared 
template sources came from the same
+         <a href="../../freemarker/cache/TemplateLoader.html" title="interface 
in freemarker.cache"><code>TemplateLoader</code></a> instance. Also, it must 
not influence the equality if the source is open or
+         closed (<a 
href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>closeTemplateSource(Object)</code></a>).</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code> - When an error occurs that makes it 
impossible to find out if the template exists, or to access the
+             existing template. Don't throw exception if the template doesn't 
exist, instead return with
+             <code>null</code> then!</dd>
+</dl>
+</li>
+</ul>
+<a name="getLastModified-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getLastModified</h4>
+<pre>long&nbsp;getLastModified(java.lang.Object&nbsp;templateSource)</pre>
+<div class="block">Returns the time of last modification of the specified 
template source. This method is called after
+ <code>findTemplateSource()</code>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>templateSource</code> - an object representing a template source, 
obtained through a prior call to
+            <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>findTemplateSource(String)</code></a>.
 This must be an object on which
+            <a 
href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>closeTemplateSource(Object)</code></a>
 wasn't applied yet.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the time of last modification of the specified template source, or -1 if 
the time is not known.</dd>
+</dl>
+</li>
+</ul>
+<a name="getReader-java.lang.Object-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getReader</h4>
+<pre>java.io.Reader&nbsp;getReader(java.lang.Object&nbsp;templateSource,
+                         java.lang.String&nbsp;encoding)
+                  throws java.io.IOException</pre>
+<div class="block">Returns the character stream of a template represented by 
the specified template source. This method is possibly
+ called for multiple times for the same template source object, and it must 
always return a <code>Reader</code> that
+ reads the template from its beginning. Before this method is called for the 
second time (or later), its caller
+ must close the previously returned <code>Reader</code>, and it must not use 
it anymore. That is, this method is not
+ required to support multiple concurrent readers for the same source 
<code>templateSource</code> object.
+ 
+ <p>
+ Typically, this method is called if the template is missing from the cache, 
or if after calling
+ <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>findTemplateSource(String)</code></a>
 and <a 
href="../../freemarker/cache/TemplateLoader.html#getLastModified-java.lang.Object-"><code>getLastModified(Object)</code></a>
 it was determined that the cached copy
+ of the template is stale. Then, if it turns out that the 
<code>encoding</code> parameter used doesn't match the actual
+ template content (based on the <code>#ftl encoding=...</code> header), this 
method will be called for a second time
+ with the correct <code>encoding</code> parameter value.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>templateSource</code> - an object representing a template source, 
obtained through a prior call to
+            <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>findTemplateSource(String)</code></a>.
 This must be an object on which
+            <a 
href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>closeTemplateSource(Object)</code></a>
 wasn't applied yet.</dd>
+<dd><code>encoding</code> - the character encoding used to translate source 
bytes to characters. Some loaders may not have access
+            to the byte representation of the template stream, and instead 
directly obtain a character stream.
+            These loaders should ignore the encoding parameter.</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A <code>Reader</code> representing the template character stream. It's the 
responsibility of the caller (which
+         is <a href="../../freemarker/cache/TemplateCache.html" title="class 
in freemarker.cache"><code>TemplateCache</code></a> usually) to 
<code>close()</code> it. The <code>Reader</code> is not required to work after
+         the <code>templateSource</code> was closed (<a 
href="../../freemarker/cache/TemplateLoader.html#closeTemplateSource-java.lang.Object-"><code>closeTemplateSource(Object)</code></a>).</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code> - if an I/O error occurs while accessing 
the stream.</dd>
+</dl>
+</li>
+</ul>
+<a name="closeTemplateSource-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>closeTemplateSource</h4>
+<pre>void&nbsp;closeTemplateSource(java.lang.Object&nbsp;templateSource)
+                  throws java.io.IOException</pre>
+<div class="block">Closes the template source, releasing any resources held 
that are only required for reading the template and/or
+ its metadata. This is the last method that is called by the <a 
href="../../freemarker/cache/TemplateCache.html" title="class in 
freemarker.cache"><code>TemplateCache</code></a> for a template source, except
+ that <code>Object.equals(Object)</code> is might called later too. <a 
href="../../freemarker/cache/TemplateCache.html" title="class in 
freemarker.cache"><code>TemplateCache</code></a> ensures that this method will
+ be called on every object that is returned from <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>findTemplateSource(String)</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>templateSource</code> - the template source that should be 
closed.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLoader.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a 
href="../../freemarker/cache/TemplateConfigurationFactoryException.html" 
title="class in freemarker.cache"><span 
class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupContext.html" title="class 
in freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLoader.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLoader.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/cache/TemplateLookupContext.html
----------------------------------------------------------------------
diff --git a/builds/fm2.3.28/api/freemarker/cache/TemplateLookupContext.html 
b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupContext.html
new file mode 100644
index 0000000..5dc5e35
--- /dev/null
+++ b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupContext.html
@@ -0,0 +1,367 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:56 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TemplateLookupContext (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TemplateLookupContext (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":6,"i5":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupContext.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupContext.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupContext.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.cache</div>
+<h2 title="Class TemplateLookupContext" class="title">Class 
TemplateLookupContext</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>freemarker.cache.TemplateLookupContext</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public abstract class <span 
class="typeNameLabel">TemplateLookupContext</span>
+extends java.lang.Object</pre>
+<div class="block">Used as the parameter of <a 
href="../../freemarker/cache/TemplateLookupStrategy.html#lookup-freemarker.cache.TemplateLookupContext-"><code>TemplateLookupStrategy.lookup(TemplateLookupContext)</code></a>.
+ You can't create instances of this, only receive them from FreeMarker.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a 
href="javascript:show(4);">Abstract Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a 
href="javascript:show(8);">Concrete Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#createNegativeLookupResult--">createNegativeLookupResult</a></span>()</code>
+<div class="block">Creates a not-found lookup result that then can be used as 
the return value of
+ <a 
href="../../freemarker/cache/TemplateLookupStrategy.html#lookup-freemarker.cache.TemplateLookupContext-"><code>TemplateLookupStrategy.lookup(TemplateLookupContext)</code></a>.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>java.lang.Object</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#getCustomLookupCondition--">getCustomLookupCondition</a></span>()</code>
+<div class="block">Returns the value of the <code>customLookupCondition</code> 
parameter of
+ <a 
href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.Object-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String,
 Locale, Object, String, boolean, boolean)</code></a>; see requirements there, 
such
+ as having a proper <code>Object.equals(Object)</code> and 
<code>Object.hashCode()</code> method.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>java.util.Locale</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#getTemplateLocale--">getTemplateLocale</a></span>()</code>
+<div class="block"><code>null</code> if localized lookup is disabled (see <a 
href="../../freemarker/template/Configuration.html#getLocalizedLookup--"><code>Configuration.getLocalizedLookup()</code></a>),
 otherwise the
+ locale requested.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#getTemplateName--">getTemplateName</a></span>()</code>
+<div class="block">The normalized name (path) of the template (relatively to 
the <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a>).</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>abstract <a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-">lookupWithAcquisitionStrategy</a></span>(java.lang.String&nbsp;templateName)</code>
+<div class="block">Finds the template source based on its <em>normalized</em> 
name; handles <code>*</code> steps (so called acquisition),
+ otherwise it just calls <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>abstract <a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithLocalizedThenAcquisitionStrategy-java.lang.String-java.util.Locale-">lookupWithLocalizedThenAcquisitionStrategy</a></span>(java.lang.String&nbsp;templateName,
+                                          
java.util.Locale&nbsp;templateLocale)</code>
+<div class="block">Finds the template source based on its <em>normalized</em> 
name; tries localized variations going from most
+ specific to less specific, and for each variation it delegates to <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>lookupWithAcquisitionStrategy(String)</code></a>.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, 
toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="lookupWithAcquisitionStrategy-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>lookupWithAcquisitionStrategy</h4>
+<pre>public abstract&nbsp;<a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a>&nbsp;lookupWithAcquisitionStrategy(java.lang.String&nbsp;templateName)
+                                                            throws 
java.io.IOException</pre>
+<div class="block">Finds the template source based on its <em>normalized</em> 
name; handles <code>*</code> steps (so called acquisition),
+ otherwise it just calls <a 
href="../../freemarker/cache/TemplateLoader.html#findTemplateSource-java.lang.String-"><code>TemplateLoader.findTemplateSource(String)</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>templateName</code> - Must be a normalized name, like 
<code>"foo/bar/baaz.ftl"</code>. A name is not normalized when, among
+            others, it starts with <code>/</code>, or contains <code>.</code> 
or <code>..</code> path steps, or it uses
+            backslash (<code>\</code>) instead of <code>/</code>. A normalized 
name might contains "*" path steps
+            (acquisition).</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The result of the lookup. Not <code>null</code>; check <a 
href="../../freemarker/cache/TemplateLookupResult.html#isPositive--"><code>TemplateLookupResult.isPositive()</code></a>
 to see if the
+         lookup has found anything.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a 
name="lookupWithLocalizedThenAcquisitionStrategy-java.lang.String-java.util.Locale-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>lookupWithLocalizedThenAcquisitionStrategy</h4>
+<pre>public abstract&nbsp;<a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a>&nbsp;lookupWithLocalizedThenAcquisitionStrategy(java.lang.String&nbsp;templateName,
+                                                                               
 java.util.Locale&nbsp;templateLocale)
+                                                                         
throws java.io.IOException</pre>
+<div class="block">Finds the template source based on its <em>normalized</em> 
name; tries localized variations going from most
+ specific to less specific, and for each variation it delegates to <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>lookupWithAcquisitionStrategy(String)</code></a>.
+ If <code>templateLocale</code> is <code>null</code> (typically, because <a 
href="../../freemarker/template/Configuration.html#getLocalizedLookup--"><code>Configuration.getLocalizedLookup()</code></a>
 is
+ <code>false</code>)), then it's the same as calling <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>lookupWithAcquisitionStrategy(String)</code></a>
 directly. This is
+ the default strategy of FreeMarker (at least in 2.3.x), so for more 
information, see
+ <a 
href="../../freemarker/cache/TemplateLookupStrategy.html#DEFAULT_2_3_0"><code>TemplateLookupStrategy.DEFAULT_2_3_0</code></a>.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getTemplateName--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTemplateName</h4>
+<pre>public&nbsp;java.lang.String&nbsp;getTemplateName()</pre>
+<div class="block">The normalized name (path) of the template (relatively to 
the <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a>). Not <code>null</code>.</div>
+</li>
+</ul>
+<a name="getTemplateLocale--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTemplateLocale</h4>
+<pre>public&nbsp;java.util.Locale&nbsp;getTemplateLocale()</pre>
+<div class="block"><code>null</code> if localized lookup is disabled (see <a 
href="../../freemarker/template/Configuration.html#getLocalizedLookup--"><code>Configuration.getLocalizedLookup()</code></a>),
 otherwise the
+ locale requested.</div>
+</li>
+</ul>
+<a name="getCustomLookupCondition--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getCustomLookupCondition</h4>
+<pre>public&nbsp;java.lang.Object&nbsp;getCustomLookupCondition()</pre>
+<div class="block">Returns the value of the <code>customLookupCondition</code> 
parameter of
+ <a 
href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-java.util.Locale-java.lang.Object-java.lang.String-boolean-boolean-"><code>Configuration.getTemplate(String,
 Locale, Object, String, boolean, boolean)</code></a>; see requirements there, 
such
+ as having a proper <code>Object.equals(Object)</code> and 
<code>Object.hashCode()</code> method. The interpretation of this
+ value is up to the custom <a 
href="../../freemarker/cache/TemplateLookupStrategy.html" title="class in 
freemarker.cache"><code>TemplateLookupStrategy</code></a>. Usually, it's used 
similarly to as the default lookup
+ strategy uses <a 
href="../../freemarker/cache/TemplateLookupContext.html#getTemplateLocale--"><code>getTemplateLocale()</code></a>,
 that is, to look for a template variation that satisfies the
+ condition, and then maybe fall back to more generic template if that's 
missing.</div>
+</li>
+</ul>
+<a name="createNegativeLookupResult--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>createNegativeLookupResult</h4>
+<pre>public&nbsp;<a href="../../freemarker/cache/TemplateLookupResult.html" 
title="class in 
freemarker.cache">TemplateLookupResult</a>&nbsp;createNegativeLookupResult()</pre>
+<div class="block">Creates a not-found lookup result that then can be used as 
the return value of
+ <a 
href="../../freemarker/cache/TemplateLookupStrategy.html#lookup-freemarker.cache.TemplateLookupContext-"><code>TemplateLookupStrategy.lookup(TemplateLookupContext)</code></a>.
 (In the current implementation it just always
+ returns the same static singleton, but that might need to change in the 
future.)</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupContext.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupContext.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupContext.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/cache/TemplateLookupResult.html
----------------------------------------------------------------------
diff --git a/builds/fm2.3.28/api/freemarker/cache/TemplateLookupResult.html 
b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupResult.html
new file mode 100644
index 0000000..cb09ed8
--- /dev/null
+++ b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupResult.html
@@ -0,0 +1,266 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:56 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TemplateLookupResult (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TemplateLookupResult (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupResult.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLookupContext.html" title="class 
in freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupStrategy.html" title="class 
in freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupResult.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupResult.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.cache</div>
+<h2 title="Class TemplateLookupResult" class="title">Class 
TemplateLookupResult</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>freemarker.cache.TemplateLookupResult</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public abstract class <span 
class="typeNameLabel">TemplateLookupResult</span>
+extends java.lang.Object</pre>
+<div class="block">The return value of <a 
href="../../freemarker/cache/TemplateLookupStrategy.html#lookup-freemarker.cache.TemplateLookupContext-"><code>TemplateLookupStrategy.lookup(TemplateLookupContext)</code></a>
 and similar lookup methods. You
+ usually get one from <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>TemplateLookupContext.lookupWithAcquisitionStrategy(String)</code></a>
 or
+ <a 
href="../../freemarker/cache/TemplateLookupContext.html#createNegativeLookupResult--"><code>TemplateLookupContext.createNegativeLookupResult()</code></a>;
 you can't create instances of this directly.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a 
href="javascript:show(4);">Abstract Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>abstract java.lang.String</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupResult.html#getTemplateSourceName--">getTemplateSourceName</a></span>()</code>
+<div class="block">The source name of the template found (see <a 
href="../../freemarker/template/Template.html#getSourceName--"><code>Template.getSourceName()</code></a>),
 or <code>null</code> if
+ <a 
href="../../freemarker/cache/TemplateLookupResult.html#isPositive--"><code>isPositive()</code></a>
 is <code>false</code>.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>abstract boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupResult.html#isPositive--">isPositive</a></span>()</code>
+<div class="block">Tells if the lookup has found a matching template.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, 
toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getTemplateSourceName--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getTemplateSourceName</h4>
+<pre>public abstract&nbsp;java.lang.String&nbsp;getTemplateSourceName()</pre>
+<div class="block">The source name of the template found (see <a 
href="../../freemarker/template/Template.html#getSourceName--"><code>Template.getSourceName()</code></a>),
 or <code>null</code> if
+ <a 
href="../../freemarker/cache/TemplateLookupResult.html#isPositive--"><code>isPositive()</code></a>
 is <code>false</code>.</div>
+</li>
+</ul>
+<a name="isPositive--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>isPositive</h4>
+<pre>public abstract&nbsp;boolean&nbsp;isPositive()</pre>
+<div class="block">Tells if the lookup has found a matching template.</div>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupResult.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLookupContext.html" title="class 
in freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateLookupStrategy.html" title="class 
in freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupResult.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupResult.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/28940aad/builds/fm2.3.28/api/freemarker/cache/TemplateLookupStrategy.html
----------------------------------------------------------------------
diff --git a/builds/fm2.3.28/api/freemarker/cache/TemplateLookupStrategy.html 
b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupStrategy.html
new file mode 100644
index 0000000..91b53bf
--- /dev/null
+++ b/builds/fm2.3.28/api/freemarker/cache/TemplateLookupStrategy.html
@@ -0,0 +1,381 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (1.8.0_144) on Sat Mar 10 20:54:56 CET 2018 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TemplateLookupStrategy (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)</title>
+<meta name="date" content="2018-03-10">
+<link rel="stylesheet" type="text/css" href="../../stylesheet.css" 
title="Style">
+<script type="text/javascript" src="../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TemplateLookupStrategy (FreeMarker 
2.3.28-nightly_20180310T195428Z-incubating API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupStrategy.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateNameFormat.html" title="class in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupStrategy.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupStrategy.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">freemarker.cache</div>
+<h2 title="Class TemplateLookupStrategy" class="title">Class 
TemplateLookupStrategy</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li>java.lang.Object</li>
+<li>
+<ul class="inheritance">
+<li>freemarker.cache.TemplateLookupStrategy</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public abstract class <span 
class="typeNameLabel">TemplateLookupStrategy</span>
+extends java.lang.Object</pre>
+<div class="block">Finds the <a 
href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a>-level (storage-level) 
template source for the template name with which the template
+ was requested (as in <a 
href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>).
 This usually means trying various
+ <a href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a>-level template names (so 
called source names; see also <a 
href="../../freemarker/template/Template.html#getSourceName--"><code>Template.getSourceName()</code></a>)
 that
+ were deduced from the requested name. Trying a name usually means calling
+ <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>TemplateLookupContext.lookupWithAcquisitionStrategy(String)</code></a>
 with it and checking the value of
+ <a 
href="../../freemarker/cache/TemplateLookupResult.html#isPositive--"><code>TemplateLookupResult.isPositive()</code></a>.
+ 
+ <p>
+ Before you write your own lookup strategy, know that:
+ <ul>
+ <li>A template lookup strategy meant to operate solely with template names, 
not with <a href="../../freemarker/cache/TemplateLoader.html" title="interface 
in freemarker.cache"><code>TemplateLoader</code></a>-s
+ directly. Basically, it's a mapping between the template names that templates 
and API-s like
+ <a 
href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>
 see, and those that the underlying <a 
href="../../freemarker/cache/TemplateLoader.html" title="interface in 
freemarker.cache"><code>TemplateLoader</code></a> sees.
+ <li>A template lookup strategy doesn't influence the template's name (<a 
href="../../freemarker/template/Template.html#getName--"><code>Template.getName()</code></a>),
 which is the
+ normalized form of the template name as it was requested (with <a 
href="../../freemarker/template/Configuration.html#getTemplate-java.lang.String-"><code>Configuration.getTemplate(String)</code></a>,
 etc.). It
+ only influences the so called source name of the template (<a 
href="../../freemarker/template/Template.html#getSourceName--"><code>Template.getSourceName()</code></a>).
 The template's name is
+ used as the basis for resolving relative inclusions/imports in the template. 
The source name is pretty much only used
+ in error messages as error location, and of course, to actually load the 
template "file".
+ <li>Understand the impact of the last point if your template lookup strategy 
fiddles not only with the file name part
+ of the template name, but also with the directory part. For example, one may 
want to map "foo.ftl" to "en/foo.ftl",
+ "fr/foo.ftl", etc. That's legal, but the result is kind of like if you had 
several root directories ("en/", "fr/",
+ etc.) that are layered over each other to form a single merged directory. 
(This is what's desirable in typical
+ applications, yet it can be confusing.)
+ </ul></div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a 
href="../../freemarker/template/Configuration.html#setTemplateLookupStrategy-freemarker.cache.TemplateLookupStrategy-"><code>Configuration.setTemplateLookupStrategy(TemplateLookupStrategy)</code></a></dd>
+</dl>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a 
href="../../freemarker/cache/TemplateLookupStrategy.html" title="class in 
freemarker.cache">TemplateLookupStrategy</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupStrategy.html#DEFAULT_2_3_0">DEFAULT_2_3_0</a></span></code>
+<div class="block">
+ The default lookup strategy of FreeMarker.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupStrategy.html#TemplateLookupStrategy--">TemplateLookupStrategy</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" 
summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span 
class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a 
href="javascript:show(2);">Instance Methods</a></span><span 
class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a 
href="javascript:show(4);">Abstract Methods</a></span><span 
class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>abstract <a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a 
href="../../freemarker/cache/TemplateLookupStrategy.html#lookup-freemarker.cache.TemplateLookupContext-">lookup</a></span>(<a
 href="../../freemarker/cache/TemplateLookupContext.html" title="class in 
freemarker.cache">TemplateLookupContext</a>&nbsp;ctx)</code>
+<div class="block">Finds the template source that matches the template name, 
locale (if not <code>null</code>) and other parameters
+ specified in the <a href="../../freemarker/cache/TemplateLookupContext.html" 
title="class in freemarker.cache"><code>TemplateLookupContext</code></a>.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
+<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, 
toString, wait, wait, wait</code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="DEFAULT_2_3_0">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_2_3_0</h4>
+<pre>public static final&nbsp;<a 
href="../../freemarker/cache/TemplateLookupStrategy.html" title="class in 
freemarker.cache">TemplateLookupStrategy</a> DEFAULT_2_3_0</pre>
+<div class="block"><p>
+ The default lookup strategy of FreeMarker.
+ 
+ <p>
+ Through an example: Assuming localized lookup is enabled and that a template 
is requested for the name
+ <code>example.ftl</code> and <code>Locale("es", "ES", 
"Traditional_WIN")</code>, it will try the following template names,
+ in this order: <code>"foo_en_AU_Traditional_WIN.ftl"</code>, 
<code>"foo_en_AU_Traditional.ftl"</code>,
+ <code>"foo_en_AU.ftl"</code>, <code>"foo_en.ftl"</code>, 
<code>"foo.ftl"</code>. It stops at the first variation where it finds
+ a template. (If the template name contains "*" steps, finding the template 
for the attempted localized variation
+ happens with the template acquisition mechanism.) If localized lookup is 
disabled, it won't try to add any locale
+ strings, so it just looks for <code>"foo.ftl"</code>.
+ 
+ <p>
+ The generation of the localized name variation with the default lookup 
strategy, happens like this: It removes
+ the file extension (the part starting with the <em>last</em> dot), then 
appends <code>Locale.toString()</code> after
+ it, and puts back the extension. Then it starts to remove the parts from the 
end of the locale, considering
+ <code>"_"</code> as the separator between the parts. It won't remove parts 
that are not part of the locale string
+ (like if the requested template name is <code>foo_bar.ftl</code>, it won't 
remove the <code>"_bar"</code>).</div>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TemplateLookupStrategy--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TemplateLookupStrategy</h4>
+<pre>public&nbsp;TemplateLookupStrategy()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="lookup-freemarker.cache.TemplateLookupContext-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>lookup</h4>
+<pre>public abstract&nbsp;<a 
href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache">TemplateLookupResult</a>&nbsp;lookup(<a 
href="../../freemarker/cache/TemplateLookupContext.html" title="class in 
freemarker.cache">TemplateLookupContext</a>&nbsp;ctx)
+                                     throws java.io.IOException</pre>
+<div class="block">Finds the template source that matches the template name, 
locale (if not <code>null</code>) and other parameters
+ specified in the <a href="../../freemarker/cache/TemplateLookupContext.html" 
title="class in freemarker.cache"><code>TemplateLookupContext</code></a>. See 
also the class-level <a 
href="../../freemarker/cache/TemplateLookupStrategy.html" title="class in 
freemarker.cache"><code>TemplateLookupStrategy</code></a>
+ documentation to understand lookup strategies more.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>ctx</code> - Contains the parameters for which the matching template 
need to be found, and operations that
+            are needed to implement the strategy. Some of the important input 
parameters are:
+            <a 
href="../../freemarker/cache/TemplateLookupContext.html#getTemplateName--"><code>TemplateLookupContext.getTemplateName()</code></a>,
 <a 
href="../../freemarker/cache/TemplateLookupContext.html#getTemplateLocale--"><code>TemplateLookupContext.getTemplateLocale()</code></a>.
+            The most important operations are <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>TemplateLookupContext.lookupWithAcquisitionStrategy(String)</code></a>
+            and <a 
href="../../freemarker/cache/TemplateLookupContext.html#createNegativeLookupResult--"><code>TemplateLookupContext.createNegativeLookupResult()</code></a>.
 (Note that you deliberately can't
+            use <a href="../../freemarker/cache/TemplateLoader.html" 
title="interface in freemarker.cache"><code>TemplateLoader</code></a>-s 
directly to implement lookup.)</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Usually the return value of <a 
href="../../freemarker/cache/TemplateLookupContext.html#lookupWithAcquisitionStrategy-java.lang.String-"><code>TemplateLookupContext.lookupWithAcquisitionStrategy(String)</code></a>,
 or
+         <code>TemplateLookupContext#createNegativeLookupResult()</code> if no 
matching template exists. Can't be
+         <code>null</code>.</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation 
links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TemplateLookupStrategy.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../index-all.html">Index</a></li>
+<li><a href="../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../freemarker/cache/TemplateLookupResult.html" title="class in 
freemarker.cache"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../freemarker/cache/TemplateNameFormat.html" title="class in 
freemarker.cache"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../index.html?freemarker/cache/TemplateLookupStrategy.html" 
target="_top">Frames</a></li>
+<li><a href="TemplateLookupStrategy.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+</body>
+</html>

Reply via email to