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

#ifndef __java_net_PasswordAuthentication__
#define __java_net_PasswordAuthentication__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace net
    {
        class PasswordAuthentication;
    }
  }
}

class java::net::PasswordAuthentication : public ::java::lang::Object
{

public:
  PasswordAuthentication(::java::lang::String *, JArray< jchar > *);
  ::java::lang::String * getUserName();
  JArray< jchar > * getPassword();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) username;
  JArray< jchar > * password;
public:
  static ::java::lang::Class class$;
};

#endif // __java_net_PasswordAuthentication__
