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

#ifndef __java_beans_beancontext_BeanContextServicesSupport$ServiceRequest__
#define __java_beans_beancontext_BeanContextServicesSupport$ServiceRequest__

#pragma interface

#include <java/beans/beancontext/BeanContextServicesSupport$Request.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
      namespace beancontext
      {
          class BeanContextServiceRevokedListener;
          class BeanContextServicesSupport$ServiceRequest;
      }
    }
  }
}

class java::beans::beancontext::BeanContextServicesSupport$ServiceRequest : public ::java::beans::beancontext::BeanContextServicesSupport$Request
{

public:
  BeanContextServicesSupport$ServiceRequest(::java::lang::Object *, ::java::beans::beancontext::BeanContextServiceRevokedListener *);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::beans::beancontext::BeanContextServiceRevokedListener * getListener();
private:
  ::java::beans::beancontext::BeanContextServiceRevokedListener * __attribute__((aligned(__alignof__( ::java::beans::beancontext::BeanContextServicesSupport$Request)))) listener;
public:
  static ::java::lang::Class class$;
};

#endif // __java_beans_beancontext_BeanContextServicesSupport$ServiceRequest__
