/** * Test multi composite. */ @Test public void testCompositeDefault() { final ModelManager mm = ModelManager.builder() .addDefaultProvider(new ModelA.Builder()) .build(); final Iterable<Class<?>> classes = transform(mm.getModels(), toClass()); assertThat(classes).containsAllOf(ModelA.class, ModelAsub1.class, ModelAsub1sub1.class, ModelAsub2.class).inOrder(); }
Simulator(Builder b) { modelManager = b.mmBuilder .add(SimulatorModelBuilder.create(this)) .addDefaultProvider( RandomModel.builder().withRandomGenerator( StochasticSuppliers.constant(b.rng))) .addDefaultProvider( TimeModel.builder() .withTickLength(b.tickLength) .withTimeUnit(b.timeUnit)) .build(); toUnregister = new LinkedHashSet<>(); clock = modelManager.getModel(TimeModel.class); rand = modelManager.getModel(RandomModel.class); }
/** * Adds the specified {@link ModelBuilder} to the manager as a default * provider. A default provider will only be used if there is no regular * {@link ModelBuilder} (added via {@link #add(ModelBuilder)}) that provides * the same types. * @param provider The builder to add. * @return This, as per the builder pattern. */ public Builder addDefaultProvider(ModelBuilder<?, ?> provider) { if (provider instanceof CompositeModelBuilder<?, ?>) { return addDefaultProvider((CompositeModelBuilder<?, ?>) provider); } resolver.addDefault(provider); return this; }
/** * Adds the specified {@link CompositeModelBuilder} and its children to the * manager as a default provider. * @param provider The provider to add. * @return This, as per the builder pattern. */ public Builder addDefaultProvider(CompositeModelBuilder<?, ?> provider) { resolver.addDefault(provider); for (final ModelBuilder<?, ?> mb : provider.getChildren()) { addDefaultProvider(mb); } return this; }