Class: JavaClass::JavaQualifiedName

Inherits:
String show all
Includes:
PackageLogic, SimpleNameLogic
Defined in:
lib/javaclass/java_name.rb

Overview

A full qualified class name. That is like a.b.C. Care has to be taken if this is used as hash key. String is treated special and the additional fields are lost when the key is retrieved from the Hash (because it is frozen).

Author

Peter Kofler

Constant Summary collapse

VALID_REGEX =
/^   (    (?:  #{JavaLanguage::IDENTIFIER_REGEX}#{JavaLanguage::SEPARATOR_REGEX}   )*   )
(   #{JavaLanguage::IDENTIFIER_REGEX}    )   $/x

Constants inherited from String

String::RUBY19, String::TYPES

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SimpleNameLogic

#simple_name, #split_simple_name

Methods included from PackageLogic

#in_jdk?, #package, #same_or_subpackage_of?, #subpackage_of?

Methods inherited from String

#double, #hexdump, #single, #u1, #u2, #u2rep, #u4, #u8

Constructor Details

#initialize(string, jvmname = nil, classname = nil) ⇒ JavaQualifiedName

Create a new qualified name string with optional jvmname and classname classes which may be available.



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/javaclass/java_name.rb', line 114

def initialize(string, jvmname=nil, classname=nil)
  super string
  if string =~ VALID_REGEX
    @package = $1 || ''
    @simple_name = $2
    @full_name = string
  else
    # TODO Implement qualified name logic for inner classes (e.g. CollectionUtils$IChecker)
    raise ArgumentError, "#{string} is no valid qualified name"
  end
  package_remove_trailing_dot!
  
  @jvm_name = jvmname
  @class_name = classname
end

Class Method Details

.valid?(string) ⇒ Boolean

Is string a valid qualified name?

Returns:

  • (Boolean)


109
110
111
# File 'lib/javaclass/java_name.rb', line 109

def self.valid?(string)
  string =~ VALID_REGEX
end

Instance Method Details

#full_nameObject

Full normalized class name of this class. This returns just the plain String.



131
132
133
# File 'lib/javaclass/java_name.rb', line 131

def full_name
  @full_name
end

#to_class_fileObject

Return the Java class file name of this class, e.g. java/lang/Object.class.



161
162
163
164
165
166
167
168
169
# File 'lib/javaclass/java_name.rb', line 161

def to_class_file
  return @class_name if @class_name
  new_val = JavaClassFileName.new(@full_name.gsub(JavaLanguage::SEPARATOR, JavaClassFileName::SEPARATOR) + JavaLanguage::CLASS, self)
  if frozen?
    new_val
  else 
    @class_name = new_val
  end 
end

#to_classnameObject

Return the full classname of this class, e.g. java.lang.Object.



140
141
142
# File 'lib/javaclass/java_name.rb', line 140

def to_classname
  self
end

#to_java_fileObject

Return the Java source file name of this class, e.g. java/lang/Object.java. This is a plain String.



156
157
158
# File 'lib/javaclass/java_name.rb', line 156

def to_java_file
  @full_name.gsub(JavaLanguage::SEPARATOR, JavaClassFileName::SEPARATOR) + JavaLanguage::SOURCE
end

#to_javanameObject



135
136
137
# File 'lib/javaclass/java_name.rb', line 135

def to_javaname
  self
end

#to_jvmnameObject

Return the VM name of this class, e.g. java/lang/Object.



145
146
147
148
149
150
151
152
153
# File 'lib/javaclass/java_name.rb', line 145

def to_jvmname
  return @jvm_name if @jvm_name
  new_val = JavaVMName.new(@full_name.gsub(JavaLanguage::SEPARATOR, JavaVMName::SEPARATOR), self)
  if frozen?
    new_val
  else
    @jvm_name = new_val
  end
end