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