class Rex::Java::Serialization::Model::NewEnum

This class provides a NewEnum (Java Enum) representation

Attributes

constant_name[RW]

@!attribute #constant_name

@return [Rex::Java::Serialization::Model::Utf] The constant value in the Java Enum
enum_description[RW]

@!attribute #enum_description

@return [Rex::Java::Serialization::Model::ClassDescription] The description of the enum

Public Class Methods

new(stream = nil) click to toggle source

@param stream [Rex::Java::Serialization::Model::Stream] the stream where it belongs to

# File lib/rex/java/serialization/model/new_enum.rb, line 19
def initialize(stream = nil)
  super(stream)
  self.enum_description = nil
  self.constant_name = nil
end

Public Instance Methods

decode(io) click to toggle source

Deserializes a Rex::Java::Serialization::Model::NewEnum

@param io [IO] the io to read from @return [self] if deserialization succeeds @raise [Rex::Java::Serialization::DecodeError] if deserialization doesn't succeed

# File lib/rex/java/serialization/model/new_enum.rb, line 30
def decode(io)
  self.enum_description = ClassDesc.decode(io, stream)
  stream.add_reference(self) unless stream.nil?
  self.constant_name = decode_constant_name(io)

  self
end
encode() click to toggle source

Serializes the Rex::Java::Serialization::Model::NewEnum

@return [String] if serialization succeeds @raise [Rex::Java::Serialization::EncodeError] if serialization doesn't succeed

# File lib/rex/java/serialization/model/new_enum.rb, line 42
def encode
  unless enum_description.kind_of?(ClassDesc) &&
         constant_name.kind_of?(Utf)
    raise Rex::Java::Serialization::EncodeError, 'Failed to serialize EnumDescription'
  end

  encoded = ''
  encoded << enum_description.encode
  encoded << encode_content(constant_name)
  encoded
end
to_s() click to toggle source

Creates a print-friendly string representation

@return [String]

# File lib/rex/java/serialization/model/new_enum.rb, line 57
def to_s
  constant_name.to_s
end

Private Instance Methods

decode_constant_name(io) click to toggle source

Deserializes the NewEnum constant name

@param io [IO] the io to read from @return [Rex::Java::Serialization::Model::Utf] if deserialization succeeds @raise [Rex::Java::Serialization::DecodeError] if deserialization doesn't succed

# File lib/rex/java/serialization/model/new_enum.rb, line 68
def decode_constant_name(io)
  content = decode_content(io, stream)
  raise Rex::Java::Serialization::DecodeError, 'Failed to unserialize NewEnum' unless content.kind_of?(Rex::Java::Serialization::Model::Utf)

  content
end