1 17 package org.apache.geronimo.console.car; 18 19 import java.io.IOException ; 20 import java.net.URL ; 21 import java.util.ArrayList ; 22 import java.util.HashMap ; 23 import java.util.List ; 24 import java.util.Map ; 25 import javax.portlet.ActionRequest; 26 import javax.portlet.ActionResponse; 27 import javax.portlet.PortletException; 28 import javax.portlet.RenderRequest; 29 import javax.portlet.RenderResponse; 30 import javax.security.auth.login.FailedLoginException ; 31 import org.apache.commons.logging.Log; 32 import org.apache.commons.logging.LogFactory; 33 import org.apache.geronimo.console.MultiPageModel; 34 import org.apache.geronimo.console.util.PortletManager; 35 import org.apache.geronimo.system.plugin.PluginList; 36 import org.apache.geronimo.system.plugin.PluginMetadata; 37 import java.util.Collections ; 38 import java.util.Collection ; 39 import java.util.Iterator ; 40 41 46 public class ListHandler extends BaseImportExportHandler { 47 private final static Log log = LogFactory.getLog(ListHandler.class); 48 49 public ListHandler() { 50 super(LIST_MODE, "/WEB-INF/view/car/list.jsp"); 51 } 52 53 public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 54 String repository = (String ) request.getAttribute("repository"); 55 if(repository == null || repository.equals("")) { 56 return INDEX_MODE+BEFORE_ACTION; 57 } 58 response.setRenderParameter("repository", repository); 59 String user = (String ) request.getAttribute("repo-user"); 60 String pass = (String ) request.getAttribute("repo-pass"); 61 if(!isEmpty(user)) response.setRenderParameter("repo-user", user); 62 if(!isEmpty(pass)) response.setRenderParameter("repo-pass", pass); 63 return getMode(); 64 } 65 66 public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { 67 String repository = request.getParameter("repository"); 68 String user = request.getParameter("repo-user"); 69 String pass = request.getParameter("repo-pass"); 70 if(!loadFromRepository(request, repository, user, pass)) { 71 } 73 request.setAttribute("repository", repository); 74 request.setAttribute("repouser", user); 75 request.setAttribute("repopass", pass); 76 } 77 78 public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 79 return getMode()+BEFORE_ACTION; 80 } 81 82 private boolean loadFromRepository(RenderRequest request, String repository, String username, String password) throws IOException , PortletException { 83 PluginList data; 84 try { 85 data = PortletManager.getCurrentServer(request).getPluginInstaller().listPlugins(new URL (repository), username, password); 86 } catch (FailedLoginException e) { 87 throw new PortletException("Invalid login for Maven repository '"+repository+"'", e); 88 } 89 Map results = new HashMap (); 90 if(data == null || data.getPlugins() == null) { 91 return false; 92 } 93 for (int i = 0; i < data.getPlugins().length; i++) { 94 PluginMetadata metadata = data.getPlugins()[i]; 95 List values = (List ) results.get(metadata.getCategory()); 96 if(values == null) { 97 values = new ArrayList (); 98 results.put(metadata.getCategory(), values); 99 } 100 values.add(metadata); 101 } 102 Collection values = results.values(); 103 for (Iterator it = values.iterator(); it.hasNext();) { 104 List list = (List ) it.next(); 105 Collections.sort(list); 106 } 107 request.setAttribute("categories", results); 108 request.getPortletSession(true).setAttribute(CONFIG_LIST_SESSION_KEY, data); 109 return true; 110 } 111 } 112 | Popular Tags |