Skip to content

Commit 44e6045

Browse files
committed
Handle exception when querying addresses with hashkey
1 parent d5fe5cf commit 44e6045

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/main/java/net/contargo/iris/address/service/AddressServiceWrapper.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.contargo.iris.address.AddressList;
66
import net.contargo.iris.address.nominatim.service.AddressService;
77
import net.contargo.iris.address.staticsearch.StaticAddress;
8+
import net.contargo.iris.address.staticsearch.service.StaticAddressNotFoundException;
89
import net.contargo.iris.address.staticsearch.service.StaticAddressService;
910
import net.contargo.iris.normalizer.NormalizerService;
1011

@@ -195,12 +196,17 @@ private static List<AddressList> getSimpleAddressList(List<Address> addresses) {
195196
}
196197

197198

199+
@SuppressWarnings("squid:S1166")
198200
public List<Address> getAddressesByQuery(String query) {
199201

200202
List<Address> addresses = new ArrayList<>();
201203

202204
if (HASHKEY_MATCHER.matcher(query).matches()) {
203-
addresses.add(getByHashKey(query));
205+
try {
206+
addresses.add(getByHashKey(query));
207+
} catch (StaticAddressNotFoundException e) {
208+
// ignoring the exception as the query could be resolved by nominatim
209+
}
204210
}
205211

206212
if (addresses.isEmpty()) {

src/test/java/net/contargo/iris/address/service/AddressServiceWrapperUnitTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.contargo.iris.address.AddressList;
66
import net.contargo.iris.address.nominatim.service.AddressService;
77
import net.contargo.iris.address.staticsearch.StaticAddress;
8+
import net.contargo.iris.address.staticsearch.service.StaticAddressNotFoundException;
89
import net.contargo.iris.address.staticsearch.service.StaticAddressService;
910
import net.contargo.iris.normalizer.NormalizerService;
1011

@@ -38,11 +39,13 @@
3839
import static org.mockito.Matchers.any;
3940
import static org.mockito.Matchers.eq;
4041

42+
import static org.mockito.Mockito.doThrow;
4143
import static org.mockito.Mockito.verify;
4244
import static org.mockito.Mockito.verifyZeroInteractions;
4345
import static org.mockito.Mockito.when;
4446

4547
import static java.util.Arrays.asList;
48+
import static java.util.Collections.emptyList;
4649
import static java.util.Collections.singletonList;
4750

4851

@@ -465,4 +468,29 @@ public void getAddressesByQueryWithHashkey() {
465468

466469
verifyZeroInteractions(addressServiceMock);
467470
}
471+
472+
473+
@Test
474+
public void getAddressesByQueryWithHashkeyNotFound() {
475+
476+
doThrow(StaticAddressNotFoundException.class).when(staticAddressServiceMock).findByHashKey("76135");
477+
478+
Address address = new Address();
479+
address.setDisplayName("Gartenstr. 67, Karlsruhe (Südweststadt)");
480+
address.getAddress().put("city", "Karlsruhe");
481+
address.getAddress().put("postcode", "76135");
482+
address.getAddress().put("country_code", "de");
483+
address.getAddress().put("street", "Gartenstr.");
484+
485+
when(addressServiceMock.getAddressesByQuery("76135")).thenReturn(singletonList(address));
486+
487+
when(staticAddressServiceMock.findAddresses("76135", "Karlsruhe", "de")).thenReturn(new AddressList("",
488+
emptyList()));
489+
490+
List<Address> addresses = sut.getAddressesByQuery("76135");
491+
492+
assertThat(addresses, hasSize(1));
493+
assertThat(addresses.get(0).getCity(), is("Karlsruhe"));
494+
assertThat(addresses.get(0).getPostcode(), is("76135"));
495+
}
468496
}

0 commit comments

Comments
 (0)