package com.bagri.tools.vvm.service; import java.util.*; import java.util.logging.Logger; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import com.bagri.tools.vvm.model.User; public class AccessServiceProvider implements UserManagementService { private static final Logger LOGGER = Logger.getLogger(ClusterServiceProvider.class.getName()); private MBeanServerConnection connection; public AccessServiceProvider(MBeanServerConnection connection) { this.connection = connection; } public void close() { this.connection = null; } @Override public List<User> getUsers() throws ServiceException { List<User> result; try { Object res = connection.invoke(new ObjectName("com.bagri.db:type=Management,name=UserManagement"), "getUserNames", null, null); String[] usersArray = (String[]) res; result = new ArrayList<User>(usersArray.length); for (String strUser : usersArray) { User u = new User(strUser); u.setActive(true); result.add(u); } return result; } catch (Exception e) { LOGGER.throwing(this.getClass().getName(), "getUserNames", e); throw new ServiceException(e); } } @Override public boolean addUser(String user, String password) throws ServiceException { try { Object res = connection.invoke(new ObjectName("com.bagri.db:type=Management,name=UserManagement"), "addUser",new Object[] {user, password}, new String[] {String.class.getName(), String.class.getName()}); return (Boolean) res; } catch (Exception e) { LOGGER.throwing(this.getClass().getName(), "addUser", e); throw new ServiceException(e); } } @Override public boolean deleteUser(String user) throws ServiceException { try { Object res = connection.invoke(new ObjectName("com.bagri.db:type=Management,name=UserManagement"), "deleteUser",new Object[] {user}, new String[] {String.class.getName()}); return (Boolean) res; } catch (Exception e) { LOGGER.throwing(this.getClass().getName(), "deleteUser", e); throw new ServiceException(e); } } @Override public boolean activateUser(String user, boolean activate) throws ServiceException { try { Object res = connection.invoke(new ObjectName("com.bagri.db:type=Management,name=UserManagement"), "activateUser",new Object[] {user, activate}, new String[] {String.class.getName(), boolean.class.getName()}); return (Boolean) res; } catch (Exception e) { LOGGER.throwing(this.getClass().getName(), "activateUser", e); throw new ServiceException(e); } } @Override public boolean changePassword(String user, String password) throws ServiceException { try { Object res = connection.invoke(new ObjectName("com.bagri.db:type=Management,name=UserManagement"), "changePassword",new Object[] {user, password}, new String[] {String.class.getName(), String.class.getName()}); return (Boolean) res; } catch (Exception e) { LOGGER.throwing(this.getClass().getName(), "changePassword", e); throw new ServiceException(e); } } }