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

#ifndef __gnu_javax_net_ssl_provider_CertificateRequestBuilder__
#define __gnu_javax_net_ssl_provider_CertificateRequestBuilder__

#pragma interface

#include <gnu/javax/net/ssl/provider/CertificateRequest.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class CertificateRequestBuilder;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
    }
  }
}

class gnu::javax::net::ssl::provider::CertificateRequestBuilder : public ::gnu::javax::net::ssl::provider::CertificateRequest
{

public:
  CertificateRequestBuilder();
  virtual ::java::nio::ByteBuffer * buffer();
  virtual void setTypes(::java::util::List *);
  virtual void setAuthorities(::java::util::List *);
  virtual void ensureCapacity(jint);
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_CertificateRequestBuilder__
