Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * See the License for the specific language governing permissions and
 * limitations under the License.
package freemarker.template;
Maps Java objects to the type-system of FreeMarker Template Language (see the TemplateModel interfaces). Thus this is what decides what parts of the Java objects will be accessible in the templates and how.

For example, with a freemarker.ext.beans.BeansWrapper both the items of java.util.Map and the JavaBean properties (the getters) of an object are accessible in template uniformly with the syntax, where "foo" is the map key or the property name. This is because both kind of object is wrapped by freemarker.ext.beans.BeansWrapper into a TemplateHashModel implementation that will call java.util.Map.get(java.lang.Object) or the getter method, transparently to the template language.

public interface ObjectWrapper {
An ObjectWrapper that exposes the object methods and JavaBeans properties as hash elements, and has custom handling for Java java.util.Map-s, java.util.ResourceBundle-s, etc. It doesn't treat org.w3c.dom.Node-s and Jython objects specially, however. As of 2.3.22, using DefaultObjectWrapper with its incompatibleImprovements property set to 2.3.22 (or higher) is recommended instead.

Use instead; this instance isn't read-only and thus can't be trusted.
    ObjectWrapper BEANS_WRAPPER = BeansWrapper.getDefaultInstance();

The legacy default object wrapper implementation, focusing on backward compatibility and out-of-the W3C DOM wrapping box extra features. See DefaultObjectWrapper for more information.

Use instead; this instance isn't read-only and thus can't be trusted.
Object wrapper that uses SimpleXXX wrappers only. It behaves like the DEFAULT_WRAPPER, but for objects that it does not know how to wrap as a SimpleXXX it throws an exception. It makes no use of reflection-based exposure of anything, which may makes it a good candidate for security-restricted applications.

No replacement as it was seldom if ever used by anyone; this instance isn't read-only and thus can't be trusted.
Makes a TemplateModel out of a non-TemplateModel object, usually by "wrapping" it into a TemplateModel implementation that delegates to the original object.

obj The object to wrap into a TemplateModel. If it already implements TemplateModel, it should just return the object as is. If it's null, the method should return null (however, freemarker.ext.beans.BeansWrapper, has a legacy option for returning a null model object instead, but it's not a good idea).
a TemplateModel wrapper of the object passed in. To support un-wrapping, you may consider the return value to implement freemarker.ext.util.WrapperTemplateModel and AdapterTemplateModel. The default expectation is that the TemplateModel isn't less thread safe than the wrapped object. If the ObjectWrapper 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" (Configuration.setSharedVaribles(java.util.Map)).
New to GrepCode? Check out our FAQ X