@Test public void shouldBeAddedToBindingContext() { BindingContext.Builder bindingContextBuilder = BindingContext.builder(); ExpressionModule.Builder builder = ExpressionModule.builder(namespace); builder.addBinding("id", typedValue); ExpressionModule module = builder.build(); bindingContextBuilder.addModule(module); BindingContext bindingContext = bindingContextBuilder.build(); assertThat(bindingContext.modules(), hasSize(1)); assertThat(bindingContext.modules(), hasItem(module)); }
@Test public void addsBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding(ID, typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = builder.addAll(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); Collection<Binding> moduleBindings = context.modules().iterator().next().bindings(); assertThat(moduleBindings, hasSize(1)); assertThat(moduleBindings.iterator().next().identifier(), is(ID)); }
@Test public void fromPreviousBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding("id", typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = BindingContext.builder(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); }
public DefaultBindingContextBuilder(BindingContext bindingContext) { this.bindings = bindingContext.identifiers().stream().collect(toMap(id -> id, id -> () -> bindingContext.lookup(id).get())); this.modules = new ArrayList<>(bindingContext.modules()); }
@Override public BindingContext.Builder addAll(BindingContext context) { context.identifiers().forEach(id -> bindings.put(id, () -> context.lookup(id).get())); modules.addAll(context.modules()); return this; }
@Test public void shouldBeAddedToBindingContext() { BindingContext.Builder bindingContextBuilder = BindingContext.builder(); ExpressionModule.Builder builder = ExpressionModule.builder(namespace); builder.addBinding("id", typedValue); ExpressionModule module = builder.build(); bindingContextBuilder.addModule(module); BindingContext bindingContext = bindingContextBuilder.build(); assertThat(bindingContext.modules(), hasSize(1)); assertThat(bindingContext.modules(), hasItem(module)); }
@Test public void addsBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding(ID, typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = builder.addAll(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); Collection<Binding> moduleBindings = context.modules().iterator().next().bindings(); assertThat(moduleBindings, hasSize(1)); assertThat(moduleBindings.iterator().next().identifier(), is(ID)); }
@Test public void fromPreviousBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding("id", typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = BindingContext.builder(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); }