diff --git a/source/net/filebot/format/ExpressionBindings.java b/source/net/filebot/format/ExpressionBindings.java index 354c66b0..d38ca71c 100644 --- a/source/net/filebot/format/ExpressionBindings.java +++ b/source/net/filebot/format/ExpressionBindings.java @@ -4,6 +4,7 @@ import static net.filebot.util.ExceptionUtilities.*; import java.lang.reflect.Method; import java.util.AbstractMap; +import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -42,10 +43,21 @@ public class ExpressionBindings extends AbstractMap implements B } protected boolean isUndefined(Object value) { - if (value instanceof CharSequence) { - return ((CharSequence) value).length() <= 0; + if (value == null) { + return true; } - return value == null; + + // treat empty string as null + if (value instanceof CharSequence && value.toString().isEmpty()) { + return true; + } + + // treat empty list as null + if (value instanceof Collection && ((Collection) value).isEmpty()) { + return true; + } + + return false; } public Object getBindingBean() { diff --git a/source/net/filebot/format/ExpressionFormatFunctions.java b/source/net/filebot/format/ExpressionFormatFunctions.java index 333c4fa3..fbd67f75 100644 --- a/source/net/filebot/format/ExpressionFormatFunctions.java +++ b/source/net/filebot/format/ExpressionFormatFunctions.java @@ -7,6 +7,7 @@ import static net.filebot.util.RegularExpressions.*; import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -38,9 +39,17 @@ public class ExpressionFormatFunctions { return null; } } + + // treat empty string as null if (object instanceof CharSequence && object.toString().isEmpty()) { return null; } + + // treat empty list as null + if (object instanceof Collection && ((Collection) object).isEmpty()) { + return null; + } + return object; }