Simplify instantiation of permission handlers

- Change permission handler to retrieve the services it needs, instead of getting them from the PermissionsManager
- Reduce visibility of some methods
- Add Reloadable interface
This commit is contained in:
ljacqu
2016-06-14 19:09:45 +02:00
parent ff2f8a63bb
commit 1377b10c24
5 changed files with 87 additions and 93 deletions
@@ -0,0 +1,11 @@
package fr.xephi.authme.permission.handlers;
/**
* Exception during the instantiation of a {@link PermissionHandler}.
*/
public class PermissionHandlerException extends Exception {
public PermissionHandlerException(String message) {
super(message);
}
}
@@ -15,8 +15,11 @@ public class PermissionsExHandler implements PermissionHandler {
private PermissionManager permissionManager;
public PermissionsExHandler(PermissionManager permissionManager) {
this.permissionManager = permissionManager;
public PermissionsExHandler() throws PermissionHandlerException {
permissionManager = PermissionsEx.getPermissionManager();
if (permissionManager == null) {
throw new PermissionHandlerException("Could not get manager of PermissionsEx");
}
}
@Override
@@ -3,7 +3,9 @@ package fr.xephi.authme.permission.handlers;
import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsSystemType;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.util.Arrays;
import java.util.List;
@@ -12,8 +14,24 @@ public class VaultHandler implements PermissionHandler {
private Permission vaultProvider;
public VaultHandler(Permission vaultProvider) {
this.vaultProvider = vaultProvider;
public VaultHandler(Server server) throws PermissionHandlerException {
this.vaultProvider = getVaultPermission(server);
}
private static Permission getVaultPermission(Server server) throws PermissionHandlerException {
// Get the permissions provider service
RegisteredServiceProvider<Permission> permissionProvider = server
.getServicesManager().getRegistration(Permission.class);
if (permissionProvider == null) {
throw new PermissionHandlerException("Could not load permissions provider service");
}
// Get the Vault provider and make sure it's valid
Permission vaultPerms = permissionProvider.getProvider();
if (vaultPerms == null) {
throw new PermissionHandlerException("Could not load Vault permissions provider");
}
return vaultPerms;
}
@Override
@@ -14,7 +14,12 @@ public class ZPermissionsHandler implements PermissionHandler {
private ZPermissionsService zPermissionsService;
public ZPermissionsHandler(ZPermissionsService zPermissionsService) {
public ZPermissionsHandler() throws PermissionHandlerException {
// Set the zPermissions service and make sure it's valid
ZPermissionsService zPermissionsService = Bukkit.getServicesManager().load(ZPermissionsService.class);
if (zPermissionsService == null) {
throw new PermissionHandlerException("Failed to get the ZPermissions service!");
}
this.zPermissionsService = zPermissionsService;
}