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
  * 
  * http://www.apache.org/licenses/LICENSE-2.0
  * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package freemarker.core;
Thrown when ?api is not supported by a value.
        super(nullenvblamedExprbuildDescription(envblamedExprmodel));
    }
    protected static _ErrorDescriptionBuilder buildDescription(Environment envExpression blamedExpr,
            TemplateModel tm) {
        final _ErrorDescriptionBuilder desc = new _ErrorDescriptionBuilder(new Object[] {
                "The value doesn't support ?api. See requirements in the FreeMarker Manual. ("
                + "FTL type: "new _DelayedFTLTypeDescription(tm),
                ", TemplateModel class: "new _DelayedShortClassName(tm.getClass()),
                ", ObjectWapper: "new _DelayedToString(env.getObjectWrapper()), ")"
        }).blame(blamedExpr);
        if (blamedExpr.isLiteral()) {
            desc.tip("Only adapted Java objects can possibly have API, not values created inside templates.");
        } else {
            ObjectWrapper ow = env.getObjectWrapper();
            if (ow instanceof DefaultObjectWrapper
                    && (tm instanceof SimpleHash || tm instanceof SimpleSequence)) {
                DefaultObjectWrapper dow = (DefaultObjectWrapperow;
                if (!dow.getUseAdaptersForContainers()) {
                    desc.tip(new Object[] {
                            "In the FreeMarker configuration, \"".,
                            "\" is a DefaultObjectWrapper with its \"useAdaptersForContainers\" property set to "
                            + "false. Setting it to true might solves this problem." });
                    if (dow.getIncompatibleImprovements().intValue() < .) {
                        desc.tip("Setting DefaultObjectWrapper's \"incompatibleImprovements\" to 2.3.22 or higher will "
                                + "change the default value of \"useAdaptersForContainers\" to true.");
                    }
                } else if (tm instanceof SimpleSequence && dow.getForceLegacyNonListCollections()) {
                    desc.tip(new Object[] {
                            "In the FreeMarker configuration, \"",
                            .,
                            "\" is a DefaultObjectWrapper with its \"forceLegacyNonListCollections\" property set "
                            + "to true. If you are trying to access the API of a non-List Collection, setting the "
                            + "\"forceLegacyNonListCollections\" property to false might solves this problem." });
                }
            }
        }
        return desc;
    }
New to GrepCode? Check out our FAQ X