summaryrefslogtreecommitdiff
path: root/subversion/bindings/javahl/native/Prompter.h
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/bindings/javahl/native/Prompter.h')
-rw-r--r--subversion/bindings/javahl/native/Prompter.h274
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