class JavaClass::JavaVMName

A class name from the JVM. That is a/b/C. These names are read from the constant pool. Atoms and arrays are expressed as JVM names as well.

Author

Peter Kofler

Constants

ARRAY_REGEX
ATOMS

Mapping of atoms to wrappers.

SEPARATOR
SEPARATOR_REGEX
VALID_REGEX

Public Class Methods

new(string, qualified=nil) click to toggle source

Create a new JVM name string with optional qualified class which may be available.

Calls superclass method
# File lib/javaclass/java_name.rb, line 213
def initialize(string, qualified=nil)
  super string

  if string =~ ARRAY_REGEX
    @is_array = string[/^\[+/].length
    string = string.sub(ARRAY_REGEX, '\1\2')

    if string =~ /^[BSIJFDZC]$/
      @is_atom = string
      string = ATOMS[string]
    else
      @is_atom = false
    end
  
  else
    @is_array = false
  end

  if string =~ VALID_REGEX
    @jvm_name = string
  else
    raise ArgumentError, "#{string} is no valid JVM name"
  end
  @qualified_name = qualified
  @class_name = nil      
end
valid?(string) click to toggle source

Is string a valid JVM name?

# File lib/javaclass/java_name.rb, line 208
def self.valid?(string)
  string =~ ARRAY_REGEX || string =~ VALID_REGEX
end

Public Instance Methods

array?() click to toggle source

Is this a bytecode array, e.g. represented by [B.

# File lib/javaclass/java_name.rb, line 241
def array?
  @is_array
end
to_class_file() click to toggle source
# File lib/javaclass/java_name.rb, line 263
def to_class_file
  return @class_name if @class_name
  new_val = JavaClassFileName.new(@jvm_name + JavaLanguage::CLASS, @qualified_name)
  if frozen?
    new_val
  else 
    @class_name = new_val
  end 
end
to_classname() click to toggle source
# File lib/javaclass/java_name.rb, line 245
def to_classname
  return @qualified_name if @qualified_name
  new_val = JavaQualifiedName.new(@jvm_name.gsub(SEPARATOR, JavaLanguage::SEPARATOR), self, nil)
  if frozen?
    new_val
  else 
    @qualified_name = new_val
  end 
end
to_java_file() click to toggle source
# File lib/javaclass/java_name.rb, line 259
def to_java_file
  @jvm_name + JavaLanguage::SOURCE
end
to_jvmname() click to toggle source
# File lib/javaclass/java_name.rb, line 255
def to_jvmname
  self
end