//
// ========================================================================
// Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.webapp;
import static java.util.stream.Collectors.toList;
import static org.eclipse.jetty.webapp.Configurations.getKnown;
import static org.hamcrest.Matchers.contains;
import static org.junit.Assert.assertThat;
import org.junit.Test;
public class ConfigurationsTest
{
@Test
public void testSetKnown()
{
Configurations.cleanKnown();
Configurations.setKnown(
ConfigBar.class.getName(),
ConfigZ.class.getName(),
ConfigY.class.getName(),
ConfigX.class.getName(),
ConfigTom.class.getName(),
ConfigDick.class.getName(),
ConfigHarry.class.getName(),
ConfigAdditionalHarry.class.getName(),
ConfigExtendedDick.class.getName(),
ConfigFoo.class.getName()
);
assertThat(getKnown().stream().map(c->c.getClass().getName()).collect(toList()),
contains(
ConfigFoo.class.getName(),
ConfigBar.class.getName(),
ConfigX.class.getName(),
ConfigY.class.getName(),
ConfigZ.class.getName(),
ConfigTom.class.getName(),
ConfigDick.class.getName(),
ConfigExtendedDick.class.getName(),
ConfigHarry.class.getName(),
ConfigAdditionalHarry.class.getName()
));
}
@Test
public void testConfigurations()
{
Configurations.cleanKnown();
Configurations.setKnown(
ConfigBar.class.getName(),
ConfigZ.class.getName(),
ConfigY.class.getName(),
ConfigX.class.getName(),
ConfigTom.class.getName(),
ConfigDick.class.getName(),
ConfigHarry.class.getName(),
ConfigAdditionalHarry.class.getName(),
ConfigExtendedDick.class.getName(),
ConfigFoo.class.getName()
);
Configurations configs = new Configurations(
ConfigBar.class.getName(),
ConfigZ.class.getName(),
ConfigY.class.getName(),
ConfigX.class.getName(),
ConfigTom.class.getName(),
ConfigDick.class.getName(),
ConfigHarry.class.getName(),
ConfigAdditionalHarry.class.getName(),
ConfigFoo.class.getName()
);
configs.add(ConfigExtendedDick.class.getName());
configs.sort();
assertThat(configs.stream().map(c->c.getClass().getName()).collect(toList()),
contains(
ConfigFoo.class.getName(),
ConfigBar.class.getName(),
ConfigX.class.getName(),
ConfigY.class.getName(),
ConfigZ.class.getName(),
ConfigTom.class.getName(),
ConfigExtendedDick.class.getName(),
ConfigHarry.class.getName(),
ConfigAdditionalHarry.class.getName()
));
}
public static class ConfigFoo extends AbstractConfiguration
{
{
addDependents(ConfigBar.class); }
}
public static class ConfigBar extends AbstractConfiguration
{
}
public static class ConfigX extends AbstractConfiguration
{
{
addDependencies(ConfigBar.class);
}
}
public static class ConfigY extends AbstractConfiguration
{
{
addDependencies(ConfigX.class);
addDependents(ConfigZ.class);
}
}
public static class ConfigZ extends AbstractConfiguration
{
}
public static class ConfigTom extends AbstractConfiguration
{
}
public static class ConfigDick extends AbstractConfiguration
{
{
addDependencies(ConfigTom.class);
}
}
public static class ConfigHarry extends AbstractConfiguration
{
{
addDependencies(ConfigDick.class);
}
}
public static class ConfigExtendedDick extends ConfigDick
{
{
addDependencies(ConfigTom.class);
}
@Override
public Class<? extends Configuration> replaces()
{
return ConfigDick.class;
}
}
public static class ConfigAdditionalHarry extends ConfigHarry
{
}
}