\r
«generateGetLength»\r
\r
+ «generateGetRange»\r
+\r
}\r
'''\r
\r
\r
def private generateGetLength() '''\r
«IF restrictions != null && !(restrictions.lengthConstraints.empty)»\r
- public static «List.importedName»<«Range.importedName»<Integer>> getLength() {\r
- final «List.importedName»<«Range.importedName»<Integer>> result = new «ArrayList.importedName»<>();\r
+ «val clazz = restrictions.lengthConstraints.iterator.next.min.class»\r
+ public static «List.importedName»<«Range.importedName»<«clazz.importedName»>> length() {\r
+ final «List.importedName»<«Range.importedName»<«clazz.importedName»>> result = new «ArrayList.importedName»<>();\r
«FOR r : restrictions.lengthConstraints»\r
- result.add(«Range.importedName».closed(«r.min», «r.max»));\r
+ result.add(«Range.importedName».closed(new «clazz.importedName»("«r.min»"), new «clazz.importedName»("«r.max»")));\r
«ENDFOR»\r
return result;\r
}\r
'''\r
\r
def private generateGetRange() '''\r
- «IF restrictions != null && !(restrictions.lengthConstraints.empty)»\r
- public static «List.importedName»<«Range.importedName»<Integer>> getLength() {\r
- final «List.importedName»<«Range.importedName»<Integer>> result = new «ArrayList.importedName»<>();\r
- «List.importedName»<«Range.importedName»<«Integer.importedName»>> lengthConstraints = new «ArrayList.importedName»<>(); \r
- «FOR r : restrictions.lengthConstraints»\r
- result.add(«Range.importedName».closed(«r.min», «r.max»));\r
+ «IF restrictions != null && !(restrictions.rangeConstraints.empty)»\r
+ «val clazz = restrictions.rangeConstraints.iterator.next.min.class»\r
+ public static «List.importedName»<«Range.importedName»<«clazz.importedName»>> range() {\r
+ final «List.importedName»<«Range.importedName»<«clazz.importedName»>> result = new «ArrayList.importedName»<>();\r
+ «FOR r : restrictions.rangeConstraints»\r
+ result.add(«Range.importedName».closed(new «clazz.importedName»("«r.min»"), new «clazz.importedName»("«r.max»")));\r
«ENDFOR»\r
return result;\r
}\r
«ENDIF»\r
- '''\r
+ '''
\r
}\r
* @param clazz
* class to test
*/
- static void assertContainsGetLength(Class<?> clazz) {
+ static void assertContainsGetLengthOrRange(Class<?> clazz, boolean isLength) {
try {
- Method m = clazz.getDeclaredMethod("getLength");
+ Method m = clazz.getDeclaredMethod(isLength ? "length" : "range");
java.lang.reflect.Type returnType = m.getGenericReturnType();
assertTrue("Return type of getLength method must be ParameterizedType",
returnType instanceof ParameterizedType);
args = pRange.getActualTypeArguments();
assertEquals(1, args.length);
- java.lang.reflect.Type integer = args[0];
- assertEquals("class java.lang.Integer", integer.toString());
} catch (NoSuchMethodException e) {
- throw new AssertionError("Method getLength does not exists in class " + clazz.getSimpleName());
+ throw new AssertionError("Method length()/range() does not exists in class " + clazz.getSimpleName());
}
}
assertContainsDefaultMethods(int32Ext1Class);
assertContainsMethod(int32Ext1Class, Integer.class, GET_VAL);
defInst = assertContainsMethod(int32Ext1Class, int32Ext1Class, "getDefaultInstance", String.class);
- assertEquals(5, int32Ext1Class.getDeclaredMethods().length);
+ assertContainsGetLengthOrRange(int32Ext1Class, false);
+ assertEquals(6, int32Ext1Class.getDeclaredMethods().length);
List<Range<Integer>> rangeConstraints = new ArrayList<>();
rangeConstraints.add(Range.closed(new Integer("2"), new Integer("2147483647")));
assertEquals(3, int32Ext2Class.getDeclaredConstructors().length);
assertContainsMethod(int32Ext2Class, String.class, "toString");
defInst = assertContainsMethod(int32Ext2Class, int32Ext2Class, "getDefaultInstance", String.class);
- assertEquals(2, int32Ext2Class.getDeclaredMethods().length);
+ assertContainsGetLengthOrRange(int32Ext2Class, false);
+ assertEquals(3, int32Ext2Class.getDeclaredMethods().length);
rangeConstraints.clear();
rangeConstraints.add(Range.closed(new Integer("3"), new Integer("9")));
assertContainsMethod(stringExt1Class, String.class, GET_VAL);
defInst = assertContainsMethod(stringExt1Class, stringExt1Class, "getDefaultInstance", String.class);
assertContainsDefaultMethods(stringExt1Class);
- assertContainsGetLength(stringExt1Class);
+ assertContainsGetLengthOrRange(stringExt1Class, true);
assertEquals(6, stringExt1Class.getDeclaredMethods().length);
List<Range<Integer>> lengthConstraints = new ArrayList<>();
assertContainsConstructor(stringExt2Class, stringExt2Class);
assertContainsConstructor(stringExt2Class, stringExt1Class);
assertEquals(3, stringExt2Class.getDeclaredConstructors().length);
- assertContainsGetLength(stringExt2Class);
+ assertContainsGetLengthOrRange(stringExt2Class, true);
defInst = assertContainsMethod(stringExt2Class, stringExt2Class, "getDefaultInstance", String.class);
assertEquals(2, stringExt2Class.getDeclaredMethods().length);
assertContainsMethod(myDecimalTypeClass, BigDecimal.class, GET_VAL);
assertContainsDefaultMethods(myDecimalTypeClass);
defInst = assertContainsMethod(myDecimalTypeClass, myDecimalTypeClass, "getDefaultInstance", String.class);
- assertEquals(5, myDecimalTypeClass.getDeclaredMethods().length);
+ assertContainsGetLengthOrRange(myDecimalTypeClass, false);
+ assertEquals(6, myDecimalTypeClass.getDeclaredMethods().length);
List<Range<BigDecimal>> decimalRangeConstraints = new ArrayList<>();
decimalRangeConstraints.add(Range.closed(new BigDecimal("1.5"), new BigDecimal("5.5")));