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

#ifndef __gnu_java_net_protocol_https_Handler__
#define __gnu_java_net_protocol_https_Handler__

#pragma interface

#include <java/net/URLStreamHandler.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace net
      {
        namespace protocol
        {
          namespace https
          {
              class Handler;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace net
    {
        class URL;
        class URLConnection;
    }
  }
}

class gnu::java::net::protocol::https::Handler : public ::java::net::URLStreamHandler
{

public:
  Handler();
public: // actually protected
  virtual jint getDefaultPort();
public:
  virtual ::java::net::URLConnection * openConnection(::java::net::URL *);
  static ::java::lang::Class class$;
};

#endif // __gnu_java_net_protocol_https_Handler__
