@Override public Map<String, Mappings> getAllMappings() throws RecipientRewriteTableException { return rrt.getAllMappings() .entrySet() .stream() .collect( Guavate.toImmutableMap( entry -> entry.getKey().asString(), entry -> entry.getValue())); }
@Override public Map<String, Mappings> listMappings() throws Exception { return recipientRewriteTable.getAllMappings() .entrySet() .stream() .collect( Guavate.toImmutableMap( entry -> entry.getKey().asString(), Map.Entry::getValue)); }
@Override public void removeErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException { LOGGER.info("Remove error mapping => {} for source: {}", error, source.asString()); removeMapping(source, Mapping.error(error)); }
@Override public void removeRegexMapping(MappingSource source, String regex) throws RecipientRewriteTableException { LOGGER.info("Remove regex mapping => {} for source: {}", regex, source.asString()); removeMapping(source, Mapping.regex(regex)); }
@Override public void addErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException { Mapping mapping = Mapping.error(error); checkDuplicateMapping(source, mapping); LOGGER.info("Add error mapping => {} for source: {}", error, source.asString()); addMapping(source, mapping); }
@Override public void removeAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.address(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); LOGGER.info("Remove address mapping => {} for source: {}", mapping, source.asString()); removeMapping(source, mapping); }
@Override public void removeForwardMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.forward(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); LOGGER.info("Remove forward mapping => {} for source: {}", mapping, source.asString()); removeMapping(source, mapping); }
@Override public void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.group(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); LOGGER.info("Remove group mapping => {} for source: {}", mapping, source.asString()); removeMapping(source, mapping); }
@Override public void addRegexMapping(MappingSource source, String regex) throws RecipientRewriteTableException { try { Pattern.compile(regex); } catch (PatternSyntaxException e) { throw new RecipientRewriteTableException("Invalid regex: " + regex, e); } Mapping mapping = Mapping.regex(regex); checkDuplicateMapping(source, mapping); LOGGER.info("Add regex mapping => {} for source {}", regex, source.asString()); addMapping(source, mapping); }
private void checkDuplicateMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException { Mappings mappings = getUserDomainMappings(source); if (mappings != null && mappings.contains(mapping)) { throw new MappingAlreadyExistsException("Mapping " + mapping + " for " + source.asString() + " already exist!"); } }
@Override public void addAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.address(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); LOGGER.info("Add address mapping => {} for source: {}", mapping, source.asString()); addMapping(source, mapping); }
@Override public void addForwardMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.forward(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); LOGGER.info("Add forward mapping => {} for source: {}", mapping, source.asString()); addMapping(source, mapping); }
@Override public void addGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.group(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); LOGGER.info("Add group mapping => {} for source: {}", mapping, source.asString()); addMapping(source, mapping); }
@Test void getDomainMappingsEmptyMappingsAreFilteredOut() throws RecipientRewriteTableException { MappingSource nonEmptyMapping = MappingSource.fromDomain(Domain.of("abc.com")); MappingSource emptyMapping = MappingSource.fromDomain(Domain.of("def.com")); Map<MappingSource, Mappings> mappings = ImmutableMap.of( nonEmptyMapping, MappingsImpl.fromRawString("domain:a.com"), emptyMapping, MappingsImpl.empty() ); when(recipientRewriteTable.getAllMappings()).thenReturn(mappings); Map<String, List<String>> map = when() .get() .then() .contentType(ContentType.JSON) .statusCode(HttpStatus.OK_200) .extract() .body() .jsonPath() .getMap("."); assertThat(map) .containsKey(nonEmptyMapping.asString()) .doesNotContainKey(emptyMapping.asString()); }