mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[dwdunwetter] Improve server problem handling (#15405)
* Fix #14691 * Add country tag --------- Signed-off-by: lsiepel <leosiepel@gmail.com> Signed-off-by: Leo Siepel <leosiepel@gmail.com>
This commit is contained in:
parent
55789bd792
commit
3b30d5ab11
@ -51,10 +51,14 @@ public class DwdWarningDataAccess {
|
||||
stringBuilder.append("&CQL_FILTER=");
|
||||
stringBuilder.append(URLEncoder.encode("WARNCELLID LIKE '" + cellId + "'", StandardCharsets.UTF_8));
|
||||
logger.debug("Refreshing Data for cell {}", cellId);
|
||||
String rawData = HttpUtil.executeUrl("GET", stringBuilder.toString(), 5000);
|
||||
String rawData = getByURL(stringBuilder.toString());
|
||||
logger.trace("Raw request: {}", stringBuilder);
|
||||
logger.trace("Raw response: {}", rawData);
|
||||
|
||||
if (rawData == null || !rawData.startsWith("<?xml") || !rawData.contains("FeatureCollection")) {
|
||||
logger.warn("Communication error occurred while getting data, response is not in expected XML-format");
|
||||
return "";
|
||||
}
|
||||
return rawData;
|
||||
} catch (IOException e) {
|
||||
logger.warn("Communication error occurred while getting data: {}", e.getMessage());
|
||||
@ -63,4 +67,8 @@ public class DwdWarningDataAccess {
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public String getByURL(String url) throws IOException {
|
||||
return HttpUtil.executeUrl("GET", url, 5000);
|
||||
}
|
||||
}
|
||||
|
@ -308,6 +308,6 @@ public class DwdWarningsData {
|
||||
*/
|
||||
protected void setDataAccess(DwdWarningDataAccess dataAccess) {
|
||||
dataAccessCached = new ExpiringCache<>(Duration.ofMinutes(MIN_REFRESH_WAIT_MINUTES),
|
||||
() -> dataAccess.getDataFromEndpoint(""));
|
||||
() -> dataAccess.getDataFromEndpoint("TestCity"));
|
||||
}
|
||||
}
|
||||
|
@ -7,5 +7,5 @@
|
||||
<name>DWD Unwetter Binding</name>
|
||||
<description>This is the binding for DWD Unwetter.</description>
|
||||
<connection>cloud</connection>
|
||||
|
||||
<countries>de</countries>
|
||||
</addon:addon>
|
||||
|
@ -0,0 +1,76 @@
|
||||
/**
|
||||
* Copyright (c) 2010-2023 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.dwdunwetter.internal.dto;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Tests for {@link org.openhab.binding.dwdunwetter.internal.dto.DwdWarningsDataAccess}
|
||||
*
|
||||
* @author Leo Siepel - Initial contribution
|
||||
*/
|
||||
public class DwdWarningsDataAccessTest {
|
||||
private TestDataProvider testDataProvider = new TestDataProvider();
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() throws IOException {
|
||||
this.testDataProvider = new TestDataProvider();
|
||||
loadXmlFromFile();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullOrBlank() {
|
||||
assertEquals(testDataProvider.getDataFromEndpoint(null), "");
|
||||
assertEquals(testDataProvider.getDataFromEndpoint(""), "");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidResponse() {
|
||||
TestDataProvider testDataProvider = new TestDataProvider();
|
||||
testDataProvider.rawData = "Server is not returning xml";
|
||||
assertEquals(testDataProvider.getDataFromEndpoint("TestCity"), "");
|
||||
}
|
||||
|
||||
private void loadXmlFromFile() throws IOException {
|
||||
InputStream stream = getClass().getResourceAsStream("warnings.xml");
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8));
|
||||
String line = null;
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
while ((line = reader.readLine()) != null) {
|
||||
stringWriter.write(line);
|
||||
}
|
||||
reader.close();
|
||||
testDataProvider.rawData = stringWriter.toString();
|
||||
}
|
||||
|
||||
private class TestDataProvider extends DwdWarningDataAccess {
|
||||
|
||||
private String rawData = "";
|
||||
|
||||
@Override
|
||||
public String getByURL(String url) {
|
||||
return rawData;
|
||||
}
|
||||
}
|
||||
}
|
@ -169,7 +169,7 @@ public class DwdWarningsDataTest {
|
||||
private String rawData = "";
|
||||
|
||||
@Override
|
||||
public String getDataFromEndpoint(String cellId) {
|
||||
public String getByURL(String url) {
|
||||
return rawData;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user