package com.googlecode.tawus.gravatar.components; import java.util.HashMap; import java.util.Map; import org.apache.tapestry5.BindingConstants; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.MarkupWriter; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.ioc.annotations.Inject; import com.googlecode.tawus.gravatar.services.GravatarURLCreator; /** * This component provides gravatar images support for * Tapestry5 * see {@plainlink http://en.gravatar.com/site/implement Gravatar Developer API} * for details * */ public class Gravatar { @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL, allowNull = false) private String email; @Parameter(defaultPrefix = BindingConstants.LITERAL) private Integer size; @Parameter(defaultPrefix = BindingConstants.LITERAL) private String _default; @Parameter(defaultPrefix = BindingConstants.LITERAL) private String rating; @Parameter(defaultPrefix = BindingConstants.LITERAL) private String type; @Parameter(defaultPrefix = BindingConstants.LITERAL, value = "false") private boolean forceDefault; @Inject private ComponentResources resources; @Inject private GravatarURLCreator urlCreator; void beginRender(MarkupWriter writer){ Map<String, String> parameters = getParams(); writer.element("img", "src", urlCreator.createAvatarURL(email, type, parameters)); resources.renderInformalParameters(writer); writer.end(); } private Map<String, String> getParams(){ Map<String, String> parameters = new HashMap<String, String>(); if(size != null){ parameters.put("s", String.valueOf(size)); } if(_default != null){ parameters.put("d", _default); } if(rating != null){ parameters.put("r", rating); } if(type != null){ parameters.put("t", type); } if(forceDefault){ parameters.put("f", "y"); } return parameters; } }