PassphraseCredentialsProvider.java

package net.trajano.wagon.git.internal;

import org.eclipse.jgit.transport.CredentialItem;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.URIish;

/**
 * A {@link CredentialsProvider} that takes in a passphrase.
 */
public class PassphraseCredentialsProvider extends CredentialsProvider {
    /**
     * Passphrase.
     */
    private final String passphrase;

    /**
     * Constructs the provider using a given passphrase.
     *
     * @param passphrase
     *            passphrase
     */
    public PassphraseCredentialsProvider(final String passphrase) {
        super();
        this.passphrase = passphrase;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean get(final URIish uriish, final CredentialItem... items) {
        for (final CredentialItem item : items) {
            if (item instanceof CredentialItem.StringType) {
                ((CredentialItem.StringType) item).setValue(passphrase);
                continue;
            }
        }
        return true;
    }

    /**
     * This provider does not interact with the user, it pulls directly from the
     * value that was set in the constructor.
     *
     * @return <code>false</code>
     */
    @Override
    public boolean isInteractive() {
        return false;
    }

    /**
     * {@inheritDoc}
     *
     * @return <code>true</code> when items contains a {@link CredentialItem}
     *         .StringType
     */
    @Override
    public boolean supports(final CredentialItem... items) {
        for (final CredentialItem item : items) {
            if (item instanceof CredentialItem.StringType) {
                return true;
            }
        }
        return false;
    }
}