freemarker-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ddek...@apache.org
Subject [17/51] [partial] incubator-freemarker-site git commit: Uploaded freemarker.org content from the previous (non-ASF) server (except Ivy repo entries with legal issues)
Date Tue, 03 Nov 2015 19:29:18 GMT
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/07ff2090/docs/api/freemarker/ext/beans/BeansWrapper.html
----------------------------------------------------------------------
diff --git a/docs/api/freemarker/ext/beans/BeansWrapper.html b/docs/api/freemarker/ext/beans/BeansWrapper.html
new file mode 100644
index 0000000..e0725a4
--- /dev/null
+++ b/docs/api/freemarker/ext/beans/BeansWrapper.html
@@ -0,0 +1,1705 @@
+<!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_20) on Sun Jul 05 16:46:56 CEST 2015 -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>BeansWrapper (FreeMarker 2.3.23 API)</title>
+<meta name="date" content="2015-07-05">
+<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="BeansWrapper (FreeMarker 2.3.23 API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":9,"i5":10,"i6":42,"i7":10,"i8":41,"i9":10,"i10":10,"i11":10,"i12":42,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":42,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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/BeansWrapper.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/ext/beans/BeansModelCache.html" title="class in freemarker.ext.beans"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" title="class in freemarker.ext.beans"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../index.html?freemarker/ext/beans/BeansWrapper.html" target="_top">Frames</a></li>
+<li><a href="BeansWrapper.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><a href="#nested.class.summary">Nested</a>&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.ext.beans</div>
+<h2 title="Class BeansWrapper" class="title">Class BeansWrapper</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>freemarker.ext.beans.BeansWrapper</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>, <a href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html" title="interface in freemarker.template">ObjectWrapperAndUnwrapper</a>, <a href="../../../freemarker/template/utility/ObjectWrapperWithAPISupport.html" title="interface in freemarker.template.utility">ObjectWrapperWithAPISupport</a>, <a href="../../../freemarker/template/utility/RichObjectWrapper.html" title="interface in freemarker.template.utility">RichObjectWrapper</a>, <a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility">WriteProtectable</a></dd>
+</dl>
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template">DefaultObjectWrapper</a>, <a href="../../../freemarker/ext/rhino/RhinoWrapper.html" title="class in freemarker.ext.rhino">RhinoWrapper</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <span class="typeNameLabel">BeansWrapper</span>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../freemarker/template/utility/RichObjectWrapper.html" title="interface in freemarker.template.utility">RichObjectWrapper</a>, <a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility">WriteProtectable</a></pre>
+<div class="block"><a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> that is able to expose the Java API of arbitrary Java objects. This is also the superclass of
+ <a href="../../../freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template"><code>DefaultObjectWrapper</code></a>. Note that instances of this class generally should be created with a
+ <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a>, not with its public constructors.
+ 
+ <p>
+ As of 2.3.22, using <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a> unextended is not recommended. Instead, <a href="../../../freemarker/template/DefaultObjectWrapper.html" title="class in freemarker.template"><code>DefaultObjectWrapper</code></a> with
+ its <code>incompatibleImprovements</code> property set to 2.3.22 (or higher) is the recommended <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a>.
+ 
+ <p>
+ This class is only thread-safe after you have finished calling its setter methods, and then safely published it (see
+ JSR 133 and related literature). When used as part of <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>, of course it's enough if that was safely
+ published and then left unmodified. Using <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> also guarantees thread safety.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" title="class in freemarker.ext.beans">BeansWrapper.MethodAppearanceDecision</a></span></code>
+<div class="block"><b>Experimental class; subject to change!</b>
+ Used for
+ <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html#process-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-"><code>MethodAppearanceFineTuner.process(freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput, freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision)</code></a>
+ to store the results; see there.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecisionInput.html" title="class in freemarker.ext.beans">BeansWrapper.MethodAppearanceDecisionInput</a></span></code>
+<div class="block"><b>Experimental class; subject to change!</b>
+ Used for
+ <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html#process-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-"><code>MethodAppearanceFineTuner.process(freemarker.ext.beans.BeansWrapper.MethodAppearanceDecisionInput, freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision)</code></a>
+ as input parameter; see there.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== 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 int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_ALL">EXPOSE_ALL</a></span></code>
+<div class="block">At this level of exposure, all methods and properties of the
+ wrapped objects are exposed to the template.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_NOTHING">EXPOSE_NOTHING</a></span></code>
+<div class="block">At this level of exposure, no bean properties and methods are exposed.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_PROPERTIES_ONLY">EXPOSE_PROPERTIES_ONLY</a></span></code>
+<div class="block">At this level of exposure, only property getters are exposed.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#EXPOSE_SAFE">EXPOSE_SAFE</a></span></code>
+<div class="block">At this level of exposure, all methods and properties of the wrapped
+ objects are exposed to the template except methods that are deemed
+ not safe.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.freemarker.template.ObjectWrapperAndUnwrapper">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;freemarker.template.<a href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html" title="interface in freemarker.template">ObjectWrapperAndUnwrapper</a></h3>
+<code><a href="../../../freemarker/template/ObjectWrapperAndUnwrapper.html#CANT_UNWRAP_TO_TARGET_CLASS">CANT_UNWRAP_TO_TARGET_CLASS</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.freemarker.template.ObjectWrapper">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;freemarker.template.<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></h3>
+<code><a href="../../../freemarker/template/ObjectWrapper.html#BEANS_WRAPPER">BEANS_WRAPPER</a>, <a href="../../../freemarker/template/ObjectWrapper.html#DEFAULT_WRAPPER">DEFAULT_WRAPPER</a>, <a href="../../../freemarker/template/ObjectWrapper.html#SIMPLE_WRAPPER">SIMPLE_WRAPPER</a></code></li>
+</ul>
+</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="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper--">BeansWrapper</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> or, in rare cases, <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a> instead.</span></div>
+</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-">BeansWrapper</a></span>(<a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+            boolean&nbsp;writeProtected)</code>
+<div class="block">Same as <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration, boolean, boolean)</code></a> with <code>true</code>
+ <code>finalizeConstruction</code> argument.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-">BeansWrapper</a></span>(<a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+            boolean&nbsp;writeProtected,
+            boolean&nbsp;finalizeConstruction)</code>
+<div class="block">Initializes the instance based on the the <a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans"><code>BeansWrapperConfiguration</code></a> specified.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-">BeansWrapper</a></span>(<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;incompatibleImprovements)</code>
+<div class="block">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead of the public constructors if possible.</div>
+</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#checkModifiable--">checkModifiable</a></span>()</code>
+<div class="block">If this object is already read-only according to <a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility"><code>WriteProtectable</code></a>, throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang"><code>IllegalStateException</code></a>,
+ otherwise does nothing.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#clearClassIntrospecitonCache--">clearClassIntrospecitonCache</a></span>()</code>
+<div class="block">Removes all class introspection data from the cache.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimal-java.math.BigDecimal-java.lang.Class-">coerceBigDecimal</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math">BigDecimal</a>&nbsp;bd,
+                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;formalType)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimals-java.lang.reflect.AccessibleObject-java.lang.Object:A-">coerceBigDecimals</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AccessibleObject.html?is-external=true" title="class or interface in java.lang.reflect">AccessibleObject</a>&nbsp;callable,
+                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)</code>
+<div class="block">Converts any <a href="http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math"><code>BigDecimal</code></a>s in the passed array to the type of
+ the corresponding formal argument of the method.</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#coerceBigDecimals-java.lang.Class:A-java.lang.Object:A-">coerceBigDecimals</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>[]&nbsp;formalTypes,
+                 <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)</code>
+<div class="block">Converts any <a href="http://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html?is-external=true" title="class or interface in java.math"><code>BigDecimal</code></a>s in the passed array to the type of
+ the corresponding formal argument of the method.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#finalizeConstruction-boolean-">finalizeConstruction</a></span>(boolean&nbsp;writeProtected)</code>
+<div class="block">Meant to be called after <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration, boolean, boolean)</code></a> when
+ its last argument was <code>false</code>; makes the instance read-only if necessary, then registers the model
+ factories in the class introspector.</div>
+</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#finetuneMethodAppearance-java.lang.Class-java.lang.reflect.Method-freemarker.ext.beans.BeansWrapper.MethodAppearanceDecision-">finetuneMethodAppearance</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;clazz,
+                        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;m,
+                        <a href="../../../freemarker/ext/beans/BeansWrapper.MethodAppearanceDecision.html" title="class in freemarker.ext.beans">BeansWrapper.MethodAppearanceDecision</a>&nbsp;decision)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-"><code>setMethodAppearanceFineTuner(MethodAppearanceFineTuner)</code></a>;
+     no need to extend this class anymore.
+     Soon this method will be final, so trying to override it will break your app.
+     Note that if the <code>methodAppearanceFineTuner</code> property is set to non-<code>null</code>, this method is not
+     called anymore.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getDefaultDateType--">getDefaultDateType</a></span>()</code>
+<div class="block">Returns the default date type.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>static <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans">BeansWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getDefaultInstance--">getDefaultInstance</a></span>()</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead. The instance returned here is not read-only, so it's
+     dangerous to use.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getEnumModels--">getEnumModels</a></span>()</code>
+<div class="block">Returns a hash model that represents the so-called class enum models.</div>
+</td>
+</tr>
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getExposureLevel--">getExposureLevel</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--">getIncompatibleImprovements</a></span>()</code>
+<div class="block">Returns the version given with <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>, normalized to the lowest version where a change
+ has occurred.</div>
+</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getInstance-java.lang.Object-freemarker.ext.util.ModelFactory-">getInstance</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
+           <a href="../../../freemarker/ext/util/ModelFactory.html" title="interface in freemarker.ext.util">ModelFactory</a>&nbsp;factory)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">override <a href="../../../freemarker/ext/beans/BeansWrapper.html#getModelFactory-java.lang.Class-"><code>getModelFactory(Class)</code></a> instead. Using this
+ method will now bypass wrapper caching (if it's enabled) and always 
+ result in creation of a new wrapper. This method will be removed in 2.4</span></div>
+</div>
+</td>
+</tr>
+<tr id="i13" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans">MethodAppearanceFineTuner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getMethodAppearanceFineTuner--">getMethodAppearanceFineTuner</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../freemarker/ext/util/ModelFactory.html" title="interface in freemarker.ext.util">ModelFactory</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getModelFactory-java.lang.Class-">getModelFactory</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;clazz)</code>&nbsp;</td>
+</tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getOuterIdentity--">getOuterIdentity</a></span>()</code>
+<div class="block">By default returns <tt>this</tt>.</div>
+</td>
+</tr>
+<tr id="i16" class="altColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getStaticModels--">getStaticModels</a></span>()</code>
+<div class="block">Returns a hash model that represents the so-called class static models.</div>
+</td>
+</tr>
+<tr id="i17" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#getUseCache--">getUseCache</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i18" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#isClassIntrospectionCacheRestricted--">isClassIntrospectionCacheRestricted</a></span>()</code>
+<div class="block">Tells if this instance acts like if its class introspection cache is sharable with other <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>-s.</div>
+</td>
+</tr>
+<tr id="i19" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#isExposeFields--">isExposeFields</a></span>()</code>
+<div class="block">Returns whether exposure of public instance fields of classes is 
+ enabled.</div>
+</td>
+</tr>
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#isSimpleMapWrapper--">isSimpleMapWrapper</a></span>()</code>
+<div class="block">Tells whether Maps are exposed as simple maps, without access to their
+ method.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#isStrict--">isStrict</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i22" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#isWriteProtected--">isWriteProtected</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i23" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#newInstance-java.lang.Class-java.util.List-">newInstance</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;clazz,
+           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</code>
+<div class="block">Creates a new instance of the specified class using the method call logic of this object wrapper for calling the
+ constructor.</div>
+</td>
+</tr>
+<tr id="i24" class="altColor">
+<td class="colFirst"><code>protected static <a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#normalizeIncompatibleImprovementsVersion-freemarker.template.Version-">normalizeIncompatibleImprovementsVersion</a></span>(<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;incompatibleImprovements)</code>
+<div class="block">Returns the lowest version number that is equivalent with the parameter version.</div>
+</td>
+</tr>
+<tr id="i25" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#removeFromClassIntrospectionCache-java.lang.Class-">removeFromClassIntrospectionCache</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;clazz)</code>
+<div class="block">Removes the introspection data for a class from the cache.</div>
+</td>
+</tr>
+<tr id="i26" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setDefaultDateType-int-">setDefaultDateType</a></span>(int&nbsp;defaultDateType)</code>
+<div class="block">Sets the default date type to use for date models that result from
+ a plain <tt>java.util.Date</tt> instead of <tt>java.sql.Date</tt> or
+ <tt>java.sql.Time</tt> or <tt>java.sql.Timestamp</tt>.</div>
+</td>
+</tr>
+<tr id="i27" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setExposeFields-boolean-">setExposeFields</a></span>(boolean&nbsp;exposeFields)</code>
+<div class="block">Controls whether public instance fields of classes are exposed to 
+ templates.</div>
+</td>
+</tr>
+<tr id="i28" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setExposureLevel-int-">setExposureLevel</a></span>(int&nbsp;exposureLevel)</code>
+<div class="block">Sets the method exposure level.</div>
+</td>
+</tr>
+<tr id="i29" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-">setMethodAppearanceFineTuner</a></span>(<a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;methodAppearanceFineTuner)</code>
+<div class="block">Used to tweak certain aspects of how methods appear in the data-model;
+ see <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans"><code>MethodAppearanceFineTuner</code></a> for more.</div>
+</td>
+</tr>
+<tr id="i30" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodsShadowItems-boolean-">setMethodsShadowItems</a></span>(boolean&nbsp;methodsShadowItems)</code>
+<div class="block">Sets whether methods shadow items in beans.</div>
+</td>
+</tr>
+<tr id="i31" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setNullModel-freemarker.template.TemplateModel-">setNullModel</a></span>(<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;nullModel)</code>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
+<div class="block"><span class="deprecationComment">Changing the <code>null</code> model can cause a lot of confusion; don't do it.</span></div>
+</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setOuterIdentity-freemarker.template.ObjectWrapper-">setOuterIdentity</a></span>(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;outerIdentity)</code>
+<div class="block">When wrapping an object, the BeansWrapper commonly needs to wrap
+ "sub-objects", for example each element in a wrapped collection.</div>
+</td>
+</tr>
+<tr id="i33" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setSimpleMapWrapper-boolean-">setSimpleMapWrapper</a></span>(boolean&nbsp;simpleMapWrapper)</code>
+<div class="block">When set to <code>true</code>, the keys in <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>-s won't mix with the method names when looking at them
+ from templates.</div>
+</td>
+</tr>
+<tr id="i34" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setStrict-boolean-">setStrict</a></span>(boolean&nbsp;strict)</code>
+<div class="block">Specifies if an attempt to read a bean property that doesn't exist in the
+ wrapped object should throw an <a href="../../../freemarker/ext/beans/InvalidPropertyException.html" title="class in freemarker.ext.beans"><code>InvalidPropertyException</code></a>.</div>
+</td>
+</tr>
+<tr id="i35" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#setUseCache-boolean-">setUseCache</a></span>(boolean&nbsp;useCache)</code>
+<div class="block">Sets whether this wrapper caches the <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s created for the Java objects that has wrapped with
+ this object wrapper.</div>
+</td>
+</tr>
+<tr id="i36" class="altColor">
+<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#toPropertiesString--">toPropertiesString</a></span>()</code>
+<div class="block">Returns the name-value pairs that describe the configuration of this <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>; called from
+ <a href="../../../freemarker/ext/beans/BeansWrapper.html#toString--"><code>toString()</code></a>.</div>
+</td>
+</tr>
+<tr id="i37" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#toString--">toString</a></span>()</code>
+<div class="block">Returns the exact class name and the identity hash, also the values of the most often used <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>
+ configuration properties, also if which (if any) shared class introspection cache it uses.</div>
+</td>
+</tr>
+<tr id="i38" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#tryUnwrapTo-freemarker.template.TemplateModel-java.lang.Class-">tryUnwrapTo</a></span>(<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;model,
+           <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;targetClass)</code>
+<div class="block">Attempts to unwrap a <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a> to a plain Java object that's the instance of the given class (or is
+ <code>null</code>).</div>
+</td>
+</tr>
+<tr id="i39" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#unwrap-freemarker.template.TemplateModel-">unwrap</a></span>(<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;model)</code>
+<div class="block">Attempts to unwrap a model into underlying object.</div>
+</td>
+</tr>
+<tr id="i40" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#unwrap-freemarker.template.TemplateModel-java.lang.Class-">unwrap</a></span>(<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;model,
+      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;targetClass)</code>
+<div class="block">Attempts to unwrap a model into an object of the desired class.</div>
+</td>
+</tr>
+<tr id="i41" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-">wrap</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)</code>
+<div class="block">Wraps the object with a template model that is most specific for the object's
+ class.</div>
+</td>
+</tr>
+<tr id="i42" class="altColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/TemplateMethodModelEx.html" title="interface in freemarker.template">TemplateMethodModelEx</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-java.lang.reflect.Method-">wrap</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
+    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;method)</code>
+<div class="block">Wraps a Java method so that it can be called from templates, without wrapping its parent ("this") object.</div>
+</td>
+</tr>
+<tr id="i43" class="rowColor">
+<td class="colFirst"><code><a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template">TemplateHashModel</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#wrapAsAPI-java.lang.Object-">wrapAsAPI</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;obj)</code>
+<div class="block">Wraps an object to a <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a> that exposes the object's "native" (usually, Java) API.</div>
+</td>
+</tr>
+<tr id="i44" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/ext/beans/BeansWrapper.html#writeProtect--">writeProtect</a></span>()</code>
+<div class="block">Makes the configuration properties (settings) of this <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a> object read-only.</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.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></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="EXPOSE_ALL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_ALL</h4>
+<pre>public static final&nbsp;int EXPOSE_ALL</pre>
+<div class="block">At this level of exposure, all methods and properties of the
+ wrapped objects are exposed to the template.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_ALL">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_SAFE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_SAFE</h4>
+<pre>public static final&nbsp;int EXPOSE_SAFE</pre>
+<div class="block">At this level of exposure, all methods and properties of the wrapped
+ objects are exposed to the template except methods that are deemed
+ not safe. The not safe methods are java.lang.Object methods wait() and
+ notify(), java.lang.Class methods getClassLoader() and newInstance(),
+ java.lang.reflect.Method and java.lang.reflect.Constructor invoke() and
+ newInstance() methods, all java.lang.reflect.Field set methods, all 
+ java.lang.Thread and java.lang.ThreadGroup methods that can change its 
+ state, as well as the usual suspects in java.lang.System and
+ java.lang.Runtime.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_SAFE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_PROPERTIES_ONLY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>EXPOSE_PROPERTIES_ONLY</h4>
+<pre>public static final&nbsp;int EXPOSE_PROPERTIES_ONLY</pre>
+<div class="block">At this level of exposure, only property getters are exposed.
+ Additionally, property getters that map to unsafe methods are not
+ exposed (i.e. Class.classLoader and Thread.contextClassLoader).</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_PROPERTIES_ONLY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="EXPOSE_NOTHING">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>EXPOSE_NOTHING</h4>
+<pre>public static final&nbsp;int EXPOSE_NOTHING</pre>
+<div class="block">At this level of exposure, no bean properties and methods are exposed.
+ Only map items, resource bundle items, and objects retrieved through
+ the generic get method (on objects of classes that have a generic get
+ method) can be retrieved through the hash interface. You might want to 
+ call <a href="../../../freemarker/ext/beans/BeansWrapper.html#setMethodsShadowItems-boolean-"><code>setMethodsShadowItems(boolean)</code></a> with <tt>false</tt> value to
+ speed up map item retrieval.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../constant-values.html#freemarker.ext.beans.BeansWrapper.EXPOSE_NOTHING">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="BeansWrapper--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>public&nbsp;BeansWrapper()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> or, in rare cases, <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a> instead.</span></div>
+<div class="block">Creates a new instance with the incompatible-improvements-version specified in
+ <a href="../../../freemarker/template/Configuration.html#DEFAULT_INCOMPATIBLE_IMPROVEMENTS"><code>Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS</code></a>.</div>
+</li>
+</ul>
+<a name="BeansWrapper-freemarker.template.Version-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>public&nbsp;BeansWrapper(<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;incompatibleImprovements)</pre>
+<div class="block">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead of the public constructors if possible.
+ The main disadvantage of using the public constructors is that the instances won't share caches. So unless having
+ a private cache is your goal, don't use them. See</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>incompatibleImprovements</code> - Sets which of the non-backward-compatible improvements should be enabled. Not <code>null</code>. This version number
+   is the same as the FreeMarker version number with which the improvements were implemented.
+    
+   <p>For new projects, it's recommended to set this to the FreeMarker version that's used during the development.
+   For released products that are still actively developed it's a low risk change to increase the 3rd
+   version number further as FreeMarker is updated, but of course you should always check the list of effects
+   below. Increasing the 2nd or 1st version number possibly mean substantial changes with higher risk of breaking
+   the application, but again, see the list of effects below.
+   
+   <p>The reason it's separate from <a href="../../../freemarker/template/Configuration.html#setIncompatibleImprovements-freemarker.template.Version-"><code>Configuration.setIncompatibleImprovements(Version)</code></a> is that
+   <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> objects are often shared among multiple <a href="../../../freemarker/template/Configuration.html" title="class in freemarker.template"><code>Configuration</code></a>-s, so the two version
+   numbers are technically independent. But it's recommended to keep those two version numbers the same.
+ 
+   <p>The changes enabled by <code>incompatibleImprovements</code> are:
+   <ul>
+     <li>
+       <p>2.3.0: No changes; this is the starting point, the version used in older projects.
+     </li>
+     <li>
+       <p>2.3.21 (or higher):
+       Several glitches were fixed in <em>overloaded</em> method selection. This usually just gets
+       rid of errors (like ambiguity exceptions and numerical precision loses due to bad overloaded method
+       choices), still, as in some cases the method chosen can be a different one now (that was the point of
+       the reworking after all), it can mean a change in the behavior of the application. The most important
+       change is that the treatment of <code>null</code> arguments were fixed, as earlier they were only seen
+       applicable to parameters of type <code>Object</code>. Now <code>null</code>-s are seen to be applicable to any
+       non-primitive parameters, and among those the one with the most specific type will be preferred (just
+       like in Java), which is hence never the one with the <code>Object</code> parameter type. For more details
+       about overloaded method selection changes see the version history in the FreeMarker Manual.
+     </li>
+   </ul>
+   
+   <p>Note that the version will be normalized to the lowest version where the same incompatible
+   <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a> improvements were already present, so <a href="../../../freemarker/ext/beans/BeansWrapper.html#getIncompatibleImprovements--"><code>getIncompatibleImprovements()</code></a> might returns
+   a lower version than what you have specified.</dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>protected&nbsp;BeansWrapper(<a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+                       boolean&nbsp;writeProtected)</pre>
+<div class="block">Same as <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration, boolean, boolean)</code></a> with <code>true</code>
+ <code>finalizeConstruction</code> argument.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>BeansWrapper</h4>
+<pre>protected&nbsp;BeansWrapper(<a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans">BeansWrapperConfiguration</a>&nbsp;bwConf,
+                       boolean&nbsp;writeProtected,
+                       boolean&nbsp;finalizeConstruction)</pre>
+<div class="block">Initializes the instance based on the the <a href="../../../freemarker/ext/beans/BeansWrapperConfiguration.html" title="class in freemarker.ext.beans"><code>BeansWrapperConfiguration</code></a> specified.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>writeProtected</code> - Makes the instance's configuration settings read-only via
+     <a href="../../../freemarker/template/utility/WriteProtectable.html#writeProtect--"><code>WriteProtectable.writeProtect()</code></a>; this way it can use the shared class introspection cache.</dd>
+<dd><code>finalizeConstruction</code> - Decides if the construction is finalized now, or the caller will do some more
+     adjustments on the instance and then call <a href="../../../freemarker/ext/beans/BeansWrapper.html#finalizeConstruction-boolean-"><code>finalizeConstruction(boolean)</code></a> itself.</dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="finalizeConstruction-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>finalizeConstruction</h4>
+<pre>protected&nbsp;void&nbsp;finalizeConstruction(boolean&nbsp;writeProtected)</pre>
+<div class="block">Meant to be called after <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.ext.beans.BeansWrapperConfiguration-boolean-boolean-"><code>BeansWrapper(BeansWrapperConfiguration, boolean, boolean)</code></a> when
+ its last argument was <code>false</code>; makes the instance read-only if necessary, then registers the model
+ factories in the class introspector. No further changes should be done after calling this, if
+ <code>writeProtected</code> was <code>true</code>.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+<a name="writeProtect--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>writeProtect</h4>
+<pre>public&nbsp;void&nbsp;writeProtect()</pre>
+<div class="block">Makes the configuration properties (settings) of this <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a> object read-only. As changing them
+ after the object has become visible to multiple threads leads to undefined behavior, it's recommended to call
+ this when you have finished configuring the object.
+ 
+ <p>Consider using <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead, which gives an instance that's already
+ write protected and also uses some shared caches/pools.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../freemarker/template/utility/WriteProtectable.html#writeProtect--">writeProtect</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility">WriteProtectable</a></code></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="isWriteProtected--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isWriteProtected</h4>
+<pre>public&nbsp;boolean&nbsp;isWriteProtected()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../freemarker/template/utility/WriteProtectable.html#isWriteProtected--">isWriteProtected</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility">WriteProtectable</a></code></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="checkModifiable--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>checkModifiable</h4>
+<pre>protected&nbsp;void&nbsp;checkModifiable()</pre>
+<div class="block">If this object is already read-only according to <a href="../../../freemarker/template/utility/WriteProtectable.html" title="interface in freemarker.template.utility"><code>WriteProtectable</code></a>, throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang"><code>IllegalStateException</code></a>,
+ otherwise does nothing.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="isStrict--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isStrict</h4>
+<pre>public&nbsp;boolean&nbsp;isStrict()</pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../freemarker/ext/beans/BeansWrapper.html#setStrict-boolean-"><code>setStrict(boolean)</code></a></dd>
+</dl>
+</li>
+</ul>
+<a name="setStrict-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setStrict</h4>
+<pre>public&nbsp;void&nbsp;setStrict(boolean&nbsp;strict)</pre>
+<div class="block">Specifies if an attempt to read a bean property that doesn't exist in the
+ wrapped object should throw an <a href="../../../freemarker/ext/beans/InvalidPropertyException.html" title="class in freemarker.ext.beans"><code>InvalidPropertyException</code></a>.
+ 
+ <p>If this property is <tt>false</tt> (the default) then an attempt to read
+ a missing bean property is the same as reading an existing bean property whose
+ value is <tt>null</tt>. The template can't tell the difference, and thus always
+ can use <tt>?default('something')</tt> and <tt>?exists</tt> and similar built-ins
+ to handle the situation.
+
+ <p>If this property is <tt>true</tt> then an attempt to read a bean propertly in
+ the template (like <tt>myBean.aProperty</tt>) that doesn't exist in the bean
+ object (as opposed to just holding <tt>null</tt> value) will cause
+ <a href="../../../freemarker/ext/beans/InvalidPropertyException.html" title="class in freemarker.ext.beans"><code>InvalidPropertyException</code></a>, which can't be suppressed in the template
+ (not even with <tt>myBean.noSuchProperty?default('something')</tt>). This way
+ <tt>?default('something')</tt> and <tt>?exists</tt> and similar built-ins can be used to
+ handle existing properties whose value is <tt>null</tt>, without the risk of
+ hiding typos in the property names. Typos will always cause error. But mind you, it
+ goes against the basic approach of FreeMarker, so use this feature only if you really
+ know what you are doing.</div>
+</li>
+</ul>
+<a name="setOuterIdentity-freemarker.template.ObjectWrapper-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setOuterIdentity</h4>
+<pre>public&nbsp;void&nbsp;setOuterIdentity(<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;outerIdentity)</pre>
+<div class="block">When wrapping an object, the BeansWrapper commonly needs to wrap
+ "sub-objects", for example each element in a wrapped collection.
+ Normally it wraps these objects using itself. However, this makes
+ it difficult to delegate to a BeansWrapper as part of a custom
+ aggregate ObjectWrapper. This method lets you set the ObjectWrapper
+ which will be used to wrap the sub-objects.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>outerIdentity</code> - the aggregate ObjectWrapper</dd>
+</dl>
+</li>
+</ul>
+<a name="getOuterIdentity--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getOuterIdentity</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a>&nbsp;getOuterIdentity()</pre>
+<div class="block">By default returns <tt>this</tt>.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../freemarker/ext/beans/BeansWrapper.html#setOuterIdentity-freemarker.template.ObjectWrapper-"><code>setOuterIdentity(ObjectWrapper)</code></a></dd>
+</dl>
+</li>
+</ul>
+<a name="setSimpleMapWrapper-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setSimpleMapWrapper</h4>
+<pre>public&nbsp;void&nbsp;setSimpleMapWrapper(boolean&nbsp;simpleMapWrapper)</pre>
+<div class="block">When set to <code>true</code>, the keys in <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>-s won't mix with the method names when looking at them
+ from templates. The default is <code>false</code> for backward-compatibility, but is not recommended.
+ 
+ <p>When this is <code>false</code>, <code>myMap.foo</code> or <code>myMap['foo']</code> either returns the method <code>foo</code>,
+ or calls <code>Map.get("foo")</code>. If both exists (the method and the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> key), one will hide the other,
+ depending on the <a href="../../../freemarker/ext/beans/BeansWrapper.html#isMethodsShadowItems--"><code>isMethodsShadowItems()</code></a>, which default to <code>true</code> (the method
+ wins). Some frameworks use this so that you can call <code>myMap.get(nonStringKey)</code> from templates [*], but it
+ comes on the cost of polluting the key-set with the method names, and risking methods accidentally hiding
+ <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> entries (or the other way around). Thus, this setup is not recommended.
+ (Technical note: <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>-s will be wrapped into <a href="../../../freemarker/ext/beans/MapModel.html" title="class in freemarker.ext.beans"><code>MapModel</code></a> in this case.)  
+
+ <p>When this is <code>true</code>, <code>myMap.foo</code> or <code>myMap['foo']</code> always calls <code>Map.get("foo")</code>.
+ The methods of the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a> object aren't visible from templates in this case. This, however, spoils the
+ <code>myMap.get(nonStringKey)</code> workaround. But now you can use <code>myMap(nonStringKey)</code> instead, that is, you
+ can use the map itself as the <code>get</code> method. 
+ (Technical note: <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util"><code>Map</code></a>-s will be wrapped into <a href="../../../freemarker/ext/beans/SimpleMapModel.html" title="class in freemarker.ext.beans"><code>SimpleMapModel</code></a> in this case.)
+ 
+ <p>*: For historical reasons, FreeMarker 2.3.X doesn't support non-string keys with the <code>[]</code> operator,
+       hence the workarounds. This will be likely fixed in FreeMarker 2.4.0. Also note that the method- and
+       the "field"-namespaces aren't separate in FreeMarker, hence <code>myMap.get</code> can return the <code>get</code>
+       method.</div>
+</li>
+</ul>
+<a name="isSimpleMapWrapper--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isSimpleMapWrapper</h4>
+<pre>public&nbsp;boolean&nbsp;isSimpleMapWrapper()</pre>
+<div class="block">Tells whether Maps are exposed as simple maps, without access to their
+ method. See <a href="../../../freemarker/ext/beans/BeansWrapper.html#setSimpleMapWrapper-boolean-"><code>setSimpleMapWrapper(boolean)</code></a> for details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if Maps are exposed as simple hashes, false if they're
+ exposed as full JavaBeans.</dd>
+</dl>
+</li>
+</ul>
+<a name="setExposureLevel-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setExposureLevel</h4>
+<pre>public&nbsp;void&nbsp;setExposureLevel(int&nbsp;exposureLevel)</pre>
+<div class="block">Sets the method exposure level. By default, set to <code>EXPOSE_SAFE</code>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>exposureLevel</code> - can be any of the <code>EXPOSE_xxx</code>
+ constants.</dd>
+</dl>
+</li>
+</ul>
+<a name="getExposureLevel--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getExposureLevel</h4>
+<pre>public&nbsp;int&nbsp;getExposureLevel()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setExposeFields-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setExposeFields</h4>
+<pre>public&nbsp;void&nbsp;setExposeFields(boolean&nbsp;exposeFields)</pre>
+<div class="block">Controls whether public instance fields of classes are exposed to 
+ templates.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>exposeFields</code> - if set to true, public instance fields of classes 
+ that do not have a property getter defined can be accessed directly by
+ their name. If there is a property getter for a property of the same 
+ name as the field (i.e. getter "getFoo()" and field "foo"), then 
+ referring to "foo" in template invokes the getter. If set to false, no
+ access to public instance fields of classes is given. Default is false.</dd>
+</dl>
+</li>
+</ul>
+<a name="isExposeFields--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isExposeFields</h4>
+<pre>public&nbsp;boolean&nbsp;isExposeFields()</pre>
+<div class="block">Returns whether exposure of public instance fields of classes is 
+ enabled. See <a href="../../../freemarker/ext/beans/BeansWrapper.html#setExposeFields-boolean-"><code>setExposeFields(boolean)</code></a> for details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if public instance fields are exposed, false otherwise.</dd>
+</dl>
+</li>
+</ul>
+<a name="getMethodAppearanceFineTuner--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMethodAppearanceFineTuner</h4>
+<pre>public&nbsp;<a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;getMethodAppearanceFineTuner()</pre>
+</li>
+</ul>
+<a name="setMethodAppearanceFineTuner-freemarker.ext.beans.MethodAppearanceFineTuner-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMethodAppearanceFineTuner</h4>
+<pre>public&nbsp;void&nbsp;setMethodAppearanceFineTuner(<a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans">MethodAppearanceFineTuner</a>&nbsp;methodAppearanceFineTuner)</pre>
+<div class="block">Used to tweak certain aspects of how methods appear in the data-model;
+ see <a href="../../../freemarker/ext/beans/MethodAppearanceFineTuner.html" title="interface in freemarker.ext.beans"><code>MethodAppearanceFineTuner</code></a> for more.</div>
+</li>
+</ul>
+<a name="isClassIntrospectionCacheRestricted--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isClassIntrospectionCacheRestricted</h4>
+<pre>public&nbsp;boolean&nbsp;isClassIntrospectionCacheRestricted()</pre>
+<div class="block">Tells if this instance acts like if its class introspection cache is sharable with other <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>-s.
+ A restricted cache denies certain too "antisocial" operations, like <a href="../../../freemarker/ext/beans/BeansWrapper.html#clearClassIntrospecitonCache--"><code>clearClassIntrospecitonCache()</code></a>.
+ The value depends on how the instance
+ was created; with a public constructor (then this is <code>false</code>), or with <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a>
+ (then it's <code>true</code>). Note that in the last case it's possible that the introspection cache
+ will not be actually shared because there's no one to share with, but this will <code>true</code> even then.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setMethodsShadowItems-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setMethodsShadowItems</h4>
+<pre>public&nbsp;void&nbsp;setMethodsShadowItems(boolean&nbsp;methodsShadowItems)</pre>
+<div class="block">Sets whether methods shadow items in beans. When true (this is the
+ default value), <code>${object.name}</code> will first try to locate
+ a bean method or property with the specified name on the object, and
+ only if it doesn't find it will it try to call
+ <code>object.get(name)</code>, the so-called "generic get method" that
+ is usually used to access items of a container (i.e. elements of a map).
+ When set to false, the lookup order is reversed and generic get method
+ is called first, and only if it returns null is method lookup attempted.</div>
+</li>
+</ul>
+<a name="setDefaultDateType-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDefaultDateType</h4>
+<pre>public&nbsp;void&nbsp;setDefaultDateType(int&nbsp;defaultDateType)</pre>
+<div class="block">Sets the default date type to use for date models that result from
+ a plain <tt>java.util.Date</tt> instead of <tt>java.sql.Date</tt> or
+ <tt>java.sql.Time</tt> or <tt>java.sql.Timestamp</tt>. Default value is 
+ <a href="../../../freemarker/template/TemplateDateModel.html#UNKNOWN"><code>TemplateDateModel.UNKNOWN</code></a>.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>defaultDateType</code> - the new default date type.</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultDateType--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultDateType</h4>
+<pre>public&nbsp;int&nbsp;getDefaultDateType()</pre>
+<div class="block">Returns the default date type. See <a href="../../../freemarker/ext/beans/BeansWrapper.html#setDefaultDateType-int-"><code>setDefaultDateType(int)</code></a> for
+ details.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the default date type</dd>
+</dl>
+</li>
+</ul>
+<a name="setUseCache-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUseCache</h4>
+<pre>public&nbsp;void&nbsp;setUseCache(boolean&nbsp;useCache)</pre>
+<div class="block">Sets whether this wrapper caches the <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>-s created for the Java objects that has wrapped with
+ this object wrapper. Default is <code>false</code>.
+ When set to <code>true</code>, calling <a href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-"><code>wrap(Object)</code></a> multiple times for
+ the same object will likely return the same model (although there is
+ no guarantee as the cache items can be cleared any time).</div>
+</li>
+</ul>
+<a name="getUseCache--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getUseCache</h4>
+<pre>public&nbsp;boolean&nbsp;getUseCache()</pre>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="setNullModel-freemarker.template.TemplateModel-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setNullModel</h4>
+<pre>public&nbsp;void&nbsp;setNullModel(<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;nullModel)</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Changing the <code>null</code> model can cause a lot of confusion; don't do it.</span></div>
+<div class="block">Sets the null model. This model is returned from the <a href="../../../freemarker/ext/beans/BeansWrapper.html#wrap-java.lang.Object-"><code>wrap(Object)</code></a> method whenever the wrapped object is
+ <code>null</code>. It defaults to <code>null</code>, which is dealt with quite strictly on engine level, however you can
+ substitute an arbitrary (perhaps more lenient) model, like an empty string. For proper working, the
+ <code>nullModel</code> should be an <a href="../../../freemarker/template/AdapterTemplateModel.html" title="interface in freemarker.template"><code>AdapterTemplateModel</code></a> that returns <code>null</code> for
+ <a href="../../../freemarker/template/AdapterTemplateModel.html#getAdaptedObject-java.lang.Class-"><code>AdapterTemplateModel.getAdaptedObject(Class)</code></a>.</div>
+</li>
+</ul>
+<a name="getIncompatibleImprovements--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getIncompatibleImprovements</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;getIncompatibleImprovements()</pre>
+<div class="block">Returns the version given with <a href="../../../freemarker/ext/beans/BeansWrapper.html#BeansWrapper-freemarker.template.Version-"><code>BeansWrapper(Version)</code></a>, normalized to the lowest version where a change
+ has occurred. Thus, this is not necessarily the same version than that was given to the constructor.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="normalizeIncompatibleImprovementsVersion-freemarker.template.Version-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>normalizeIncompatibleImprovementsVersion</h4>
+<pre>protected static&nbsp;<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;normalizeIncompatibleImprovementsVersion(<a href="../../../freemarker/template/Version.html" title="class in freemarker.template">Version</a>&nbsp;incompatibleImprovements)</pre>
+<div class="block">Returns the lowest version number that is equivalent with the parameter version.</div>
+<dl>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.21</dd>
+</dl>
+</li>
+</ul>
+<a name="getDefaultInstance--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getDefaultInstance</h4>
+<pre>public static final&nbsp;<a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans">BeansWrapper</a>&nbsp;getDefaultInstance()</pre>
+<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../freemarker/ext/beans/BeansWrapperBuilder.html" title="class in freemarker.ext.beans"><code>BeansWrapperBuilder</code></a> instead. The instance returned here is not read-only, so it's
+     dangerous to use.</span></div>
+<div class="block">Returns the default instance of the wrapper. This instance is used
+ when you construct various bean models without explicitly specifying
+ a wrapper. It is also returned by 
+ <a href="../../../freemarker/template/ObjectWrapper.html#BEANS_WRAPPER"><code>ObjectWrapper.BEANS_WRAPPER</code></a>
+ and this is the sole instance that is used by the JSP adapter.
+ You can modify the properties of the default instance (caching,
+ exposure level, null model) to affect its operation. By default, the
+ default instance is not caching, uses the <code>EXPOSE_SAFE</code>
+ exposure level, and uses null reference as the null model.</div>
+</li>
+</ul>
+<a name="wrap-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wrap</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template">TemplateModel</a>&nbsp;wrap(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)
+                   throws <a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></pre>
+<div class="block">Wraps the object with a template model that is most specific for the object's
+ class. Specifically:
+ <ul>
+ <li>if the object is null, returns the <a href="../../../freemarker/ext/beans/BeansWrapper.html#setNullModel-freemarker.template.TemplateModel-"><code>null model</code></a>,</li>
+ <li>if the object is a Number returns a <a href="../../../freemarker/ext/beans/NumberModel.html" title="class in freemarker.ext.beans"><code>NumberModel</code></a> for it,</li>
+ <li>if the object is a Date returns a <a href="../../../freemarker/ext/beans/DateModel.html" title="class in freemarker.ext.beans"><code>DateModel</code></a> for it,</li>
+ <li>if the object is a Boolean returns 
+ <a href="../../../freemarker/template/TemplateBooleanModel.html#TRUE"><code>TemplateBooleanModel.TRUE</code></a> or 
+ <a href="../../../freemarker/template/TemplateBooleanModel.html#FALSE"><code>TemplateBooleanModel.FALSE</code></a></li>
+ <li>if the object is already a TemplateModel, returns it unchanged,</li>
+ <li>if the object is an array, returns a <a href="../../../freemarker/ext/beans/ArrayModel.html" title="class in freemarker.ext.beans"><code>ArrayModel</code></a> for it
+ <li>if the object is a Map, returns a <a href="../../../freemarker/ext/beans/MapModel.html" title="class in freemarker.ext.beans"><code>MapModel</code></a> for it
+ <li>if the object is a Collection, returns a <a href="../../../freemarker/ext/beans/CollectionModel.html" title="class in freemarker.ext.beans"><code>CollectionModel</code></a> for it
+ <li>if the object is an Iterator, returns a <a href="../../../freemarker/ext/beans/IteratorModel.html" title="class in freemarker.ext.beans"><code>IteratorModel</code></a> for it
+ <li>if the object is an Enumeration, returns a <a href="../../../freemarker/ext/beans/EnumerationModel.html" title="class in freemarker.ext.beans"><code>EnumerationModel</code></a> for it
+ <li>if the object is a String, returns a <a href="../../../freemarker/ext/beans/StringModel.html" title="class in freemarker.ext.beans"><code>StringModel</code></a> for it
+ <li>otherwise, returns a generic <a href="../../../freemarker/ext/beans/StringModel.html" title="class in freemarker.ext.beans"><code>StringModel</code></a> for it.
+ </ul></div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../freemarker/template/ObjectWrapper.html#wrap-java.lang.Object-">wrap</a></code>&nbsp;in interface&nbsp;<code><a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template">ObjectWrapper</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>object</code> - The object to wrap into a <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>. If it already implements <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a>,
+      it should just return the object as is. If it's <code>null</code>, the method should return <code>null</code>
+      (however, <a href="../../../freemarker/ext/beans/BeansWrapper.html" title="class in freemarker.ext.beans"><code>BeansWrapper</code></a>, has a legacy option for returning a null model object instead, but it's not
+      a good idea).</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>a <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a> wrapper of the object passed in. To support un-wrapping, you may consider the
+     return value to implement <a href="../../../freemarker/ext/util/WrapperTemplateModel.html" title="interface in freemarker.ext.util"><code>WrapperTemplateModel</code></a> and <a href="../../../freemarker/template/AdapterTemplateModel.html" title="interface in freemarker.template"><code>AdapterTemplateModel</code></a>.  
+     The default expectation is that the <a href="../../../freemarker/template/TemplateModel.html" title="interface in freemarker.template"><code>TemplateModel</code></a> isn't less thread safe than the wrapped object.
+     If the <a href="../../../freemarker/template/ObjectWrapper.html" title="interface in freemarker.template"><code>ObjectWrapper</code></a> returns less thread safe objects, that should be clearly documented, as it
+     restricts how it can be used, like, then it can't be used to wrap "shared variables"
+     (<a href="../../../freemarker/template/Configuration.html#setSharedVaribles-java.util.Map-"><code>Configuration.setSharedVaribles(Map)</code></a>).</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../freemarker/template/TemplateModelException.html" title="class in freemarker.template">TemplateModelException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="wrap-java.lang.Object-java.lang.reflect.Method-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wrap</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/TemplateMethodModelEx.html" title="interface in freemarker.template">TemplateMethodModelEx</a>&nbsp;wrap(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
+                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a>&nbsp;method)</pre>
+<div class="block">Wraps a Java method so that it can be called from templates, without wrapping its parent ("this") object. The
+ result is almost the same as that you would get by wrapping the parent object then getting the method from the
+ resulting <a href="../../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template"><code>TemplateHashModel</code></a> by name. Except, if the wrapped method is overloaded, with this method you
+ explicitly select a an overload, while otherwise you would get a <a href="../../../freemarker/template/TemplateMethodModelEx.html" title="interface in freemarker.template"><code>TemplateMethodModelEx</code></a> that selects an
+ overload each time it's called based on the argument values.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>object</code> - The object whose method will be called, or <code>null</code> if <code>method</code> is a static method.
+          This object will be used "as is", like without unwrapping it if it's a <a href="../../../freemarker/template/TemplateModelAdapter.html" title="interface in freemarker.template"><code>TemplateModelAdapter</code></a>.</dd>
+<dd><code>method</code> - The method to call, which must be an (inherited) member of the class of <code>object</code>, as
+          described by <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true#invoke-java.lang.Object-java.lang.Object...-" title="class or interface in java.lang.reflect"><code>Method.invoke(Object, Object...)</code></a></dd>
+<dt><span class="simpleTagLabel">Since:</span></dt>
+<dd>2.3.22</dd>
+</dl>
+</li>
+</ul>
+<a name="wrapAsAPI-java.lang.Object-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>wrapAsAPI</h4>
+<pre>public&nbsp;<a href="../../../freemarker/template/TemplateHashM

<TRUNCATED>


Mime
View raw message