Repository: incubator-freemarker Updated Branches: refs/heads/3 de975ebf4 -> ae8a3d524
TemplateNameFormat internal API clarifications (terminology, JavaDocs) forwardported from FM2 Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/ae8a3d52 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/ae8a3d52 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/ae8a3d52 Branch: refs/heads/3 Commit: ae8a3d5243d215d532a5ce155772fe79ce710786 Parents: de975eb Author: ddekany <[email protected]> Authored: Sun Feb 12 16:23:49 2017 +0100 Committer: ddekany <[email protected]> Committed: Sun Feb 12 16:23:49 2017 +0100 ---------------------------------------------------------------------- .../java/freemarker/cache/TemplateCache.java | 4 +- .../freemarker/cache/TemplateNameFormat.java | 54 +++++--- src/main/java/freemarker/cache/_CacheAPI.java | 8 +- src/main/java/freemarker/core/Environment.java | 12 +- .../cache/TemplateNameFormatTest.java | 128 +++++++++---------- 5 files changed, 114 insertions(+), 92 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ae8a3d52/src/main/java/freemarker/cache/TemplateCache.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/cache/TemplateCache.java b/src/main/java/freemarker/cache/TemplateCache.java index 0fa3f85..75e496e 100644 --- a/src/main/java/freemarker/cache/TemplateCache.java +++ b/src/main/java/freemarker/cache/TemplateCache.java @@ -246,7 +246,7 @@ public class TemplateCache { NullArgumentException.check("encoding", encoding); try { - name = templateNameFormat.normalizeAbsoluteName(name); + name = templateNameFormat.normalizeRootBasedName(name); } catch (MalformedTemplateNameException e) { // If we don't have to emulate backward compatible behavior, then just rethrow it: if (templateNameFormat != TemplateNameFormat.DEFAULT_2_3_0 @@ -793,7 +793,7 @@ public class TemplateCache { if (encoding == null) { throw new IllegalArgumentException("Argument \"encoding\" can't be null"); } - name = templateNameFormat.normalizeAbsoluteName(name); + name = templateNameFormat.normalizeRootBasedName(name); if (name != null && templateLoader != null) { boolean debug = LOG.isDebugEnabled(); String debugPrefix = debug http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ae8a3d52/src/main/java/freemarker/cache/TemplateNameFormat.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/cache/TemplateNameFormat.java b/src/main/java/freemarker/cache/TemplateNameFormat.java index 2e06795..34782c5 100644 --- a/src/main/java/freemarker/cache/TemplateNameFormat.java +++ b/src/main/java/freemarker/cache/TemplateNameFormat.java @@ -100,24 +100,46 @@ public abstract class TemplateNameFormat { public static final TemplateNameFormat DEFAULT_2_4_0 = new Default020400(); /** - * @param baseName Maybe {@code null}, maybe a "file" name instead of a "directory" name. - * @param targetName No {@code null}. Maybe relative, maybe absolute. + * Converts a name to a template root directory based name, so that it can be used to find a template without + * knowing what (like which template) has referred to it. The rules depend on the name format, but a typical example + * is converting "t.ftl" with base "sub/contex.ftl" to "sub/t.ftl". + * + * @param baseName + * Maybe a file name, maybe a directory name. The meaning of file name VS directory name depends on the + * name format, but typically, something like "foo/bar/" is a directory name, and something like + * "foo/bar" is a file name, and thus in the last case the effective base is "foo/" (i.e., the directory + * that contains the file). Not {@code null}. + * @param targetName + * The name to convert. This usually comes from a template that refers to another template by name. It + * can be a relative name, or an absolute name. (In typical name formats absolute names start with + * {@code "/"} or maybe with an URL scheme, and all others are relative). Not {@code null}. + * + * @return The path in template root directory relative format, or even an absolute name (where the root directory + * is not the real root directory of the file system, but the imaginary directory that exists to store the + * templates). The standard implementations shipped with FreeMarker always return a root relative path + * (except if the name starts with an URI schema, in which case a full URI is returned). */ - abstract String toAbsoluteName(String baseName, String targetName) throws MalformedTemplateNameException; + abstract String toRootBasedName(String baseName, String targetName) throws MalformedTemplateNameException; /** - * @return For backward compatibility only, {@code null} is allowed and will be treated as if the template doesn't - * exist (despite that a normalizer doesn't access the storage, so it's not its duty to decide that). + * Normalizes a template root directory based name (relative to the root or absolute), so that equivalent names + * become equivalent according {@link String#equals(Object)} too. The rules depend on the name format, but typical + * examples are "sub/../t.ftl" to "t.ftl", "sub/./t.ftl" to "sub/t.ftl" and "/t.ftl" to "t.ftl". + * + * <p>The standard implementations shipped with FreeMarker always returns a root relative path + * (except if the name starts with an URI schema, in which case a full URI is returned), for example, "/foo.ftl" + * becomes to "foo.ftl". + * + * @param name + * The root based name. Not {@code null}. + * + * @return The normalized root based name. Not {@code null}. */ - abstract String normalizeAbsoluteName(String name) throws MalformedTemplateNameException; + abstract String normalizeRootBasedName(String name) throws MalformedTemplateNameException; private static final class Default020300 extends TemplateNameFormat { @Override - String toAbsoluteName(String baseName, String targetName) { - if (baseName == null) { - return targetName; - } - + String toRootBasedName(String baseName, String targetName) { if (targetName.indexOf("://") > 0) { return targetName; } else if (targetName.startsWith("/")) { @@ -136,7 +158,7 @@ public abstract class TemplateNameFormat { } @Override - String normalizeAbsoluteName(final String name) throws MalformedTemplateNameException { + String normalizeRootBasedName(final String name) throws MalformedTemplateNameException { // Disallow 0 for security reasons. checkNameHasNoNullCharacter(name); @@ -188,11 +210,7 @@ public abstract class TemplateNameFormat { private static final class Default020400 extends TemplateNameFormat { @Override - String toAbsoluteName(String baseName, String targetName) { - if (baseName == null) { - return targetName; - } - + String toRootBasedName(String baseName, String targetName) { if (findSchemeSectionEnd(targetName) != 0) { return targetName; } else if (targetName.startsWith("/")) { // targetName is an absolute path @@ -219,7 +237,7 @@ public abstract class TemplateNameFormat { } @Override - String normalizeAbsoluteName(final String name) throws MalformedTemplateNameException { + String normalizeRootBasedName(final String name) throws MalformedTemplateNameException { // Disallow 0 for security reasons. checkNameHasNoNullCharacter(name); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ae8a3d52/src/main/java/freemarker/cache/_CacheAPI.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/cache/_CacheAPI.java b/src/main/java/freemarker/cache/_CacheAPI.java index fee6531..638be92 100644 --- a/src/main/java/freemarker/cache/_CacheAPI.java +++ b/src/main/java/freemarker/cache/_CacheAPI.java @@ -32,14 +32,14 @@ public final class _CacheAPI { // Not meant to be instantiated } - public static String toAbsoluteName(TemplateNameFormat templateNameFormat, String baseName, String targetName) + public static String toRootBasedName(TemplateNameFormat templateNameFormat, String baseName, String targetName) throws MalformedTemplateNameException { - return templateNameFormat.toAbsoluteName(baseName, targetName); + return templateNameFormat.toRootBasedName(baseName, targetName); } - public static String normalizeAbsoluteName(TemplateNameFormat templateNameFormat, String name) + public static String normalizeRootBasedName(TemplateNameFormat templateNameFormat, String name) throws MalformedTemplateNameException { - return templateNameFormat.normalizeAbsoluteName(name); + return templateNameFormat.normalizeRootBasedName(name); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ae8a3d52/src/main/java/freemarker/core/Environment.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/core/Environment.java b/src/main/java/freemarker/core/Environment.java index 7e61587..9d473aa 100644 --- a/src/main/java/freemarker/core/Environment.java +++ b/src/main/java/freemarker/core/Environment.java @@ -2622,7 +2622,7 @@ public final class Environment extends Configurable { // that (at least in 2.3.x) the name used for eager import namespace key isn't the template.sourceName, but // the looked up name (template.name), which we can get quickly: TemplateNameFormat tnf = getConfiguration().getTemplateNameFormat(); - templateName = _CacheAPI.normalizeAbsoluteName(tnf, _CacheAPI.toAbsoluteName(tnf, null, templateName)); + templateName = _CacheAPI.normalizeRootBasedName(tnf, templateName); } if (loadedLibs == null) { @@ -2679,8 +2679,9 @@ public final class Environment extends Configurable { * template refers to another template. * * @param baseName - * The name to which relative {@code targetName}-s are relative to. Maybe {@code null}, which usually - * means that the base is the root "directory". Assuming {@link TemplateNameFormat#DEFAULT_2_3_0} or + * The name to which relative {@code targetName}-s are relative to. Maybe {@code null} (happens when + * resolving names in nameless templates), which means that the base is the root "directory", and so the + * {@code targetName} is returned without change. Assuming {@link TemplateNameFormat#DEFAULT_2_3_0} or * {@link TemplateNameFormat#DEFAULT_2_4_0}, the rules are as follows. If you want to specify a base * directory here, it must end with {@code "/"}. If it doesn't end with {@code "/"}, it's parent * directory will be used as the base path. Might starts with a scheme part (like {@code "foo://"}, or @@ -2699,7 +2700,10 @@ public final class Environment extends Configurable { */ public String toFullTemplateName(String baseName, String targetName) throws MalformedTemplateNameException { - return _CacheAPI.toAbsoluteName(configuration.getTemplateNameFormat(), baseName, targetName); + if (baseName == null) { + return targetName; + } + return _CacheAPI.toRootBasedName(configuration.getTemplateNameFormat(), baseName, targetName); } String renderElementToString(TemplateElement te) throws IOException, TemplateException { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ae8a3d52/src/test/java/freemarker/cache/TemplateNameFormatTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/freemarker/cache/TemplateNameFormatTest.java b/src/test/java/freemarker/cache/TemplateNameFormatTest.java index ff9013e..f1b6f26 100644 --- a/src/test/java/freemarker/cache/TemplateNameFormatTest.java +++ b/src/test/java/freemarker/cache/TemplateNameFormatTest.java @@ -43,77 +43,77 @@ import freemarker.test.MonitoredTemplateLoader; public class TemplateNameFormatTest { @Test - public void testToAbsoluteName() throws MalformedTemplateNameException { + public void testToRootBasedName() throws MalformedTemplateNameException { // Path that are treated the same both in 2.3 and 2.4 format: for (TemplateNameFormat tnf : new TemplateNameFormat[] { TemplateNameFormat.DEFAULT_2_3_0, TemplateNameFormat.DEFAULT_2_4_0 }) { // Relative paths: // - No scheme: - assertEquals("a/b", tnf.toAbsoluteName("a/", "b")); - assertEquals("/a/b", tnf.toAbsoluteName("/a/", "b")); - assertEquals("a/b", tnf.toAbsoluteName("a/f", "b")); - assertEquals("/a/b", tnf.toAbsoluteName("/a/f", "b")); + assertEquals("a/b", tnf.toRootBasedName("a/", "b")); + assertEquals("/a/b", tnf.toRootBasedName("/a/", "b")); + assertEquals("a/b", tnf.toRootBasedName("a/f", "b")); + assertEquals("/a/b", tnf.toRootBasedName("/a/f", "b")); // - Scheme: - assertEquals("s://a/b", tnf.toAbsoluteName("s://a/", "b")); - assertEquals("s:///a/b", tnf.toAbsoluteName("s:///a/", "b")); - assertEquals("s://a/b", tnf.toAbsoluteName("s://a/f", "b")); - assertEquals("s:///a/b", tnf.toAbsoluteName("s:///a/f", "b")); - assertEquals("s://b", tnf.toAbsoluteName("s://f", "b")); - assertEquals("s:///b", tnf.toAbsoluteName("s:///f", "b")); + assertEquals("s://a/b", tnf.toRootBasedName("s://a/", "b")); + assertEquals("s:///a/b", tnf.toRootBasedName("s:///a/", "b")); + assertEquals("s://a/b", tnf.toRootBasedName("s://a/f", "b")); + assertEquals("s:///a/b", tnf.toRootBasedName("s:///a/f", "b")); + assertEquals("s://b", tnf.toRootBasedName("s://f", "b")); + assertEquals("s:///b", tnf.toRootBasedName("s:///f", "b")); // Absolute paths: // - No scheme: - assertEquals("b", tnf.toAbsoluteName("a/", "/b")); - assertEquals("b", tnf.toAbsoluteName("/a/", "/b")); - assertEquals("b", tnf.toAbsoluteName("a/s:/f/", "/b")); + assertEquals("b", tnf.toRootBasedName("a/", "/b")); + assertEquals("b", tnf.toRootBasedName("/a/", "/b")); + assertEquals("b", tnf.toRootBasedName("a/s:/f/", "/b")); // - Scheme: - assertEquals("s://b", tnf.toAbsoluteName("s://x/", "/b")); - assertEquals("s://b", tnf.toAbsoluteName("s:///x/", "/b")); + assertEquals("s://b", tnf.toRootBasedName("s://x/", "/b")); + assertEquals("s://b", tnf.toRootBasedName("s:///x/", "/b")); // Schemed absolute paths: - assertEquals("s://b", tnf.toAbsoluteName("a/", "s://b")); - assertEquals("s://b", tnf.toAbsoluteName("i://a/", "s://b")); + assertEquals("s://b", tnf.toRootBasedName("a/", "s://b")); + assertEquals("s://b", tnf.toRootBasedName("i://a/", "s://b")); } // Scheme names in 2.4 format only: { final TemplateNameFormat tnf = TemplateNameFormat.DEFAULT_2_4_0; - assertEquals("s:b", tnf.toAbsoluteName("s:f", "b")); - assertEquals("s:/b", tnf.toAbsoluteName("s:/f", "b")); - assertEquals("s:b", tnf.toAbsoluteName("s:f", "/b")); - assertEquals("s:b", tnf.toAbsoluteName("s:/f", "/b")); - assertEquals("s:f/b", tnf.toAbsoluteName("s:f/", "b")); - assertEquals("s:/f/b", tnf.toAbsoluteName("s:/f/", "b")); - assertEquals("s:b", tnf.toAbsoluteName("s:f/", "/b")); - assertEquals("s:b", tnf.toAbsoluteName("s:/f/", "/b")); - assertEquals("s:b", tnf.toAbsoluteName("s:/f/", "/b")); - assertEquals("b", tnf.toAbsoluteName("a/s://f/", "/b")); + assertEquals("s:b", tnf.toRootBasedName("s:f", "b")); + assertEquals("s:/b", tnf.toRootBasedName("s:/f", "b")); + assertEquals("s:b", tnf.toRootBasedName("s:f", "/b")); + assertEquals("s:b", tnf.toRootBasedName("s:/f", "/b")); + assertEquals("s:f/b", tnf.toRootBasedName("s:f/", "b")); + assertEquals("s:/f/b", tnf.toRootBasedName("s:/f/", "b")); + assertEquals("s:b", tnf.toRootBasedName("s:f/", "/b")); + assertEquals("s:b", tnf.toRootBasedName("s:/f/", "/b")); + assertEquals("s:b", tnf.toRootBasedName("s:/f/", "/b")); + assertEquals("b", tnf.toRootBasedName("a/s://f/", "/b")); } // Scheme names in 2.3 format only: { final TemplateNameFormat tnf = TemplateNameFormat.DEFAULT_2_3_0; - assertEquals("a/s://b", tnf.toAbsoluteName("a/s://f/", "/b")); + assertEquals("a/s://b", tnf.toRootBasedName("a/s://f/", "/b")); } } @Test - public void testNormalizeAbsoluteName() throws MalformedTemplateNameException { + public void testNormalizeRootBasedName() throws MalformedTemplateNameException { // Normalizations that are the same in legacy and modern format: for (TemplateNameFormat tnf : new TemplateNameFormat[] { TemplateNameFormat.DEFAULT_2_3_0, TemplateNameFormat.DEFAULT_2_4_0 }) { - assertEquals("", tnf.normalizeAbsoluteName("")); + assertEquals("", tnf.normalizeRootBasedName("")); for (String lead : new String[] { "", "/" }) { - assertEquals("foo", tnf.normalizeAbsoluteName(lead + "foo")); - assertEquals("foo", tnf.normalizeAbsoluteName(lead + "./foo")); - assertEquals("foo", tnf.normalizeAbsoluteName(lead + "./././foo")); - assertEquals("foo", tnf.normalizeAbsoluteName(lead + "bar/../foo")); - assertEquals("a/b/", tnf.normalizeAbsoluteName("a/b/")); - assertEquals("a/", tnf.normalizeAbsoluteName("a/b/../")); - assertEquals("a/c../..d/e*/*f", tnf.normalizeAbsoluteName("a/c../..d/e*/*f")); - assertEquals("", tnf.normalizeAbsoluteName("")); - assertEquals("foo/bar/*", tnf.normalizeAbsoluteName("foo/bar/*")); - assertEquals("schema://", tnf.normalizeAbsoluteName("schema://")); + assertEquals("foo", tnf.normalizeRootBasedName(lead + "foo")); + assertEquals("foo", tnf.normalizeRootBasedName(lead + "./foo")); + assertEquals("foo", tnf.normalizeRootBasedName(lead + "./././foo")); + assertEquals("foo", tnf.normalizeRootBasedName(lead + "bar/../foo")); + assertEquals("a/b/", tnf.normalizeRootBasedName("a/b/")); + assertEquals("a/", tnf.normalizeRootBasedName("a/b/../")); + assertEquals("a/c../..d/e*/*f", tnf.normalizeRootBasedName("a/c../..d/e*/*f")); + assertEquals("", tnf.normalizeRootBasedName("")); + assertEquals("foo/bar/*", tnf.normalizeRootBasedName("foo/bar/*")); + assertEquals("schema://", tnf.normalizeRootBasedName("schema://")); assertThrowsWithBackingOutException(lead + "bar/../../x/foo", tnf); assertThrowsWithBackingOutException(lead + "../x", tnf); @@ -124,7 +124,7 @@ public class TemplateNameFormatTest { { final String name = lead + "foo\u0000"; try { - tnf.normalizeAbsoluteName(name); + tnf.normalizeRootBasedName(name); fail(); } catch (MalformedTemplateNameException e) { assertEquals(name, e.getTemplateName()); @@ -139,15 +139,15 @@ public class TemplateNameFormatTest { assertEqualsOn23AndOn24("bar/foo", "foo", "bar/./../foo"); // Even number of leading ".."-s bug: - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("foo", "../../foo"); - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("foo", "../../../../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("foo", "../../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("foo", "../../../../foo"); // ".." and "*" assertEqualsOn23AndOn24("a/b/foo", "a/*/foo", "a/b/*/../foo"); // assertEqualsOn23AndOn24("a/foo", "foo", "a/b/*/../../foo"); // - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("foo", "a/b/*/../../../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("foo", "a/b/*/../../../foo"); // assertEqualsOn23AndOn24("a/b/*/foo", "a/*/foo", "a/b/*/*/../foo"); // @@ -162,13 +162,13 @@ public class TemplateNameFormatTest { assertEqualsOn23AndOn24("*/", "", "a/../*/"); // ".." and "scheme" - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("x:/foo", "x://../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("x:/foo", "x://../foo"); // - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("foo", "x://../../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("foo", "x://../../foo"); // - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("x:../foo", "x:../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("x:../foo", "x:../foo"); // - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("foo", "x:../../foo"); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("foo", "x:../../foo"); // Tricky cases with terminating "/": assertEqualsOn23AndOn24("/", "", "/"); @@ -180,7 +180,7 @@ public class TemplateNameFormatTest { // Lonely "." assertEqualsOn23AndOn24(".", "", "."); // Lonely ".." - assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24("..", ".."); + assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24("..", ".."); // Lonely "*" // Eliminating redundant "//": @@ -213,15 +213,15 @@ public class TemplateNameFormatTest { // New kind of scheme handling: - assertEquals("s:a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName("s:a/b")); - assertEquals("s:a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName("s:/a/b")); - assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName("s://a/b")); - assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName("s:///a/b")); - assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName("s:////a/b")); + assertEquals("s:a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName("s:a/b")); + assertEquals("s:a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName("s:/a/b")); + assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName("s://a/b")); + assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName("s:///a/b")); + assertEquals("s://a/b", TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName("s:////a/b")); // Illegal use a of ":": - assertNormAbsNameThrowsColonExceptionOn24("a/b:c/d"); - assertNormAbsNameThrowsColonExceptionOn24("a/b:/.."); + assertNormRBNameThrowsColonExceptionOn24("a/b:c/d"); + assertNormRBNameThrowsColonExceptionOn24("a/b:/.."); } @Test @@ -289,19 +289,19 @@ public class TemplateNameFormatTest { private void assertEqualsOn23AndOn24(String expected23, String expected24, String name) throws MalformedTemplateNameException { - assertEquals(expected23, TemplateNameFormat.DEFAULT_2_3_0.normalizeAbsoluteName(name)); - assertEquals(expected24, TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName(name)); + assertEquals(expected23, TemplateNameFormat.DEFAULT_2_3_0.normalizeRootBasedName(name)); + assertEquals(expected24, TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName(name)); } - private void assertNormAbsNameEqualsOn23ButThrowsBackOutExcOn24(final String expected23, final String name) + private void assertNormRBNameEqualsOn23ButThrowsBackOutExcOn24(final String expected23, final String name) throws MalformedTemplateNameException { - assertEquals(expected23, TemplateNameFormat.DEFAULT_2_3_0.normalizeAbsoluteName(name)); + assertEquals(expected23, TemplateNameFormat.DEFAULT_2_3_0.normalizeRootBasedName(name)); assertThrowsWithBackingOutException(name, TemplateNameFormat.DEFAULT_2_4_0); } private void assertThrowsWithBackingOutException(final String name, final TemplateNameFormat tnf) { try { - tnf.normalizeAbsoluteName(name); + tnf.normalizeRootBasedName(name); fail(); } catch (MalformedTemplateNameException e) { assertEquals(name, e.getTemplateName()); @@ -309,9 +309,9 @@ public class TemplateNameFormatTest { } } - private void assertNormAbsNameThrowsColonExceptionOn24(final String name) throws MalformedTemplateNameException { + private void assertNormRBNameThrowsColonExceptionOn24(final String name) throws MalformedTemplateNameException { try { - TemplateNameFormat.DEFAULT_2_4_0.normalizeAbsoluteName(name); + TemplateNameFormat.DEFAULT_2_4_0.normalizeRootBasedName(name); fail(); } catch (MalformedTemplateNameException e) { assertEquals(name, e.getTemplateName());
