package com.atlassian.labs.speakeasy.ui.jira; import com.atlassian.crowd.embedded.api.User; import com.atlassian.jira.plugin.profile.OptionalUserProfilePanel; import com.atlassian.jira.plugin.profile.ViewProfilePanel; import com.atlassian.jira.plugin.profile.ViewProfilePanelModuleDescriptor; import com.atlassian.labs.speakeasy.external.UnauthorizedAccessException; import com.atlassian.labs.speakeasy.ui.UserProfileRenderer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import webwork.action.ActionContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.StringWriter; /** * */ public class SpeakeasyViewProfilePanel implements OptionalUserProfilePanel, ViewProfilePanel { private final UserProfileRenderer renderer; private final static Logger log = LoggerFactory.getLogger(SpeakeasyViewProfilePanel.class); public SpeakeasyViewProfilePanel(UserProfileRenderer renderer) { this.renderer = renderer; } @Override public void init(ViewProfilePanelModuleDescriptor viewProfilePanelModuleDescriptor) { } @Override public String getHtml(User user) { HttpServletRequest req = ActionContext.getRequest(); HttpServletResponse resp = ActionContext.getResponse(); StringWriter writer = new StringWriter(); try { renderer.render(req, resp, writer, false); } catch (UnauthorizedAccessException e) { writer.write("Unauthorized access: " + e.getMessage()); } catch (IOException e) { writer.write("Unable to render panel: " + e.getMessage()); log.error("Error rendering speakeasy panel", e); } return writer.toString(); } @Override public boolean showPanel(User profileUser, User currentUser) { return renderer.shouldRender(currentUser.getName()); } }