org.jruby.embed.variable
Class LocalGlobalVariable

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

public class LocalGlobalVariable
extends GlobalVariable

An implementation of BiVariable for JSR223 style global variable. The assigned name is like a local variables in Java, but a global in Ruby.

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
           
 
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()
          Injects a global value to a parsed Ruby script.
static boolean isValidName(java.lang.Object name)
          Returns true if the given name is a local global type variable.
protected static boolean isValidName(java.lang.String pattern, java.lang.Object name)
           
 void remove()
          Removes this object from BiVariableMap.
static void retrieve(RubyObject receiver, BiVariableMap vars)
          Retrieves global variables eagerly from Ruby right after the evaluation.
static void retrieveByKey(Ruby runtime, BiVariableMap vars, java.lang.String key)
          Retrieves a global variable by key from Ruby runtime after the evaluation.
 void setRubyObject(IRubyObject rubyObject)
          Sets a org.jruby.runtime.builtin.IRubyObject type, Ruby object as a value of this object.
protected  void updateByJavaObject(Ruby runtime, java.lang.Object... values)
           
protected  void updateRubyObject(IRubyObject rubyObject)
           
 
Methods inherited from class org.jruby.embed.variable.GlobalVariable
isPredefined, isReceiverIdentical, retrieve, setJavaObject, tryEagerInjection
 
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
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 local global type variable is put into BiVariableMap.

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

retrieve

public static void retrieve(RubyObject receiver,
                            BiVariableMap vars)
Retrieves global variables eagerly from Ruby right after the evaluation. The variable names to be retrieved must be in a variable map.

Parameters:
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 runtime after the evaluation. This method is used when eager retrieval is off.

Parameters:
runtime - Ruby runtime
vars - map to save a retrieved global variable.
key - name of the global variable

getType

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

Specified by:
getType in interface BiVariable
Overrides:
getType in class GlobalVariable
Returns:
this enum type, BiVariable.Type.GlobalVariable.

isValidName

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

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

inject

public void inject()
Injects a global value to a parsed Ruby script. This method is invoked during EvalUnit#run() is executed.

Specified by:
inject in interface BiVariable
Overrides:
inject in class GlobalVariable

remove

public void remove()
Removes this object from BiVariableMap.

Specified by:
remove in interface BiVariable
Overrides:
remove in class GlobalVariable
Parameters:
runtime - environment where a variable is removed.

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.