/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.template;

import java.util.Locale;
import java.util.Set;
import java.util.TimeZone;

import freemarker.cache.CacheStorage;
import freemarker.cache.TemplateLoader;
import freemarker.cache.TemplateLookupStrategy;
import freemarker.cache.TemplateNameFormat;
import freemarker.core.Expression;
import freemarker.core.OutputFormat;
import freemarker.core.TemplateObject;
import freemarker.template.utility.NullArgumentException;

For internal use only; don't depend on this, there's no backward compatibility guarantee at all! This class is to work around the lack of module system in Java, i.e., so that other FreeMarker packages can access things inside this package that users shouldn't.
/** * For internal use only; don't depend on this, there's no backward compatibility guarantee at all! * This class is to work around the lack of module system in Java, i.e., so that other FreeMarker packages can * access things inside this package that users shouldn't. */
public class _TemplateAPI { public static final int VERSION_INT_2_3_0 = Configuration.VERSION_2_3_0.intValue(); public static final int VERSION_INT_2_3_19 = Configuration.VERSION_2_3_19.intValue(); public static final int VERSION_INT_2_3_20 = Configuration.VERSION_2_3_20.intValue(); public static final int VERSION_INT_2_3_21 = Configuration.VERSION_2_3_21.intValue(); public static final int VERSION_INT_2_3_22 = Configuration.VERSION_2_3_22.intValue(); public static final int VERSION_INT_2_3_23 = Configuration.VERSION_2_3_23.intValue(); public static final int VERSION_INT_2_3_24 = Configuration.VERSION_2_3_24.intValue(); public static final int VERSION_INT_2_3_25 = Configuration.VERSION_2_3_25.intValue(); public static final int VERSION_INT_2_3_26 = Configuration.VERSION_2_3_26.intValue(); public static final int VERSION_INT_2_3_27 = Configuration.VERSION_2_3_27.intValue(); public static final int VERSION_INT_2_3_28 = Configuration.VERSION_2_3_28.intValue(); public static final int VERSION_INT_2_4_0 = Version.intValueFor(2, 4, 0); public static void checkVersionNotNullAndSupported(Version incompatibleImprovements) { NullArgumentException.check("incompatibleImprovements", incompatibleImprovements); int iciV = incompatibleImprovements.intValue(); if (iciV > Configuration.getVersion().intValue()) { throw new IllegalArgumentException("The FreeMarker version requested by \"incompatibleImprovements\" was " + incompatibleImprovements + ", but the installed FreeMarker version is only " + Configuration.getVersion() + ". You may need to upgrade FreeMarker in your project."); } if (iciV < VERSION_INT_2_3_0) { throw new IllegalArgumentException("\"incompatibleImprovements\" must be at least 2.3.0."); } } public static int getTemplateLanguageVersionAsInt(TemplateObject to) { return getTemplateLanguageVersionAsInt(to.getTemplate()); } public static int getTemplateLanguageVersionAsInt(Template t) { return t.getTemplateLanguageVersion().intValue(); }
For unit testing only
/** For unit testing only */
public static void DefaultObjectWrapperFactory_clearInstanceCache() { DefaultObjectWrapperBuilder.clearInstanceCache(); } public static TemplateExceptionHandler getDefaultTemplateExceptionHandler( Version incompatibleImprovements) { return Configuration.getDefaultTemplateExceptionHandler(incompatibleImprovements); } public static AttemptExceptionReporter getDefaultAttemptExceptionReporter( Version incompatibleImprovements) { return Configuration.getDefaultAttemptExceptionReporter(incompatibleImprovements); } public static boolean getDefaultLogTemplateExceptions(Version incompatibleImprovements) { return Configuration.getDefaultLogTemplateExceptions(incompatibleImprovements); } public static boolean getDefaultWrapUncheckedExceptions(Version incompatibleImprovements) { return Configuration.getDefaultWrapUncheckedExceptions(incompatibleImprovements); } public static TemplateLoader createDefaultTemplateLoader(Version incompatibleImprovements) { return Configuration.createDefaultTemplateLoader(incompatibleImprovements); } public static CacheStorage createDefaultCacheStorage(Version incompatibleImprovements) { return Configuration.createDefaultCacheStorage(incompatibleImprovements); } public static TemplateLookupStrategy getDefaultTemplateLookupStrategy(Version incompatibleImprovements) { return Configuration.getDefaultTemplateLookupStrategy(incompatibleImprovements); } public static TemplateNameFormat getDefaultTemplateNameFormat(Version incompatibleImprovements) { return Configuration.getDefaultTemplateNameFormat(incompatibleImprovements); }
[2.4] getSettingNames() becomes to public; remove this.
/** * [2.4] getSettingNames() becomes to public; remove this. */
public static Set/*<String>*/ getConfigurationSettingNames(Configuration cfg, boolean camelCase) { return cfg.getSettingNames(camelCase); } public static void setAutoEscaping(Template t, boolean autoEscaping) { t.setAutoEscaping(autoEscaping); } public static void setOutputFormat(Template t, OutputFormat outputFormat) { t.setOutputFormat(outputFormat); } public static void validateAutoEscapingPolicyValue(int autoEscaping) { if (autoEscaping != Configuration.ENABLE_IF_DEFAULT_AUTO_ESCAPING_POLICY && autoEscaping != Configuration.ENABLE_IF_SUPPORTED_AUTO_ESCAPING_POLICY && autoEscaping != Configuration.DISABLE_AUTO_ESCAPING_POLICY) { throw new IllegalArgumentException("\"auto_escaping\" can only be set to one of these: " + "Configuration.ENABLE_AUTO_ESCAPING_IF_DEFAULT, " + "or Configuration.ENABLE_AUTO_ESCAPING_IF_SUPPORTED" + "or Configuration.DISABLE_AUTO_ESCAPING"); } } public static void validateNamingConventionValue(int namingConvention) { if (namingConvention != Configuration.AUTO_DETECT_NAMING_CONVENTION && namingConvention != Configuration.LEGACY_NAMING_CONVENTION && namingConvention != Configuration.CAMEL_CASE_NAMING_CONVENTION) { throw new IllegalArgumentException("\"naming_convention\" can only be set to one of these: " + "Configuration.AUTO_DETECT_NAMING_CONVENTION, " + "or Configuration.LEGACY_NAMING_CONVENTION" + "or Configuration.CAMEL_CASE_NAMING_CONVENTION"); } } public static void valideTagSyntaxValue(int tagSyntax) { if (tagSyntax != Configuration.AUTO_DETECT_TAG_SYNTAX && tagSyntax != Configuration.SQUARE_BRACKET_TAG_SYNTAX && tagSyntax != Configuration.ANGLE_BRACKET_TAG_SYNTAX) { throw new IllegalArgumentException("\"tag_syntax\" can only be set to one of these: " + "Configuration.AUTO_DETECT_TAG_SYNTAX, Configuration.ANGLE_BRACKET_TAG_SYNTAX, " + "or Configuration.SQUARE_BRACKET_TAG_SYNTAX"); } } public static void valideInterpolationSyntaxValue(int interpolationSyntax) { if (interpolationSyntax != Configuration.LEGACY_INTERPOLATION_SYNTAX && interpolationSyntax != Configuration.DOLLAR_INTERPOLATION_SYNTAX && interpolationSyntax != Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX) { throw new IllegalArgumentException("\"interpolation_syntax\" can only be set to one of these: " + "Configuration.LEGACY_INTERPOLATION_SYNTAX, Configuration.DOLLAR_INTERPOLATION_SYNTAX, " + "or Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX"); } } public static Expression getBlamedExpression(TemplateException e) { return e.getBlamedExpression(); } public static Locale getDefaultLocale() { return Configuration.getDefaultLocale(); } public static TimeZone getDefaultTimeZone() { return Configuration.getDefaultTimeZone(); } public static void setPreventStrippings(Configuration conf, boolean preventStrippings) { conf.setPreventStrippings(preventStrippings); } }