Newer
Older
KeeperJerry_Launcher / LaunchServer / source / auth / provider / DelegateAuthProvider.java
package launchserver.auth.provider;

import java.io.IOException;
import java.util.Objects;

import launcher.LauncherAPI;
import launcher.helper.VerifyHelper;
import launcher.serialize.config.entry.BlockConfigEntry;

public class DelegateAuthProvider extends AuthProvider {
    private volatile AuthProvider delegate;

    public DelegateAuthProvider(BlockConfigEntry block) {
        super(block);
    }

    @Override
    public AuthProviderResult auth(String login, String password, String ip) throws Throwable {
        return getDelegate().auth(login, password, ip);
    }

    @Override
    public void close() throws IOException {
        AuthProvider delegate = this.delegate;
        if (delegate != null) {
            delegate.close();
        }
    }

    @LauncherAPI
    public void setDelegate(AuthProvider delegate) {
        this.delegate = delegate;
    }

    private AuthProvider getDelegate() {
        return VerifyHelper.verify(delegate, Objects::nonNull, "Delegate auth provider wasn't set");
    }
}