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

#ifndef __java_security_cert_CertStoreException__
#define __java_security_cert_CertStoreException__

#pragma interface

#include <java/security/GeneralSecurityException.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
      namespace cert
      {
          class CertStoreException;
      }
    }
  }
}

class java::security::cert::CertStoreException : public ::java::security::GeneralSecurityException
{

public:
  CertStoreException();
  CertStoreException(::java::lang::String *);
  CertStoreException(::java::lang::Throwable *);
  CertStoreException(::java::lang::String *, ::java::lang::Throwable *);
  virtual ::java::lang::String * getMessage();
  virtual ::java::lang::Throwable * getCause();
  virtual ::java::lang::String * toString();
  virtual void printStackTrace();
  virtual void printStackTrace(::java::io::PrintStream *);
  virtual void printStackTrace(::java::io::PrintWriter *);
private:
  static const jlong serialVersionUID = 2395296107471573245LL;
public:
  static ::java::lang::Class class$;
};

#endif // __java_security_cert_CertStoreException__
