001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.geronimo.console.util; 019 020 import java.util.Hashtable; 021 022 import org.apache.geronimo.kernel.Kernel; 023 import org.apache.geronimo.kernel.KernelRegistry; 024 025 public class SERealmUserHelper extends RealmHelper { 026 027 private static final String GET_USERS_FUNCTION = "getUsers"; 028 029 private static final String ADD_USER_FUNCTION = "addUserPrincipal"; 030 031 private static final String USER_EXISTS_FUNCTION = "userExists"; 032 033 private static final String UPDATE_USER_FUNCTION = "updateUserPrincipal"; 034 035 private static final String DELETE_USER_FUNCTION = "removeUserPrincipal"; 036 037 private static final String GET_PASSWORD_FUNCTION = "getPassword"; 038 039 private static final String[] STRING = { "java.lang.String" }; 040 041 private static final String[] HASHTABLE = { "java.util.Hashtable" }; 042 043 private static final Kernel kernel = KernelRegistry.getSingleKernel(); 044 045 public static String[] getUsers() throws Exception { 046 return (String[]) invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, GET_USERS_FUNCTION); 047 } 048 049 private static void refresh() { 050 try { 051 052 kernel.stopGBean(ObjectNameConstants.SE_REALM_MBEAN_NAME); 053 kernel.startGBean(ObjectNameConstants.SE_REALM_MBEAN_NAME); 054 // kernel.stopGBean(ObjectNameConstants.SE_REALM_IMMUTABLE_MBEAN_NAME); 055 // kernel.startGBean(ObjectNameConstants.SE_REALM_IMMUTABLE_MBEAN_NAME); 056 057 } catch (Exception e) { 058 } 059 } 060 061 public static String getPassword(String username) throws Exception { 062 Object ret; 063 String[] arg = {username}; 064 ret = invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, GET_PASSWORD_FUNCTION, arg, STRING); 065 return (ret != null) ? ret.toString() : ""; 066 } 067 068 public static boolean userExists(String username) throws Exception { 069 Boolean ret; 070 String[] arg = {username}; 071 ret = (Boolean) invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, USER_EXISTS_FUNCTION, arg, STRING); 072 return ret.booleanValue(); 073 } 074 075 public static void addUser(String username, String password) 076 throws Exception { 077 Hashtable props = new Hashtable(); 078 props.put("UserName", username); 079 props.put("Password", password); 080 Object[] args = {props}; 081 invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, ADD_USER_FUNCTION, args, HASHTABLE); 082 refresh(); 083 } 084 085 public static void updateUser(String username, String password) 086 throws Exception { 087 Hashtable props = new Hashtable(); 088 props.put("UserName", username); 089 props.put("Password", password); 090 Object[] args = {props}; 091 invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, UPDATE_USER_FUNCTION, args, HASHTABLE); 092 refresh(); 093 } 094 095 public static void deleteUser(String username) throws Exception { 096 String[] args = {username}; 097 invoke(ObjectNameConstants.SE_REALM_MBEAN_NAME, DELETE_USER_FUNCTION, args, STRING); 098 refresh(); 099 } 100 101 102 }