Browse Source

Merge pull request #5492 from smatvienko-tb/isNumber_fix

[3.3.3] fixed EntityDataAdapter.convertValue that convert "500D" (valid Java number) into "500.0" as double
pull/5744/head
Igor Kulikov 5 years ago
committed by GitHub
parent
commit
6a45abcd3b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      dao/pom.xml
  2. 4
      dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java
  3. 29
      dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java

2
dao/pom.xml

@ -246,7 +246,7 @@
<configuration>
<excludes>
<exclude>**/sql/*Test.java</exclude>
<exclude>**/sql/*/*Test.java</exclude>
<exclude>**/sql/*/*DaoTest.java</exclude>
<exclude>**/psql/*Test.java</exclude>
<exclude>**/nosql/*Test.java</exclude>
</excludes>

4
dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java

@ -79,11 +79,11 @@ public class EntityDataAdapter {
return entityData;
}
private static String convertValue(Object value) {
static String convertValue(Object value) {
if (value != null) {
String strVal = value.toString();
// check number
if (NumberUtils.isNumber(strVal)) {
if (strVal.length() > 0 && NumberUtils.isParsable(strVal)) {
try {
long longVal = Long.parseLong(strVal);
return Long.toString(longVal);

29
dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java

@ -0,0 +1,29 @@
/**
* Copyright © 2016-2021 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.dao.sql.query;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class EntityDataAdapterTest {
@Test
public void testConvertValue() {
assertThat(EntityDataAdapter.convertValue("500")).isEqualTo("500");
assertThat(EntityDataAdapter.convertValue("500D")).isEqualTo("500D"); //do not convert to Double !!!
}
}
Loading…
Cancel
Save