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

#ifndef __gnu_java_net_protocol_http_Authenticator__
#define __gnu_java_net_protocol_http_Authenticator__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace http
          {
              class Authenticator;
              class Credentials;
          }
        }
      }
    }
  }
}

class gnu::java::net::protocol::http::Authenticator : public ::java::lang::Object
{

public:
  virtual ::gnu::java::net::protocol::http::Credentials * getCredentials(::java::lang::String *, jint) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_java_net_protocol_http_Authenticator__
