KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > console > car > ListHandler


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.console.car;
18
19 import java.io.IOException JavaDoc;
20 import java.net.URL JavaDoc;
21 import java.util.ArrayList JavaDoc;
22 import java.util.HashMap JavaDoc;
23 import java.util.List JavaDoc;
24 import java.util.Map JavaDoc;
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 JavaDoc;
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 JavaDoc;
38 import java.util.Collection JavaDoc;
39 import java.util.Iterator JavaDoc;
40
41 /**
42  * Handler for the import export list screen.
43  *
44  * @version $Rev: 476061 $ $Date: 2006-11-17 01:36:50 -0500 (Fri, 17 Nov 2006) $
45  */

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 JavaDoc actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException JavaDoc {
54         String JavaDoc repository = (String JavaDoc) request.getAttribute("repository");
55         if(repository == null || repository.equals("")) {
56             return INDEX_MODE+BEFORE_ACTION;
57         }
58         response.setRenderParameter("repository", repository);
59         String JavaDoc user = (String JavaDoc) request.getAttribute("repo-user");
60         String JavaDoc pass = (String JavaDoc) 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 JavaDoc {
67         String JavaDoc repository = request.getParameter("repository");
68         String JavaDoc user = request.getParameter("repo-user");
69         String JavaDoc pass = request.getParameter("repo-pass");
70         if(!loadFromRepository(request, repository, user, pass)) {
71             //todo: loading failed -- do something!
72
}
73         request.setAttribute("repository", repository);
74         request.setAttribute("repouser", user);
75         request.setAttribute("repopass", pass);
76     }
77
78     public String JavaDoc actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException JavaDoc {
79         return getMode()+BEFORE_ACTION;
80     }
81
82     private boolean loadFromRepository(RenderRequest request, String JavaDoc repository, String JavaDoc username, String JavaDoc password) throws IOException JavaDoc, PortletException {
83         PluginList data;
84         try {
85             data = PortletManager.getCurrentServer(request).getPluginInstaller().listPlugins(new URL JavaDoc(repository), username, password);
86         } catch (FailedLoginException JavaDoc e) {
87             throw new PortletException("Invalid login for Maven repository '"+repository+"'", e);
88         }
89         Map JavaDoc results = new HashMap JavaDoc();
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 JavaDoc values = (List JavaDoc) results.get(metadata.getCategory());
96             if(values == null) {
97                 values = new ArrayList JavaDoc();
98                 results.put(metadata.getCategory(), values);
99             }
100             values.add(metadata);
101         }
102         Collection JavaDoc values = results.values();
103         for (Iterator JavaDoc it = values.iterator(); it.hasNext();) {
104             List JavaDoc list = (List JavaDoc) 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