]> git.basschouten.com Git - openhab-addons.git/commitdiff
[ecobee] Remove org.apache.commons (#14403)
authorlsiepel <leosiepel@gmail.com>
Wed, 22 Feb 2023 12:50:53 +0000 (13:50 +0100)
committerGitHub <noreply@github.com>
Wed, 22 Feb 2023 12:50:53 +0000 (13:50 +0100)
Signed-off-by: lsiepel <leosiepel@gmail.com>
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeApi.java
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/api/EcobeeAuth.java
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeSensorThingHandler.java
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeThermostatBridgeHandler.java
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/ExceptionUtils.java [new file with mode: 0644]
bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/StringUtils.java [new file with mode: 0644]

index b245a4c83f90bee7cce2ccd58c6ca8df6b0c06c0..e2e6f6396350de142015466f117150f5b5768ba7 100644 (file)
@@ -26,7 +26,6 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.TimeoutException;
 
-import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jetty.client.HttpClient;
@@ -46,6 +45,7 @@ import org.openhab.binding.ecobee.internal.dto.thermostat.summary.RunningDTODese
 import org.openhab.binding.ecobee.internal.dto.thermostat.summary.SummaryResponseDTO;
 import org.openhab.binding.ecobee.internal.function.FunctionRequest;
 import org.openhab.binding.ecobee.internal.handler.EcobeeAccountBridgeHandler;
+import org.openhab.binding.ecobee.internal.util.ExceptionUtils;
 import org.openhab.core.auth.client.oauth2.AccessTokenRefreshListener;
 import org.openhab.core.auth.client.oauth2.AccessTokenResponse;
 import org.openhab.core.auth.client.oauth2.OAuthClientService;
@@ -315,7 +315,7 @@ public class EcobeeApi implements AccessTokenRefreshListener {
     }
 
     private void logIOException(Exception e) {
-        Throwable rootCause = ExceptionUtils.getRootCause(e);
+        Throwable rootCause = ExceptionUtils.getRootThrowable(e);
         if (rootCause instanceof TimeoutException || rootCause instanceof EOFException) {
             // These are "normal" errors and should be logged as DEBUG
             logger.debug("API: Call to Ecobee API failed with exception: {}: {}", rootCause.getClass().getSimpleName(),
index 06713ce0025685e92b5628a8da7b6eec6549c017..a974d2978b03a741ecf7af58bcfe9cb971ed397c 100644 (file)
@@ -18,7 +18,6 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jetty.client.HttpClient;
@@ -29,6 +28,7 @@ import org.eclipse.jetty.http.HttpStatus;
 import org.openhab.binding.ecobee.internal.dto.oauth.AuthorizeResponseDTO;
 import org.openhab.binding.ecobee.internal.dto.oauth.TokenResponseDTO;
 import org.openhab.binding.ecobee.internal.handler.EcobeeAccountBridgeHandler;
+import org.openhab.binding.ecobee.internal.util.ExceptionUtils;
 import org.openhab.core.auth.client.oauth2.AccessTokenResponse;
 import org.openhab.core.auth.client.oauth2.OAuthClientService;
 import org.openhab.core.auth.client.oauth2.OAuthException;
@@ -254,7 +254,7 @@ public class EcobeeAuth {
         } catch (TimeoutException e) {
             logger.debug("TimeoutException: Call to Ecobee API timed out");
         } catch (ExecutionException e) {
-            if (ExceptionUtils.getRootCause(e) instanceof HttpResponseException) {
+            if (ExceptionUtils.getRootThrowable(e) instanceof HttpResponseException) {
                 logger.info("Awaiting entry of PIN in Ecobee portal. Expires in {} minutes",
                         getMinutesUntilPinExpiration());
             } else {
index 5559b02ea272864b4d9e6436403f8f9bae2565d1..c3353276d1a5596d102e40fdab5d17133de20e65 100644 (file)
@@ -17,11 +17,11 @@ import static org.openhab.binding.ecobee.internal.EcobeeBindingConstants.*;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.commons.lang3.text.WordUtils;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.openhab.binding.ecobee.internal.config.EcobeeSensorConfiguration;
 import org.openhab.binding.ecobee.internal.dto.thermostat.RemoteSensorCapabilityDTO;
 import org.openhab.binding.ecobee.internal.dto.thermostat.RemoteSensorDTO;
+import org.openhab.binding.ecobee.internal.util.StringUtils;
 import org.openhab.core.library.unit.Units;
 import org.openhab.core.thing.Channel;
 import org.openhab.core.thing.ChannelUID;
@@ -126,7 +126,7 @@ public class EcobeeSensorThingHandler extends BaseThingHandler {
             ThingBuilder thingBuilder;
             thingBuilder = editThing();
             channel = ChannelBuilder.create(uid, getAcceptedItemType(capability.type))
-                    .withLabel("Sensor " + WordUtils.capitalize(capability.type))
+                    .withLabel("Sensor " + StringUtils.capitalizeWords(capability.type))
                     .withType(getChannelTypeUID(capability.type)).build();
             thingBuilder.withChannel(channel);
             updateThing(thingBuilder.build());
index 1f20011f3d5fa031300128555c582e785e000f7d..20867209653c66b245185a2b363b61f1526e6bb8 100644 (file)
@@ -25,7 +25,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.measure.Unit;
 
-import org.apache.commons.lang3.text.WordUtils;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.ecobee.internal.action.EcobeeActions;
@@ -50,6 +49,7 @@ import org.openhab.binding.ecobee.internal.dto.thermostat.WeatherDTO;
 import org.openhab.binding.ecobee.internal.dto.thermostat.WeatherForecastDTO;
 import org.openhab.binding.ecobee.internal.function.AbstractFunction;
 import org.openhab.binding.ecobee.internal.function.FunctionRequest;
+import org.openhab.binding.ecobee.internal.util.StringUtils;
 import org.openhab.core.i18n.TimeZoneProvider;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
@@ -179,7 +179,7 @@ public class EcobeeThermostatBridgeHandler extends BaseBridgeHandler {
             for (Channel channel : thing.getChannelsOfGroup(group)) {
                 if (isLinked(channel.getUID())) {
                     try {
-                        Field field = selection.getClass().getField("include" + WordUtils.capitalize(group));
+                        Field field = selection.getClass().getField("include" + StringUtils.capitalizeWords(group));
                         logger.trace("ThermostatBridge: Thermostat thing '{}' including object '{}' in selection",
                                 thing.getUID(), field.getName());
                         field.set(selection, Boolean.TRUE);
diff --git a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/ExceptionUtils.java b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/ExceptionUtils.java
new file mode 100644 (file)
index 0000000..c4f7a37
--- /dev/null
@@ -0,0 +1,37 @@
+/**
+ * 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.ecobee.internal.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+/**
+ * The {@link ExceptionUtils} class defines static Exception related methods
+ *
+ * @author Leo Siepel - Initial contribution
+ */
+@NonNullByDefault
+public class ExceptionUtils {
+
+    public static @Nullable Throwable getRootThrowable(@Nullable Throwable throwable) {
+        List<Throwable> list = new ArrayList<>();
+        while (throwable != null && !list.contains(throwable)) {
+            list.add(throwable);
+            throwable = throwable.getCause();
+        }
+        return throwable;
+    }
+}
diff --git a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/StringUtils.java b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/util/StringUtils.java
new file mode 100644 (file)
index 0000000..10460da
--- /dev/null
@@ -0,0 +1,43 @@
+/**
+ * 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.ecobee.internal.util;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
+/**
+ * The {@link StringUtils} class defines static string related methods
+ *
+ * @author Leo Siepel - Initial contribution
+ */
+@NonNullByDefault
+public class StringUtils {
+
+    public static String capitalizeWords(@Nullable String input) {
+        String output = "";
+        if (input != null) {
+            String[] splitted = input.split("\\s+");
+            String[] processed = new String[splitted.length];
+            for (int wordIndex = 0; wordIndex < splitted.length; wordIndex++) {
+                if (splitted[wordIndex].length() > 1) {
+                    processed[wordIndex] = splitted[wordIndex].substring(0, 1).toUpperCase()
+                            + splitted[wordIndex].substring(1);
+                } else {
+                    processed[wordIndex] = splitted[wordIndex].toUpperCase();
+                }
+            }
+            output = String.join(" ", processed);
+        }
+        return output;
+    }
+}