Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   **** BEGIN LICENSE BLOCK *****
   * Version: CPL 1.0/GPL 2.0/LGPL 2.1
   *
   * The contents of this file are subject to the Common Public
   * License Version 1.0 (the "License"); you may not use this file
   * except in compliance with the License. You may obtain a copy of
   * the License at http://www.eclipse.org/legal/cpl-v10.html
   *
  * Software distributed under the License is distributed on an "AS
  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  * implied. See the License for the specific language governing
  * rights and limitations under the License.
  * 
  * Alternatively, the contents of this file may be used under the terms of
  * either of the GNU General Public License Version 2 or later (the "GPL"),
  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the CPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the CPL, the GPL or the LGPL.
  ***** END LICENSE BLOCK *****/
 package org.jruby.ext.jruby;
 
 import java.util.Map;
 import org.jruby.Ruby;
 
 public abstract class JRubyExecutionContextLocal extends RubyObject {
     private IRubyObject default_value;
     private RubyProc default_proc;
 
     public JRubyExecutionContextLocal(Ruby runtimeRubyClass type) {
         super(runtimetype);
          = runtime.getNil();
          = null;
     }
 
     @JRubyMethod(name = "initialize", required = 0, optional = 1)
     public IRubyObject rubyInitialize(ThreadContext contextIRubyObject[] argsBlock block) {
         if (block.isGiven()) {
             if (args.length != 0) {
                 throw context.runtime.newArgumentError("wrong number of arguments");
             }
              = block.getProcObject();
             if ( == null) {
                  = RubyProc.newProc(context.runtimeblockblock.type);
             }
         } else {
             if (args.length == 1) {
                  = args[0];
             } else if (args.length != 0) {
                 throw context.runtime.newArgumentError("wrong number of arguments");
             }
         }
         return context.runtime.getNil();
     }
 
     @JRubyMethod(name = "default", required = 0)
     public IRubyObject getDefault(ThreadContext context) {
         return ;
     }
 
     @JRubyMethod(name = "default_proc", required = 0)
     public IRubyObject getDefaultProc(ThreadContext context) {
         if ( != null) {
             return ;
         } else {
             return context.runtime.getNil();
         }
     }
     private static final IRubyObject[] EMPTY_ARGS = new IRubyObject[]{};
 
     @JRubyMethod(name = "value", required = 0)
     public IRubyObject getValue(ThreadContext context) {
         final IRubyObject value;
         final Map<ObjectIRubyObjectcontextVariables;
         contextVariables = getContextVariables(context);
         value = contextVariables.get(this);
         if (value != null) {
             return value;
         } else if ( != null) {
             // pre-set for the sake of terminating recursive calls
             contextVariables.put(thiscontext.runtime.getNil());
             final IRubyObject new_value;
             new_value = .call(contextnull.);
             contextVariables.put(thisnew_value);
             return new_value;
        } else {
            return ;
        }
    }
    @JRubyMethod(name = "value=", required = 1)
    public IRubyObject setValue(ThreadContext contextIRubyObject value) {
        getContextVariables(context).put(thisvalue);
        return value;
    }
    protected final Map<ObjectIRubyObjectgetContextVariables(ThreadContext context) {
        return getExecutionContext(context).getContextVariables();
    }
    protected abstract ExecutionContext getExecutionContext(ThreadContext context);
    
New to GrepCode? Check out our FAQ X