@Test void testAddStreamValid() { Tag tag0 = mock(Tag.class); Tag tag1 = mock(Tag.class); doNothing().when(tagValidator).validate(tag0); doNothing().when(tagValidator).validate(tag1); tagRepositoryValidationDecorator.add(Stream.of(tag0, tag1)); @SuppressWarnings("unchecked") ArgumentCaptor<Stream<Tag>> tagCaptor = ArgumentCaptor.forClass(Stream.class); verify(delegateRepository).add(tagCaptor.capture()); assertEquals(asList(tag0, tag1), tagCaptor.getValue().collect(toList())); verify(tagValidator).validate(tag0); verify(tagValidator).validate(tag1); }
@Override public void add(Tag tag) { tagValidator.validate(tag); super.add(tag); }
TagRepositoryValidationDecorator extends AbstractRepositoryDecorator<Tag> { @Override public void add(Tag tag) { tagValidator.validate(tag); super.add(tag); } }
TagRepositoryValidationDecorator extends AbstractRepositoryDecorator<Tag> { @Override public void add(Tag tag) { tagValidator.validate(tag); super.add(tag); } TagRepositoryValidationDecorator(
      Repository<Tag> delegateRepository, TagValidator tagValidator); }
TagRepositoryValidationDecorator extends AbstractRepositoryDecorator<Tag> { @Override public void add(Tag tag) { tagValidator.validate(tag); super.add(tag); } TagRepositoryValidationDecorator(
      Repository<Tag> delegateRepository, TagValidator tagValidator); @Override void update(Tag tag); @Override void add(Tag tag); @Override Integer add(Stream<Tag> tagStream); @Override void update(Stream<Tag> tagStream); }
TagRepositoryValidationDecorator extends AbstractRepositoryDecorator<Tag> { @Override public void add(Tag tag) { tagValidator.validate(tag); super.add(tag); } TagRepositoryValidationDecorator(
      Repository<Tag> delegateRepository, TagValidator tagValidator); @Override void update(Tag tag); @Override void add(Tag tag); @Override Integer add(Stream<Tag> tagStream); @Override void update(Stream<Tag> tagStream);  }