Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions common/src/main/java/com/genexus/CommonUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -2732,7 +2732,7 @@ public static Object convertObjectTo(Object obj, Class toClass, boolean fail) th
try
{

if (objStr.isEmpty())
if (objStr.isEmpty() || objStr.equals("null"))
objStr ="0";
else
{
Expand Down Expand Up @@ -2771,13 +2771,13 @@ else if (className.equals("long") || className.equals("java.lang.Long") || class
}
else if (className.equals("string") || className.indexOf("java.lang.String") != -1)
{
return objStr;
return objStr.equals("null") ? "" : objStr;
}
else if (className.equals("double") || className.equals("java.lang.Double") || className.equals("[D"))
{
try
{
if (objStr.isEmpty())
if (objStr.isEmpty() || objStr.equals("null"))
objStr = "0";
return Double.valueOf(objStr);
}
Expand All @@ -2792,7 +2792,7 @@ else if (className.equals("float") || className.equals("java.lang.Float") || cla
{
try
{
if (objStr.isEmpty())
if (objStr.isEmpty() || objStr.equals("null"))
objStr = "0";
return Float.valueOf(objStr);
}
Expand All @@ -2807,7 +2807,7 @@ else if (className.equals("boolean") || className.equals("java.lang.Boolean") ||
{
try
{
return Boolean.valueOf(objStr);
return objStr.equals("null") ? false : Boolean.valueOf(objStr);
}
catch(Exception e)
{
Expand All @@ -2820,7 +2820,7 @@ else if (className.indexOf("java.math.BigDecimal") != -1)
{
try
{
if (objStr.isEmpty())
if (objStr.isEmpty() || objStr.equals("null"))
objStr = "0";
return DecimalUtil.stringToDec(objStr);
}
Expand All @@ -2834,7 +2834,9 @@ else if (className.indexOf("java.math.BigDecimal") != -1)
else if (className.indexOf("java.util.Date") != -1)
{
try {
if (objStr.indexOf('/')>0) //Json CallAjax
if (objStr.equals("null"))
return nullDate();
else if (objStr.indexOf('/')>0) //Json CallAjax
return LocalUtil.getISO8601Date(objStr);
else
return new java.text.SimpleDateFormat("EEE MMM dd HH:mm:ss zzz Z").parse(objStr);
Expand All @@ -2845,7 +2847,7 @@ else if (className.indexOf("java.util.Date") != -1)
else if(className.indexOf("java.util.UUID") != -1)
{
try {
return UUID.fromString(objStr);
return objStr.equals("null") ? new UUID(0,0) : UUID.fromString(objStr);
}catch(IllegalArgumentException e)
{
if(fail)
Expand Down
132 changes: 131 additions & 1 deletion java/src/test/java/com/genexus/TestCommonUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.genexus.specific.java.LogManager;
import org.junit.Assert;
import org.junit.Test;
import java.util.Date;
import java.util.UUID;

public class TestCommonUtil {

Expand Down Expand Up @@ -114,4 +116,132 @@ public void testFormat() {
Assert.assertEquals(expectedResult, result);
}

}
@Test
public void testConvertObjectTo() {
initialize();

Object obj;
Object result;

// Test case 1: Pass in a non-null integer
obj = 1;
try{
Class integerClass = Class.forName("java.lang.Integer");
result = CommonUtil.convertObjectTo(obj, integerClass, true);
Assert.assertEquals(Integer.valueOf("1"), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 2: Pass in a "null" integer
obj = "null";
try{
Class integerClass = Class.forName("java.lang.Integer");
result = CommonUtil.convertObjectTo(obj, integerClass, true);
Assert.assertEquals(Integer.valueOf("0"), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 3: Pass in a non-null string
obj = "Hello world";
try {
Class stringClass = Class.forName("java.lang.String");
result = CommonUtil.convertObjectTo(obj, stringClass, true);
Assert.assertEquals("Hello world", result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 4: Pass in a "null" string
obj = "null";
try{
Class stringClass = Class.forName("java.lang.String");
result = CommonUtil.convertObjectTo(obj, stringClass, true);
Assert.assertEquals("", result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 5: Pass in a non-null decimal
obj = 1.5;
try{
Class decimalClass = Class.forName("java.lang.Float");
result = CommonUtil.convertObjectTo(obj, decimalClass, true);
Assert.assertEquals(Float.valueOf("1.5"), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 6: Pass in a "null" decimal
obj = "null";
try{
Class decimalClass = Class.forName("java.lang.Float");
result = CommonUtil.convertObjectTo(obj, decimalClass, true);
Assert.assertEquals(Float.valueOf("0"), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 7: Pass in a non-null boolean
obj = true;
try{
Class booleanClass = Class.forName("java.lang.Boolean");
result = CommonUtil.convertObjectTo(obj, booleanClass, true);
Assert.assertEquals(true, result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 7: Pass in a "null" boolean
obj = "null";
try{
Class booleanClass = Class.forName("java.lang.Boolean");
result = CommonUtil.convertObjectTo(obj, booleanClass, true);
Assert.assertEquals(false, result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 8: Pass in a non-null date
obj = new Date(0);
try{
Class dateClass = Class.forName("java.util.Date");
result = CommonUtil.convertObjectTo(obj, dateClass, true);
Assert.assertEquals(LocalUtil.getISO8601Date("0001/01/01"), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 9: Pass in a "null" date
obj = "null";
try{
Class dateClass = Class.forName("java.util.Date");
result = CommonUtil.convertObjectTo(obj, dateClass, true);
Assert.assertEquals(CommonUtil.nullDate(), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 9: Pass in a non-null uuid
obj = UUID.randomUUID();
try{
Class uudiClass = Class.forName("java.util.UUID");
result = CommonUtil.convertObjectTo(obj, uudiClass, true);
Assert.assertEquals(UUID.fromString(obj.toString()), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}

// Test case 10: Pass in a "null" uuid
obj = "null";
try{
Class uudiClass = Class.forName("java.util.UUID");
result = CommonUtil.convertObjectTo(obj, uudiClass, true);
Assert.assertEquals(new UUID(0,0), result);
} catch (Exception e){
Assert.fail("Test failed " + e);
}
}

}