@Test public void testAliasChaining() { SimpleAliasRegistry registry = new SimpleAliasRegistry(); registry.registerAlias("test", "testAlias"); registry.registerAlias("testAlias", "testAlias2"); registry.registerAlias("testAlias2", "testAlias3"); assertTrue(registry.hasAlias("test", "testAlias")); assertTrue(registry.hasAlias("test", "testAlias2")); assertTrue(registry.hasAlias("test", "testAlias3")); assertSame("test", registry.canonicalName("testAlias")); assertSame("test", registry.canonicalName("testAlias2")); assertSame("test", registry.canonicalName("testAlias3")); }
/** * Check whether the given name points back to given alias as an alias * in the other direction, catching a circular reference upfront and * throwing a corresponding IllegalStateException. * @param name the candidate name * @param alias the candidate alias * @see #registerAlias */ protected void checkForAliasCircle(String name, String alias) { if (alias.equals(canonicalName(name))) { throw new IllegalStateException("Cannot register alias '" + alias + "' for name '" + name + "': Circular reference - '" + name + "' is a direct or indirect alias for '" + alias + "' already"); } }