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

#ifndef __gnu_java_security_action_GetPropertyAction__
#define __gnu_java_security_action_GetPropertyAction__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace action
        {
            class GetPropertyAction;
        }
      }
    }
  }
}

class gnu::java::security::action::GetPropertyAction : public ::java::lang::Object
{

public:
  GetPropertyAction();
  GetPropertyAction(::java::lang::String *);
  GetPropertyAction(::java::lang::String *, ::java::lang::String *);
  virtual ::java::lang::String * GetPropertyAction$run();
  virtual ::gnu::java::security::action::GetPropertyAction * setParameters(::java::lang::String *);
  virtual ::gnu::java::security::action::GetPropertyAction * setParameters(::java::lang::String *, ::java::lang::String *);
  virtual ::java::lang::Object * run();
public: // actually package-private
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
  ::java::lang::String * value;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_action_GetPropertyAction__
