1 19 20 package com.sslexplorer.applications.actions; 21 22 import java.util.Enumeration ; 23 import java.util.HashMap ; 24 25 import javax.servlet.http.HttpServletRequest ; 26 27 import org.apache.commons.logging.Log; 28 import org.apache.commons.logging.LogFactory; 29 import org.apache.struts.Globals; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 import org.apache.struts.action.ActionMessages; 33 34 import com.sslexplorer.applications.ApplicationLauncherType; 35 import com.sslexplorer.applications.ApplicationShortcut; 36 import com.sslexplorer.applications.ApplicationShortcutEventConstants; 37 import com.sslexplorer.applications.ApplicationsPlugin; 38 import com.sslexplorer.core.BundleActionMessage; 39 import com.sslexplorer.core.CoreAttributeConstants; 40 import com.sslexplorer.core.CoreEvent; 41 import com.sslexplorer.core.CoreServlet; 42 import com.sslexplorer.core.RedirectWithMessages; 43 import com.sslexplorer.extensions.ExtensionDescriptor; 44 import com.sslexplorer.extensions.ExtensionBundle.ExtensionBundleStatus; 45 import com.sslexplorer.extensions.store.ExtensionStore; 46 import com.sslexplorer.policyframework.LaunchSession; 47 import com.sslexplorer.policyframework.Resource; 48 import com.sslexplorer.policyframework.ResourceAccessEvent; 49 import com.sslexplorer.policyframework.actions.AbstractLaunchAction; 50 import com.sslexplorer.security.SessionInfo; 51 52 62 public class LaunchApplicationAction extends AbstractLaunchAction { 63 64 final static Log log = LogFactory.getLog(LaunchApplicationAction.class); 65 66 70 public LaunchApplicationAction() { 71 super(ApplicationsPlugin.APPLICATION_SHORTCUT_RESOURCE_TYPE, 72 SessionInfo.MANAGEMENT_CONSOLE_CONTEXT | SessionInfo.USER_CONSOLE_CONTEXT); 73 } 74 75 80 protected boolean isAgentRequired(Resource resource) { 81 ApplicationShortcut shortcut = (ApplicationShortcut) resource; 82 try { 83 ExtensionDescriptor descriptor = ExtensionStore.getInstance().getExtensionDescriptor(shortcut.getApplication()); 84 return ((ApplicationLauncherType) descriptor.getExtensionType()).isAgentRequired(shortcut, descriptor); 85 } catch (Exception e) { 86 log.error("Failed to determine if agent is required. Assuming not."); 87 return false; 88 } 89 } 90 91 98 protected ActionForward launch(ActionMapping mapping, LaunchSession launchSession, HttpServletRequest request, String returnTo) 99 throws Exception { 100 ApplicationShortcut shortcut = (ApplicationShortcut) launchSession.getResource(); 101 ExtensionDescriptor descriptor = ExtensionStore.getInstance().getExtensionDescriptor(shortcut.getApplication()); 102 HashMap <String , String > parameters = new HashMap <String , String >(); 103 Enumeration e = request.getParameterNames(); 104 while (e.hasMoreElements()) { 105 String nameParam = (String ) e.nextElement(); 106 parameters.put(nameParam, request.getParameter(nameParam)); 107 } 108 109 try { 111 if(descriptor.getApplicationBundle().getStatus() != ExtensionBundleStatus.ACTIVATED) { 112 throw new Exception ("Extension bundle " + descriptor.getApplicationBundle().getId() +" is not activated, cannot launch applicaiton."); 113 } 114 ActionForward fwd = ((ApplicationLauncherType) descriptor.getExtensionType()).launch(parameters, 115 descriptor, 116 shortcut, 117 mapping, 118 launchSession, 119 returnTo, 120 request); 121 122 CoreServlet.getServlet().fireCoreEvent(new ResourceAccessEvent(this, 123 ApplicationShortcutEventConstants.APPLICATION_SHORTCUT_LAUNCHED, 124 launchSession.getResource(), 125 launchSession.getPolicy(), 126 launchSession.getSession(), 127 CoreEvent.STATE_SUCCESSFUL).addAttribute(CoreAttributeConstants.EVENT_ATTR_APPLICATION_NAME, 128 descriptor.getName()).addAttribute(CoreAttributeConstants.EVENT_ATTR_APPLICATION_ID, descriptor.getId())); 129 130 134 if (fwd == null) { 135 ActionMessages msgs = new ActionMessages(); 136 msgs.add(Globals.MESSAGE_KEY, new BundleActionMessage(ApplicationsPlugin.MESSAGE_RESOURCES_KEY, 137 "launchApplication.launched", 138 shortcut.getResourceName())); 139 saveMessages(request, msgs); 140 return new RedirectWithMessages(returnTo, request); 141 } 142 return fwd; 143 } catch (Exception ex) { 144 CoreServlet.getServlet().fireCoreEvent(new ResourceAccessEvent(this, 145 ApplicationShortcutEventConstants.APPLICATION_SHORTCUT_LAUNCHED, 146 launchSession.getSession(), 147 ex).addAttribute(CoreAttributeConstants.EVENT_ATTR_APPLICATION_NAME, descriptor.getName()) 148 .addAttribute(CoreAttributeConstants.EVENT_ATTR_APPLICATION_ID, descriptor.getId())); 149 throw ex; 150 151 } 152 } 153 } 154 | Popular Tags |