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

#ifndef __java_beans_PropertyChangeEvent__
#define __java_beans_PropertyChangeEvent__

#pragma interface

#include <java/util/EventObject.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class PropertyChangeEvent;
    }
  }
}

class java::beans::PropertyChangeEvent : public ::java::util::EventObject
{

public:
  PropertyChangeEvent(::java::lang::Object *, ::java::lang::String *, ::java::lang::Object *, ::java::lang::Object *);
  virtual ::java::lang::String * getPropertyName();
  virtual ::java::lang::Object * getNewValue();
  virtual ::java::lang::Object * getOldValue();
  virtual void setPropagationId(::java::lang::Object *);
  virtual ::java::lang::Object * getPropagationId();
public: // actually package-private
  virtual ::java::beans::PropertyChangeEvent * rollback();
private:
  static const jlong serialVersionUID = 7042693688939648123LL;
public: // actually package-private
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::util::EventObject)))) propertyName;
  ::java::lang::Object * newValue;
  ::java::lang::Object * oldValue;
private:
  ::java::lang::Object * propagationId;
public:
  static ::java::lang::Class class$;
};

#endif // __java_beans_PropertyChangeEvent__
