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

#ifndef __java_beans_beancontext_BeanContextEvent__
#define __java_beans_beancontext_BeanContextEvent__

#pragma interface

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

class java::beans::beancontext::BeanContextEvent : public ::java::util::EventObject
{

public: // actually protected
  BeanContextEvent(::java::beans::beancontext::BeanContext *);
public:
  virtual ::java::beans::beancontext::BeanContext * getBeanContext();
  virtual ::java::beans::beancontext::BeanContext * getPropagatedFrom();
  virtual jboolean isPropagated();
  virtual void setPropagatedFrom(::java::beans::beancontext::BeanContext *);
private:
  static const jlong serialVersionUID = 7267998073569045052LL;
public: // actually protected
  ::java::beans::beancontext::BeanContext * __attribute__((aligned(__alignof__( ::java::util::EventObject)))) propagatedFrom;
public:
  static ::java::lang::Class class$;
};

#endif // __java_beans_beancontext_BeanContextEvent__
