org.jruby.RubyModule.testFrozen()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.7k)|赞(0)|评价(0)|浏览(70)

本文整理了Java中org.jruby.RubyModule.testFrozen方法的一些代码示例,展示了RubyModule.testFrozen的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyModule.testFrozen方法的具体详情如下:
包路径:org.jruby.RubyModule
类名称:RubyModule
方法名:testFrozen

RubyModule.testFrozen介绍

暂无

代码示例

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

public void addMethod(String name, DynamicMethod method) {
  testFrozen("class/module");
  addMethodInternal(name, method);
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

public void addMethod(String name, DynamicMethod method) {
  testFrozen("class/module");
  addMethodInternal(name, method);
}

代码示例来源:origin: org.jruby/jruby-core

public void addMethod(String id, DynamicMethod method) {
  testFrozen("class/module");
  if (methodLocation != this) {
    methodLocation.addMethod(id, method);
    return;
  }
  if (this instanceof MetaClass) {
    // FIXME: Gross and not quite right. See MRI's rb_frozen_class_p logic
    ((MetaClass) this).getAttached().testFrozen();
  }
  addMethodInternal(id, method);
}

代码示例来源:origin: org.jruby/jruby-complete

public void addMethod(String id, DynamicMethod method) {
  testFrozen("class/module");
  if (methodLocation != this) {
    methodLocation.addMethod(id, method);
    return;
  }
  if (this instanceof MetaClass) {
    // FIXME: Gross and not quite right. See MRI's rb_frozen_class_p logic
    ((MetaClass) this).getAttached().testFrozen();
  }
  addMethodInternal(id, method);
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

public synchronized void defineAliases(List<String> aliases, String oldName) {
  testFrozen("module");
  DynamicMethod method = searchForAliasMethod(getRuntime(), oldName);
  for (String name: aliases) {
    if (oldName.equals(name)) continue;
    putMethod(name, new AliasMethod(this, method, oldName));
  }
  
  invalidateCoreClasses();
  invalidateCacheDescendants();
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/** rb_alias
 *
 */
public synchronized void defineAlias(String name, String oldName) {
  testFrozen("module");
  if (oldName.equals(name)) return;
  DynamicMethod method = searchForAliasMethod(getRuntime(), oldName);
  putMethod(name, new AliasMethod(this, method, oldName));
  invalidateCoreClasses();
  invalidateCacheDescendants();
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/** rb_alias
 *
 */
public synchronized void defineAlias(String name, String oldName) {
  testFrozen("module");
  if (oldName.equals(name)) return;
  DynamicMethod method = searchForAliasMethod(getRuntime(), oldName);
  putMethod(name, new AliasMethod(this, method, oldName));
  invalidateCoreClasses();
  invalidateCacheDescendants();
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

public synchronized void defineAliases(List<String> aliases, String oldName) {
  testFrozen("module");
  DynamicMethod method = searchForAliasMethod(getRuntime(), oldName);
  for (String name: aliases) {
    if (oldName.equals(name)) continue;
    putMethod(name, new AliasMethod(this, method, oldName));
  }
  
  invalidateCoreClasses();
  invalidateCacheDescendants();
}

代码示例来源:origin: org.jruby/jruby-complete

/** rb_alias
 *
 */
public synchronized void defineAlias(String name, String oldName) {
  testFrozen("module");
  putAlias(name, searchForAliasMethod(getRuntime(), oldName), oldName);
  methodLocation.invalidateCoreClasses();
  methodLocation.invalidateCacheDescendants();
}

代码示例来源:origin: org.jruby/jruby-core

/** rb_alias
 *
 */
public synchronized void defineAlias(String name, String oldName) {
  testFrozen("module");
  putAlias(name, searchForAliasMethod(getRuntime(), oldName), oldName);
  methodLocation.invalidateCoreClasses();
  methodLocation.invalidateCacheDescendants();
}

代码示例来源:origin: org.jruby/jruby-core

public synchronized void defineAliases(List<String> aliases, String oldId) {
  testFrozen("module");
  Ruby runtime = getRuntime();
  DynamicMethod method = searchForAliasMethod(runtime, oldId);
  for (String name: aliases) {
    putAlias(name, method, oldId);
  }
  methodLocation.invalidateCoreClasses();
  methodLocation.invalidateCacheDescendants();
}

代码示例来源:origin: org.jruby/jruby-complete

public synchronized void defineAliases(List<String> aliases, String oldId) {
  testFrozen("module");
  Ruby runtime = getRuntime();
  DynamicMethod method = searchForAliasMethod(runtime, oldId);
  for (String name: aliases) {
    putAlias(name, method, oldId);
  }
  methodLocation.invalidateCoreClasses();
  methodLocation.invalidateCacheDescendants();
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

public void removeMethod(ThreadContext context, String name) {
  Ruby runtime = context.runtime;
  testFrozen("class/module");
  // We can safely reference methods here instead of doing getMethods() since if we
  // are adding we are not using a IncludedModuleWrapper.
  synchronized(getMethodsForWrite()) {
    DynamicMethod method = (DynamicMethod) getMethodsForWrite().remove(name);
    if (method == null) {
      throw runtime.newNameError("method '" + name + "' not defined in " + getName(), name);
    }
    invalidateCoreClasses();
    invalidateCacheDescendants();
  }
  
  if (isSingleton()) {
    IRubyObject singleton = ((MetaClass)this).getAttached(); 
    singleton.callMethod(context, "singleton_method_removed", runtime.newSymbol(name));
  } else {
    callMethod(context, "method_removed", runtime.newSymbol(name));
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

public void removeMethod(ThreadContext context, String name) {
  Ruby runtime = context.runtime;
  testFrozen("class/module");
  // We can safely reference methods here instead of doing getMethods() since if we
  // are adding we are not using a IncludedModuleWrapper.
  synchronized(getMethodsForWrite()) {
    DynamicMethod method = (DynamicMethod) getMethodsForWrite().remove(name);
    if (method == null) {
      throw runtime.newNameError("method '" + name + "' not defined in " + getName(), name);
    }
    invalidateCoreClasses();
    invalidateCacheDescendants();
  }
  
  if (isSingleton()) {
    IRubyObject singleton = ((MetaClass)this).getAttached(); 
    singleton.callMethod(context, "singleton_method_removed", runtime.newSymbol(name));
  } else {
    callMethod(context, "method_removed", runtime.newSymbol(name));
  }
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/**
 * Include a new module in this module or class.
 * 
 * @param arg The module to include
 */
public synchronized void includeModule(IRubyObject arg) {
  assert arg != null;
  testFrozen("module");
  if (!(arg instanceof RubyModule)) {
    throw getRuntime().newTypeError("Wrong argument type " + arg.getMetaClass().getName() +
        " (expected Module).");
  }
  RubyModule module = (RubyModule) arg;
  // Make sure the module we include does not already exist
  checkForCyclicInclude(module);
  infectBy(module);
  doIncludeModule(module);
  invalidateCoreClasses();
  invalidateCacheDescendants();
  invalidateConstantCacheForModuleInclusion(module);
}

代码示例来源:origin: org.jruby/jruby-core

public void removeMethod(ThreadContext context, String id) {
  testFrozen("class/module");
  switch (id) {
    case "object_id"  : warnMethodRemoval(context, id); break;
    case "__send__"   : warnMethodRemoval(context, id); break;
    case "initialize" : warnMethodRemoval(context, id); break;
  }
  RubySymbol name = context.runtime.newSymbol(id);
  // We can safely reference methods here instead of doing getMethods() since if we
  // are adding we are not using a IncludedModule.
  Map<String, DynamicMethod> methodsForWrite = methodLocation.getMethodsForWrite();
  synchronized (methodsForWrite) {
    DynamicMethod method = methodsForWrite.remove(id);
    if (method == null) {
      throw context.runtime.newNameError(str(context.runtime, "method '", name, "' not defined in ", rubyName()), id);
    }
    invalidateCoreClasses();
    invalidateCacheDescendants();
  }
  if (isSingleton()) {
    ((MetaClass) this).getAttached().callMethod(context, "singleton_method_removed", name);
  } else {
    callMethod(context, "method_removed", name);
  }
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/**
 * Include a new module in this module or class.
 * 
 * @param arg The module to include
 */
public synchronized void includeModule(IRubyObject arg) {
  assert arg != null;
  testFrozen("module");
  if (!(arg instanceof RubyModule)) {
    throw getRuntime().newTypeError("Wrong argument type " + arg.getMetaClass().getName() +
        " (expected Module).");
  }
  RubyModule module = (RubyModule) arg;
  // Make sure the module we include does not already exist
  checkForCyclicInclude(module);
  infectBy(module);
  doIncludeModule(module);
  invalidateCoreClasses();
  invalidateCacheDescendants();
  invalidateConstantCacheForModuleInclusion(module);
}

代码示例来源:origin: org.jruby/jruby-complete

public void removeMethod(ThreadContext context, String id) {
  testFrozen("class/module");
  switch (id) {
    case "object_id"  : warnMethodRemoval(context, id); break;
    case "__send__"   : warnMethodRemoval(context, id); break;
    case "initialize" : warnMethodRemoval(context, id); break;
  }
  RubySymbol name = context.runtime.newSymbol(id);
  // We can safely reference methods here instead of doing getMethods() since if we
  // are adding we are not using a IncludedModule.
  Map<String, DynamicMethod> methodsForWrite = methodLocation.getMethodsForWrite();
  synchronized (methodsForWrite) {
    DynamicMethod method = methodsForWrite.remove(id);
    if (method == null) {
      throw context.runtime.newNameError(str(context.runtime, "method '", name, "' not defined in ", rubyName()), id);
    }
    invalidateCoreClasses();
    invalidateCacheDescendants();
  }
  if (isSingleton()) {
    ((MetaClass) this).getAttached().callMethod(context, "singleton_method_removed", name);
  } else {
    callMethod(context, "method_removed", name);
  }
}

代码示例来源:origin: org.jruby/jruby-core

/**
 * Include a new module in this module or class.
 *
 * @param arg The module to include
 */
public synchronized void includeModule(IRubyObject arg) {
  assert arg != null;
  testFrozen("module");
  if (!(arg instanceof RubyModule)) {
    throw getRuntime().newTypeError("Wrong argument type " + arg.getMetaClass().getName() +
        " (expected Module).");
  }
  if (((RubyModule) arg).refinedClass != null) {
    throw getRuntime().newArgumentError("refinement module is not allowed");
  }
  RubyModule module = (RubyModule) arg;
  // Make sure the module we include does not already exist
  checkForCyclicInclude(module);
  if (hasModuleInPrepends(((RubyModule)arg).getNonIncludedClass())) {
    invalidateCacheDescendants();
    return;
  }
  infectBy(module);
  doIncludeModule(module);
  invalidateCoreClasses();
  invalidateCacheDescendants();
  invalidateConstantCacheForModuleInclusion(module);
}

代码示例来源:origin: org.jruby/jruby-complete

/**
 * Include a new module in this module or class.
 *
 * @param arg The module to include
 */
public synchronized void includeModule(IRubyObject arg) {
  assert arg != null;
  testFrozen("module");
  if (!(arg instanceof RubyModule)) {
    throw getRuntime().newTypeError("Wrong argument type " + arg.getMetaClass().getName() +
        " (expected Module).");
  }
  if (((RubyModule) arg).refinedClass != null) {
    throw getRuntime().newArgumentError("refinement module is not allowed");
  }
  RubyModule module = (RubyModule) arg;
  // Make sure the module we include does not already exist
  checkForCyclicInclude(module);
  if (hasModuleInPrepends(((RubyModule)arg).getNonIncludedClass())) {
    invalidateCacheDescendants();
    return;
  }
  infectBy(module);
  doIncludeModule(module);
  invalidateCoreClasses();
  invalidateCacheDescendants();
  invalidateConstantCacheForModuleInclusion(module);
}

相关文章

微信公众号

最新文章

更多

RubyModule类方法