/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.gui.perspectives; import java.util.List; import javax.faces.application.FacesMessage; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.cloud.Server; import org.rhq.core.gui.util.FacesContextUtility; import org.rhq.enterprise.gui.util.EnterpriseFacesContextUtility; import org.rhq.enterprise.server.util.LookupUtil; /** * Bean dynamically provides menu information used by menu.xhtml. This bean should be viewed * concurrently with menu.xhtml and it's designed to provide static or dynamic menu content * for menu.xhtml. * * @author Simeon Pinder * @author Jay Shaughnessy * */ //@Name("PerspectiveUIBean") //@Scope(ScopeType.PAGE) public class PerspectiveUIBean { //PerspectiveManagerLocal perspectiveManager = LookupUtil.getPerspectiveManager(); public List<?> getCoreMenu() { Subject subject = EnterpriseFacesContextUtility.getSubject(); List<?> result = null; try { //result = perspectiveManager.getMenu(subject); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to get core menu.", e); } return result; } /** * Using the required request parameter 'targetUrlKey', as set in the extension, resolve that key into * the targetUrl for the extension's content. * * @return null if 'targetUrlKey' param is invalid. */ public String getUrlViaKey() { String targetUrlKey = FacesContextUtility.getRequiredRequestParameter("targetUrlKey"); String result = null; try { // result = perspectiveManager.getUrlViaKey(Integer.valueOf(targetUrlKey)); // result = addContextParams(result); } catch (NumberFormatException e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Required request parameter 'targetUrlKey' was not numeric: " + targetUrlKey, e); } catch (Exception e) { FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Could not get url for targetUrlKey: " + targetUrlKey, e); } return result; } private String addContextParams(String url) { StringBuilder sb = new StringBuilder(url); Server server = LookupUtil.getServerManager().getServer(); String host = server.getAddress(); String port = String.valueOf(server.getPort()); Subject subject = EnterpriseFacesContextUtility.getSubject(); String username = subject.getName(); String sessionId = String.valueOf(subject.getSessionId()); String resourceId = FacesContextUtility.getOptionalRequestParameter("id", "-1"); addContextParam(sb, "rhqServerHost", host, url.contains("?") ? "&" : "?"); addContextParam(sb, "rhqServerPort", port, "&"); addContextParam(sb, "rhqUsername", username, "&"); addContextParam(sb, "rhqSessionId", sessionId, "&"); if (!"-1".equals(resourceId)) { addContextParam(sb, "rhqResourceId", resourceId, "&"); } return sb.toString(); } private void addContextParam(StringBuilder sb, String name, String value, String separator) { sb.append(separator); sb.append(name); sb.append("="); sb.append(value); } }