diff --git a/src/main/java/com/aliyun/tea/TeaModel.java b/src/main/java/com/aliyun/tea/TeaModel.java index 0130870..4eefd3b 100644 --- a/src/main/java/com/aliyun/tea/TeaModel.java +++ b/src/main/java/com/aliyun/tea/TeaModel.java @@ -277,7 +277,7 @@ public void validate() { minLength = validation.minLength(); maximum = validation.maximum(); minimum = validation.minimum(); - if (!"".equals(pattern) || maxLength > 0 || minLength > 0 || maximum != Double.MAX_VALUE || minimum != Double.MIN_VALUE) { + if (!"".equals(pattern) || maxLength > 0 || minLength > 0 || maximum != Double.MAX_VALUE || minimum != -Double.MAX_VALUE) { determineType(fields[i].getType(), object, pattern, maxLength, minLength, maximum, minimum, fields[i].getName()); } } diff --git a/src/main/java/com/aliyun/tea/Validation.java b/src/main/java/com/aliyun/tea/Validation.java index a80afc1..86c79aa 100644 --- a/src/main/java/com/aliyun/tea/Validation.java +++ b/src/main/java/com/aliyun/tea/Validation.java @@ -14,7 +14,7 @@ double maximum() default Double.MAX_VALUE; - double minimum() default Double.MIN_VALUE; + double minimum() default -Double.MAX_VALUE; boolean required() default false; } diff --git a/src/test/java/com/aliyun/tea/TeaModelTest.java b/src/test/java/com/aliyun/tea/TeaModelTest.java index c87c454..81efe40 100644 --- a/src/test/java/com/aliyun/tea/TeaModelTest.java +++ b/src/test/java/com/aliyun/tea/TeaModelTest.java @@ -453,6 +453,10 @@ public static class ValidateParamModel extends TeaModel { public Map hasStringPattern = new HashMap<>(); @Validation(required = true) public String requiredTrue = "test"; + @Validation(maximum = 10) + public Long minNum; + @Validation(minimum = -10) + public Long maxNum; } @Test @@ -558,6 +562,37 @@ public void validateTest() throws NoSuchMethodException { } catch (Exception e) { Assert.assertEquals("com.aliyun.tea.TeaModelTest$Hello.message regular match failed", e.getMessage()); } + + try { + validateParamModel.requiredTrue = "test"; + Hello[] hellos = new Hello[]{new Hello()}; + hellos[0].message = "test"; + validateParamModel.hasPattern.put("test", hellos); + validateParamModel.hasPattern.put("test", hellos); + validateParamModel.maxNum = Long.MAX_VALUE; + validateParamModel.minNum = Long.MIN_VALUE; + validateParamModel.validate(); + } catch (Exception e) { + Assert.fail(); + } + + try { + validateParamModel.requiredTrue = "test"; + validateParamModel.maxNum = -11L; + validateParamModel.validate(); + Assert.fail(); + } catch (Exception e) { + Assert.assertEquals("com.aliyun.tea.TeaModelTest$ValidateParamModel.maxNum less than minimum", e.getMessage()); + } + + try { + validateParamModel.requiredTrue = "test"; + validateParamModel.minNum = 11L; + validateParamModel.validate(); + Assert.fail(); + } catch (Exception e) { + Assert.assertEquals("com.aliyun.tea.TeaModelTest$ValidateParamModel.minNum exceeds the maximum", e.getMessage()); + } } @Test @@ -566,7 +601,7 @@ public void buildMapTest() { Assert.assertNull(TeaModel.buildMap(teaModel)); teaModel = new ValidateParamModel(); - Assert.assertEquals(6, TeaModel.buildMap(teaModel).size()); + Assert.assertEquals(8, TeaModel.buildMap(teaModel).size()); } @Test