React correctly when parameters are not given.
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ImageLinkFilter.java
index eea9121..ea863f9 100644 (file)
@@ -23,6 +23,7 @@ import java.util.Map;
 
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.data.Image;
+import net.pterodactylus.util.number.Numbers;
 import net.pterodactylus.util.template.Filter;
 import net.pterodactylus.util.template.Template;
 import net.pterodactylus.util.template.TemplateContext;
@@ -30,7 +31,6 @@ import net.pterodactylus.util.template.TemplateContextFactory;
 import net.pterodactylus.util.template.TemplateParser;
 
 import com.google.common.base.Optional;
-import com.google.common.primitives.Ints;
 
 /**
  * Template filter that turns an {@link Image} into an HTML <img> tag,
@@ -62,25 +62,22 @@ public class ImageLinkFilter implements Filter {
                this.templateContextFactory = templateContextFactory;
        }
 
-       /**
-        * {@inheritDoc}
-        */
        @Override
        public Object format(TemplateContext templateContext, Object data, Map<String, Object> parameters) {
                Image image = null;
                if (data instanceof String) {
-                       image = core.getImage((String) data, false);
+                       image = core.getImage((String) data).orNull();
                } else if (data instanceof Image) {
                        image = (Image) data;
                }
                if (image == null) {
                        return null;
                }
-               String imageClass = String.valueOf(parameters.get("class"));
-               int maxWidth = Optional.fromNullable(Ints.tryParse(String.valueOf(parameters.get("max-width")))).or(Integer.MAX_VALUE);
-               int maxHeight = Optional.fromNullable(Ints.tryParse(String.valueOf(parameters.get("max-height")))).or(Integer.MAX_VALUE);
-               String mode = String.valueOf(parameters.get("mode"));
-               String title = String.valueOf(parameters.get("title"));
+               String imageClass = getParameterAsString(parameters, "class");
+               int maxWidth = Numbers.safeParseInteger(parameters.get("max-width"), Integer.MAX_VALUE);
+               int maxHeight = Numbers.safeParseInteger(parameters.get("max-height"), Integer.MAX_VALUE);
+               String mode = getParameterAsString(parameters, "mode");
+               String title = getParameterAsString(parameters, "title");
 
                TemplateContext linkTemplateContext = templateContextFactory.createTemplateContext();
                linkTemplateContext.set("class", imageClass);
@@ -114,4 +111,9 @@ public class ImageLinkFilter implements Filter {
                return stringWriter.toString();
        }
 
+       private static String getParameterAsString(Map<String, Object> parameters, String key) {
+               Object parameter = parameters.get(key);
+               return (parameter == null) ? null : String.valueOf(parameter);
+       }
+
 }