
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_security_auth_callback_TextOutputCallback__
#define __javax_security_auth_callback_TextOutputCallback__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace security
    {
      namespace auth
      {
        namespace callback
        {
            class TextOutputCallback;
        }
      }
    }
  }
}

class javax::security::auth::callback::TextOutputCallback : public ::java::lang::Object
{

public:
  TextOutputCallback(jint, ::java::lang::String *);
  virtual jint getMessageType();
  virtual ::java::lang::String * getMessage();
private:
  void setMessage(::java::lang::String *);
public:
  static const jint INFORMATION = 0;
  static const jint WARNING = 1;
  static const jint ERROR = 2;
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) messageType;
  ::java::lang::String * message;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_security_auth_callback_TextOutputCallback__
