org.jruby.embed.variable
Class GlobalVariable

java.lang.Object
  extended by org.jruby.embed.variable.GlobalVariable
All Implemented Interfaces:
BiVariable
Direct Known Subclasses:
LocalGlobalVariable

public class GlobalVariable
extends java.lang.Object

An implementation of BiVariable for a Ruby global variable.

Author:
Yoko Harada

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jruby.embed.variable.BiVariable
BiVariable.Type
 
Field Summary
protected  boolean fromRuby
           
protected  IRubyObject irubyObject
           
protected  java.lang.Object javaObject
           
protected  java.lang.Class javaType
           
protected  java.lang.String name
           
protected  IRubyObject receiver
           
 
Constructor Summary
protected GlobalVariable(RubyObject receiver, java.lang.String name, java.lang.Object... javaObjects)
           
 
Method Summary
static BiVariable getInstance(RubyObject receiver, java.lang.String name, java.lang.Object... javaObject)
          Returns an instance of this class.
 java.lang.Object getJavaObject()
          Returns a value of the variable this object holds in Java type.
 java.lang.String getName()
          Returns a name of the variable this object holds.
 IRubyObject getReceiver()
          Returns the original receiver where this variable has been retrieved.
protected  RubyModule getRubyClass(Ruby runtime)
           
 IRubyObject getRubyObject()
          Returns a value of the variable this object holds in a org.jruby.runtime.builtin.IRubyObject type.
 BiVariable.Type getType()
          Returns enum type of this variable defined in BiVariable.
 void inject()
          A global variable is injected when it is set.
protected static boolean isPredefined(java.lang.String name)
           
 boolean isReceiverIdentical(RubyObject recv)
          Returns true if a given receiver is identical to the receiver this object has.
static boolean isValidName(java.lang.Object name)
          Returns true if the given name is a decent Ruby global variable.
protected static boolean isValidName(java.lang.String pattern, java.lang.Object name)
           
 void remove()
          Attempts to remove this variable from top self or receiver.
static void retrieve(IRubyObject receiver, BiVariableMap vars)
          Retrieves global variables from Ruby after the evaluation.
static void retrieveByKey(Ruby runtime, BiVariableMap vars, java.lang.String key)
          Retrieves a global variable by key from Ruby after the evaluation.
 void setJavaObject(Ruby runtime, java.lang.Object javaObject)
          Sets a Java object and its Ruby type as a value of this object.
 void setRubyObject(IRubyObject rubyObject)
          Sets a org.jruby.runtime.builtin.IRubyObject type, Ruby object as a value of this object.
 void tryEagerInjection(Ruby runtime, IRubyObject receiver)
          Injects a global variable value to a parsed Ruby script.
protected  void updateByJavaObject(Ruby runtime, java.lang.Object... values)
           
protected  void updateRubyObject(IRubyObject rubyObject)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

receiver

protected final IRubyObject receiver

name

protected java.lang.String name

javaObject

protected java.lang.Object javaObject

javaType

protected java.lang.Class javaType

irubyObject

protected IRubyObject irubyObject

fromRuby

protected boolean fromRuby
Constructor Detail

GlobalVariable

protected GlobalVariable(RubyObject receiver,
                         java.lang.String name,
                         java.lang.Object... javaObjects)
Method Detail

getInstance

public static BiVariable getInstance(RubyObject receiver,
                                     java.lang.String name,
                                     java.lang.Object... javaObject)
Returns an instance of this class. This factory method is used when a global variable is put in BiVariableMap.

Parameters:
runtime - Ruby runtime
name - a variable name
javaObject - Java object that should be assigned to.
Returns:
the instance of GlobalVariable

retrieve

public static void retrieve(IRubyObject receiver,
                            BiVariableMap vars)
Retrieves global variables from Ruby after the evaluation.

Parameters:
runtime - Ruby runtime
receiver - receiver object returned when a script is evaluated.
vars - map to save retrieved global variables.

retrieveByKey

public static void retrieveByKey(Ruby runtime,
                                 BiVariableMap vars,
                                 java.lang.String key)
Retrieves a global variable by key from Ruby after the evaluation.

Parameters:
runtime - Ruby runtime
receiver - receiver object returned when a script is evaluated.
vars - map to save a retrieved global variable.
key - name of the global variable

isPredefined

protected static boolean isPredefined(java.lang.String name)

getType

public BiVariable.Type getType()
Returns enum type of this variable defined in BiVariable.

Returns:
this enum type, BiVariable.Type.GlobalVariable.

isValidName

public static boolean isValidName(java.lang.Object name)
Returns true if the given name is a decent Ruby global variable. Unless returns false.

Parameters:
name - is a name to be checked.
Returns:
true if the given name is of a Ruby global variable.

setJavaObject

public void setJavaObject(Ruby runtime,
                          java.lang.Object javaObject)
Sets a Java object and its Ruby type as a value of this object. At the same time, sets Ruby object to Ruby runtime.

Specified by:
setJavaObject in interface BiVariable
Parameters:
runtime - is used to convert a Java object to Ruby object.
javaObject - is a variable value to be set.

inject

public void inject()
A global variable is injected when it is set. This method does nothing. Instead injection is done by tryEagerInjection.


tryEagerInjection

public void tryEagerInjection(Ruby runtime,
                              IRubyObject receiver)
Injects a global variable value to a parsed Ruby script. This method is invoked during EvalUnit#run() is executed.

Parameters:
runtime - is environment where a variable injection occurs
receiver - is the instance that will have variable injection.

remove

public void remove()
Attempts to remove this variable from top self or receiver.


isReceiverIdentical

public boolean isReceiverIdentical(RubyObject recv)
Returns true if a given receiver is identical to the receiver this object has.

Specified by:
isReceiverIdentical in interface BiVariable
Returns:
true always

updateByJavaObject

protected void updateByJavaObject(Ruby runtime,
                                  java.lang.Object... values)

updateRubyObject

protected void updateRubyObject(IRubyObject rubyObject)

getReceiver

public IRubyObject getReceiver()
Description copied from interface: BiVariable
Returns the original receiver where this variable has been retrieved.

Specified by:
getReceiver in interface BiVariable
Returns:
an original receiver.

getName

public java.lang.String getName()
Description copied from interface: BiVariable
Returns a name of the variable this object holds. The name follows Ruby's naming rule.

Specified by:
getName in interface BiVariable
Returns:
a name of the variable

getJavaObject

public java.lang.Object getJavaObject()
Description copied from interface: BiVariable
Returns a value of the variable this object holds in Java type.

Specified by:
getJavaObject in interface BiVariable
Returns:
a value in Java type.

getRubyObject

public IRubyObject getRubyObject()
Description copied from interface: BiVariable
Returns a value of the variable this object holds in a org.jruby.runtime.builtin.IRubyObject type.

Specified by:
getRubyObject in interface BiVariable
Returns:
a value in IRubyObject type.

setRubyObject

public void setRubyObject(IRubyObject rubyObject)
Description copied from interface: BiVariable
Sets a org.jruby.runtime.builtin.IRubyObject type, Ruby object as a value of this object. At the same time, an equivalent Java object is set automatically.

Specified by:
setRubyObject in interface BiVariable
Parameters:
rubyObject - is a variable value to be set.

getRubyClass

protected RubyModule getRubyClass(Ruby runtime)

isValidName

protected static boolean isValidName(java.lang.String pattern,
                                     java.lang.Object name)


Copyright © 2002-2009 JRuby Team. All Rights Reserved.