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

#ifndef __javax_management_MBeanServerFactory__
#define __javax_management_MBeanServerFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class MBeanServer;
        class MBeanServerBuilder;
        class MBeanServerFactory;
      namespace loading
      {
          class ClassLoaderRepository;
      }
    }
  }
}

class javax::management::MBeanServerFactory : public ::java::lang::Object
{

  MBeanServerFactory();
public:
  static ::javax::management::MBeanServer * createMBeanServer();
  static ::javax::management::MBeanServer * createMBeanServer(::java::lang::String *);
  static ::java::util::ArrayList * findMBeanServer(::java::lang::String *);
  static ::javax::management::loading::ClassLoaderRepository * getClassLoaderRepository(::javax::management::MBeanServer *);
  static ::javax::management::MBeanServer * newMBeanServer();
  static ::javax::management::MBeanServer * newMBeanServer(::java::lang::String *);
private:
  static ::javax::management::MBeanServer * createServer(::java::lang::String *);
public:
  static void releaseMBeanServer(::javax::management::MBeanServer *);
private:
  static ::javax::management::MBeanServerBuilder * builder;
  static ::java::util::Map * servers;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_MBeanServerFactory__
