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

#ifndef __javax_management_AttributeChangeNotification__
#define __javax_management_AttributeChangeNotification__

#pragma interface

#include <javax/management/Notification.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class AttributeChangeNotification;
    }
  }
}

class javax::management::AttributeChangeNotification : public ::javax::management::Notification
{

public:
  AttributeChangeNotification(::java::lang::Object *, jlong, jlong, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::Object *, ::java::lang::Object *);
  virtual ::java::lang::String * getAttributeName();
  virtual ::java::lang::String * getAttributeType();
  virtual ::java::lang::Object * getOldValue();
  virtual ::java::lang::Object * getNewValue();
private:
  static const jlong serialVersionUID = 535176054565814134LL;
public:
  static ::java::lang::String * ATTRIBUTE_CHANGE;
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::javax::management::Notification)))) attributeName;
  ::java::lang::String * attributeType;
  ::java::lang::Object * oldValue;
  ::java::lang::Object * newValue;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_AttributeChangeNotification__
