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

#ifndef __javax_management_openmbean_OpenMBeanOperationInfo__
#define __javax_management_openmbean_OpenMBeanOperationInfo__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class MBeanParameterInfo;
      namespace openmbean
      {
          class OpenMBeanOperationInfo;
          class OpenType;
      }
    }
  }
}

class javax::management::openmbean::OpenMBeanOperationInfo : public ::java::lang::Object
{

public:
  virtual jboolean equals(::java::lang::Object *) = 0;
  virtual ::java::lang::String * getDescription() = 0;
  virtual jint getImpact() = 0;
  virtual ::java::lang::String * getName() = 0;
  virtual ::javax::management::openmbean::OpenType * getReturnOpenType() = 0;
  virtual ::java::lang::String * getReturnType() = 0;
  virtual JArray< ::javax::management::MBeanParameterInfo * > * getSignature() = 0;
  virtual jint hashCode() = 0;
  virtual ::java::lang::String * toString() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_management_openmbean_OpenMBeanOperationInfo__
