diff options
Diffstat (limited to 'subversion/bindings/javahl/native/Prompter.h')
-rw-r--r-- | subversion/bindings/javahl/native/Prompter.h | 274 |
1 files changed, 200 insertions, 74 deletions
diff --git a/subversion/bindings/javahl/native/Prompter.h b/subversion/bindings/javahl/native/Prompter.h index 722abce..06a7f2d 100644 --- a/subversion/bindings/javahl/native/Prompter.h +++ b/subversion/bindings/javahl/native/Prompter.h @@ -24,93 +24,219 @@ * @brief Interface of the class Prompter */ -#ifndef PROMPTER_H -#define PROMPTER_H +#ifndef SVN_JAVAHL_PROMPTER_H +#define SVN_JAVAHL_PROMPTER_H + +#include <memory> -#include <jni.h> #include "svn_auth.h" -#include <string> + #include "Pool.h" -/** - * This class requests username/password and informations about - * ssl-certificates from the user. - */ + +#include "jniwrapper/jni_globalref.hpp" + class Prompter { - private: +public: + typedef ::std::auto_ptr<Prompter> UniquePtr; + /** - * The Java callback object. + * Factory method; @a prompter is a local reference to the Java + * callback object. */ - jobject m_prompter; + static Prompter::UniquePtr create(jobject jprompter); /** - * Tntermediate storage for an answer. + * Return a clone of the current object, referring to the same Java + * prompter object. */ - std::string m_answer; + virtual Prompter::UniquePtr clone() const; + + virtual ~Prompter(); + + svn_auth_provider_object_t *get_provider_username(SVN::Pool &in_pool); + svn_auth_provider_object_t *get_provider_simple(SVN::Pool &in_pool); + svn_auth_provider_object_t *get_provider_server_ssl_trust(SVN::Pool &in_pool); + svn_auth_provider_object_t *get_provider_client_ssl(SVN::Pool &in_pool); + svn_auth_provider_object_t *get_provider_client_ssl_password(SVN::Pool &in_pool); + +protected: + explicit Prompter(::Java::Env env, jobject jprompter); /** - * Flag is the user allowed, that the last answer is stored in the - * configuration. + * The Java callback object. */ - bool m_maySave; - - Prompter(jobject jprompter); - bool prompt(const char *realm, const char *pi_username, bool maySave); - bool askYesNo(const char *realm, const char *question, bool yesIsDefault); - const char *askQuestion(const char *realm, const char *question, - bool showAnswer, bool maySave); - int askTrust(const char *question, bool maySave); - jstring password(); - jstring username(); - static svn_error_t *simple_prompt(svn_auth_cred_simple_t **cred_p, - void *baton, const char *realm, - const char *username, - svn_boolean_t may_save, - apr_pool_t *pool); - static svn_error_t *username_prompt - (svn_auth_cred_username_t **cred_p, - void *baton, - const char *realm, - svn_boolean_t may_save, - apr_pool_t *pool); - static svn_error_t *ssl_server_trust_prompt - (svn_auth_cred_ssl_server_trust_t **cred_p, - void *baton, - const char *realm, - apr_uint32_t failures, - const svn_auth_ssl_server_cert_info_t *cert_info, - svn_boolean_t may_save, - apr_pool_t *pool); - static svn_error_t *ssl_client_cert_prompt - (svn_auth_cred_ssl_client_cert_t **cred_p, - void *baton, - const char *realm, - svn_boolean_t may_save, - apr_pool_t *pool); - static svn_error_t *ssl_client_cert_pw_prompt - (svn_auth_cred_ssl_client_cert_pw_t **cred_p, - void *baton, - const char *realm, - svn_boolean_t may_save, - apr_pool_t *pool); - public: - static Prompter *makeCPrompter(jobject jprompter); - ~Prompter(); - svn_auth_provider_object_t *getProviderUsername(SVN::Pool &in_pool); - svn_auth_provider_object_t *getProviderSimple(SVN::Pool &in_pool); - svn_auth_provider_object_t *getProviderServerSSLTrust(SVN::Pool &in_pool); - svn_auth_provider_object_t *getProviderClientSSL(SVN::Pool &in_pool); - svn_auth_provider_object_t *getProviderClientSSLPassword(SVN::Pool &in_pool); - - static svn_error_t *plaintext_prompt(svn_boolean_t *may_save_plaintext, - const char *realmstring, - void *baton, - apr_pool_t *pool); + ::Java::GlobalObject m_prompter; + + virtual svn_error_t *dispatch_simple_prompt( + ::Java::Env env, + svn_auth_cred_simple_t **cred_p, + const char *realm, + const char *username, + svn_boolean_t may_save, + apr_pool_t *pool); + + static svn_error_t *simple_prompt( + svn_auth_cred_simple_t **cred_p, + void *baton, + const char *realm, + const char *username, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_username_prompt( + ::Java::Env env, + svn_auth_cred_username_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + static svn_error_t *username_prompt( + svn_auth_cred_username_t **cred_p, + void *baton, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_server_trust_prompt( + ::Java::Env env, + svn_auth_cred_ssl_server_trust_t **cred_p, + const char *realm, + apr_uint32_t failures, + const svn_auth_ssl_server_cert_info_t *cert_info, + svn_boolean_t may_save, + apr_pool_t *pool); + + static svn_error_t *ssl_server_trust_prompt( + svn_auth_cred_ssl_server_trust_t **cred_p, + void *baton, + const char *realm, + apr_uint32_t failures, + const svn_auth_ssl_server_cert_info_t *cert_info, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_client_cert_prompt( + ::Java::Env env, + svn_auth_cred_ssl_client_cert_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + static svn_error_t *ssl_client_cert_prompt( + svn_auth_cred_ssl_client_cert_t **cred_p, + void *baton, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_client_cert_pw_prompt( + ::Java::Env env, + svn_auth_cred_ssl_client_cert_pw_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + static svn_error_t *ssl_client_cert_pw_prompt( + svn_auth_cred_ssl_client_cert_pw_t **cred_p, + void *baton, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + +protected: + virtual svn_error_t *dispatch_plaintext_prompt( + ::Java::Env env, + svn_boolean_t *may_save_plaintext, + const char *realmstring, + apr_pool_t *pool); + +public: + static svn_error_t *plaintext_prompt( + svn_boolean_t *may_save_plaintext, + const char *realmstring, + void *baton, + apr_pool_t *pool); + +protected: + virtual svn_error_t *dispatch_plaintext_passphrase_prompt( + ::Java::Env env, + svn_boolean_t *may_save_plaintext, + const char *realmstring, + apr_pool_t *pool); + +public: static svn_error_t *plaintext_passphrase_prompt( - svn_boolean_t *may_save_plaintext, - const char *realmstring, - void *baton, - apr_pool_t *pool); + svn_boolean_t *may_save_plaintext, + const char *realmstring, + void *baton, + apr_pool_t *pool); +}; + + +/** + * This class requests username/password and informations about + * ssl-certificates from the user. + */ +class CompatPrompter : public Prompter +{ +public: + static Prompter::UniquePtr create(jobject jprompter); + virtual Prompter::UniquePtr clone() const; + virtual ~CompatPrompter(); + +protected: + explicit CompatPrompter(::Java::Env env, jobject jprompter); + + virtual svn_error_t *dispatch_simple_prompt( + ::Java::Env env, + svn_auth_cred_simple_t **cred_p, + const char *realm, + const char *username, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_username_prompt( + ::Java::Env env, + svn_auth_cred_username_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_server_trust_prompt( + ::Java::Env env, + svn_auth_cred_ssl_server_trust_t **cred_p, + const char *realm, + apr_uint32_t failures, + const svn_auth_ssl_server_cert_info_t *cert_info, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_client_cert_prompt( + ::Java::Env env, + svn_auth_cred_ssl_client_cert_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_ssl_client_cert_pw_prompt( + ::Java::Env env, + svn_auth_cred_ssl_client_cert_pw_t **cred_p, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_plaintext_prompt( + ::Java::Env env, + svn_boolean_t *may_save_plaintext, + const char *realmstring, + apr_pool_t *pool); + + virtual svn_error_t *dispatch_plaintext_passphrase_prompt( + ::Java::Env env, + svn_boolean_t *may_save_plaintext, + const char *realmstring, + apr_pool_t *pool); }; -#endif // PROMPTER_H +#endif // SVN_JAVAHL_PROMPTER_H |