View Javadoc

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.jetspeed.portlets.security.users;
18  
19  import java.security.Principal;
20  import java.sql.Types;
21  import java.util.ArrayList;
22  import java.util.Iterator;
23  import java.util.List;
24  
25  import javax.portlet.PortletConfig;
26  import javax.portlet.PortletException;
27  import javax.portlet.RenderRequest;
28  
29  import org.apache.jetspeed.CommonPortletServices;
30  import org.apache.jetspeed.security.Role;
31  import org.apache.jetspeed.security.RoleManager;
32  import org.apache.portals.gems.browser.BrowserIterator;
33  import org.apache.portals.gems.browser.DatabaseBrowserIterator;
34  import org.apache.portals.gems.browser.BrowserPortlet;
35  
36  /***
37   * RoleChooserPortlet
38   * 
39   * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
40   * @version $Id: RoleChooserPortlet.java 348264 2005-11-22 22:06:45Z taylor $
41   */
42  public class RoleChooserPortlet extends BrowserPortlet
43  {
44      private RoleManager roleManager;
45      
46      public void init(PortletConfig config)
47      throws PortletException 
48      {
49          super.init(config);
50          roleManager = (RoleManager) 
51              getPortletContext().getAttribute(CommonPortletServices.CPS_GROUP_MANAGER_COMPONENT);
52          if (null == roleManager)
53          {
54              throw new PortletException("Failed to find the User Manager on portlet initialization");
55          }
56      }
57             
58      public void getRows(RenderRequest request, String sql, int windowSize)
59      throws Exception
60      {
61          List resultSetTitleList = new ArrayList();
62          List resultSetTypeList = new ArrayList();
63          try
64          {
65              Iterator roles = roleManager.getRoles("");
66                          
67              
68              resultSetTypeList.add(String.valueOf(Types.VARCHAR));
69              resultSetTitleList.add("Role");
70  
71              // TODO: need to try to normalize List/Collection/Iterators
72              List list = new ArrayList();
73              while (roles.hasNext())
74              {
75                  Role role = (Role)roles.next();
76                  
77                  Principal principal = role.getPrincipal();                
78                  list.add(principal.getName());
79              }            
80              BrowserIterator iterator = new DatabaseBrowserIterator(
81                      list, resultSetTitleList, resultSetTypeList,
82                      windowSize);
83              setBrowserIterator(request, iterator);
84              iterator.sort("Role");
85          }
86          catch (Exception e)
87          {
88              //log.error("Exception in CMSBrowserAction.getRows: ", e);
89              e.printStackTrace();
90              throw e;
91          }        
92      }
93         
94  }