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

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

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

RubyModule.getMetaClass介绍

暂无

代码示例

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

@JRubyMethod(name = "private_class_method", rest = true)
public RubyModule private_class_method(IRubyObject[] args) {
  getMetaClass().setMethodVisibility(args, PRIVATE);
  return this;
}

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

public static RubyClass newClassForIR(ThreadContext context, String name, IRubyObject self, RubyModule classContainer, Object superClass, boolean meta) {
  if (meta) return classContainer.getMetaClass();
  RubyClass sc = null;
  if (superClass != null) {
    if (!(superClass instanceof RubyClass)) {
      throw context.runtime.newTypeError("superclass must be Class (" + superClass + " given)");
    }
    sc = (RubyClass) superClass;
  }
  return classContainer.defineOrGetClassUnder(name, sc);
}

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

@JRubyMethod(name = "private_class_method", rest = true)
public RubyModule private_class_method(IRubyObject[] args) {
  getMetaClass().setMethodVisibility(args, PRIVATE);
  return this;
}

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

public static RubyClass newClassForIR(ThreadContext context, String name, IRubyObject self, RubyModule classContainer, Object superClass, boolean meta) {
  if (meta) return classContainer.getMetaClass();
  RubyClass sc = null;
  if (superClass != null) {
    if (!(superClass instanceof RubyClass)) {
      throw context.runtime.newTypeError("superclass must be Class (" + superClass + " given)");
    }
    sc = (RubyClass) superClass;
  }
  return classContainer.defineOrGetClassUnder(name, sc);
}

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

@JRubyMethod(name = "public_class_method", rest = true)
public RubyModule public_class_method(IRubyObject[] args) {
  getMetaClass().setMethodVisibility(args, PUBLIC);
  return this;
}

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

@JRubyMethod(name = "public_class_method", rest = true)
public RubyModule public_class_method(IRubyObject[] args) {
  getMetaClass().setMethodVisibility(args, PUBLIC);
  return this;
}

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

private static boolean bindJavaPackageOrClassMethod(final RubyModule parentPackage,
  final String name, final RubyModule packageOrClass) {
  if ( parentPackage.getMetaClass().isMethodBound(name, false) ) {
    return false;
  }
  final RubyClass singleton = parentPackage.getSingletonClass();
  singleton.addMethod(name.intern(), new JavaAccessor(singleton, packageOrClass, parentPackage, name));
  return true;
}

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

private static boolean bindJavaPackageOrClassMethod(final RubyModule parentPackage,
  final String name, final RubyModule packageOrClass) {
  if ( parentPackage.getMetaClass().isMethodBound(name, false) ) {
    return false;
  }
  final RubyClass singleton = parentPackage.getSingletonClass();
  singleton.addMethod(name.intern(), new JavaAccessor(singleton, packageOrClass, parentPackage, name));
  return true;
}

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

static void recacheBuiltinMethods(Ruby runtime) {
  RubyModule objectClass = runtime.getBasicObject();
  // Since method_missing is marked module we actually define two builtin versions
  runtime.setDefaultMethodMissing(objectClass.searchMethod("method_missing"),
      objectClass.getMetaClass().searchMethod("method_missing"));
}

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

static void recacheBuiltinMethods(Ruby runtime) {
  RubyModule objectClass = runtime.getBasicObject();
  // Since method_missing is marked module we actually define two builtin versions
  runtime.setDefaultMethodMissing(objectClass.searchMethod("method_missing"),
      objectClass.getMetaClass().searchMethod("method_missing"));
}

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

/**
 * Calculate, based on given RubyModule, which class in its hierarchy
 * should be used to determine protected access.
 *
 * @param cls The class from which to calculate
 * @return The class to be used for protected access checking.
 */
protected static RubyModule calculateProtectedClass(RubyModule cls) {
  // singleton classes don't get their own visibility domain
  if (cls.isSingleton()) cls = cls.getSuperClass();
  while (cls.isIncluded()) cls = cls.getMetaClass();
  // For visibility we need real meta class and not anonymous one from class << self
  if (cls instanceof MetaClass) cls = ((MetaClass) cls).getRealClass();
  return cls;
}

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

/**
 * Calculate, based on given RubyModule, which class in its hierarchy
 * should be used to determine protected access.
 *
 * @param cls The class from which to calculate
 * @return The class to be used for protected access checking.
 */
protected static RubyModule calculateProtectedClass(RubyModule cls) {
  // singleton classes don't get their own visibility domain
  if (cls.isSingleton()) cls = cls.getSuperClass();
  while (cls.isIncluded()) cls = cls.getMetaClass();
  // For visibility we need real meta class and not anonymous one from class << self
  if (cls instanceof MetaClass) cls = ((MetaClass) cls).getRealClass();
  if (cls instanceof PrependedModule) cls = ((PrependedModule) cls).getNonIncludedClass();
  return cls;
}

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

private RubyModule newClass(ThreadContext context, IRubyObject self, RubyModule classContainer, DynamicScope currDynScope, Object[] temp) {
  if (newIRClassBody instanceof IRMetaClassBody) return classContainer.getMetaClass();
  RubyClass sc;
  if (superClass == context.runtime.getIRManager().getNil()) {
    sc = null;
  } else {
    Object o = superClass.retrieve(context, self, currDynScope, temp);
    if (!(o instanceof RubyClass)) {
      throw context.runtime.newTypeError("superclass must be Class (" + o + " given)");
    }
    sc = (RubyClass) o;
  }
  return classContainer.defineOrGetClassUnder(newIRClassBody.getName(), sc);
}

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

private static RubyModule createPackageModule(RubyModule parent, String name, String packageString) {
  Ruby runtime = parent.getRuntime();
  RubyModule packageModule = (RubyModule) runtime.getJavaSupport().getPackageModuleTemplate().dup();
  packageModule.setInstanceVariable("@package_name", runtime.newString(
      packageString.length() > 0 ? packageString + '.' : packageString));
  // this is where we'll get connected when classes are opened using
  // package module syntax.
  packageModule.addClassProvider(JAVA_PACKAGE_CLASS_PROVIDER);
  parent.const_set(runtime.newSymbol(name), packageModule);
  MetaClass metaClass = (MetaClass) packageModule.getMetaClass();
  metaClass.setAttached(packageModule);
  return packageModule;
}
private static final Pattern CAMEL_CASE_PACKAGE_SPLITTER = Pattern.compile("([a-z][0-9]*)([A-Z])");

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

@Interp
public static IRubyObject classSuper(ThreadContext context, IRubyObject self, String id, RubyModule definingModule, IRubyObject[] args, Block block) {
  RubyClass superClass = definingModule.getMetaClass().getMethodLocation().getSuperClass();
  DynamicMethod method = superClass != null ? superClass.searchMethod(id) : UndefinedMethod.INSTANCE;
  IRubyObject rVal = method.isUndefined() ?
    Helpers.callMethodMissing(context, self, method.getVisibility(), id, CallType.SUPER, args, block)
      : method.call(context, self, superClass, id, args, block);
  return rVal;
}

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

@Interp
public static IRubyObject classSuper(ThreadContext context, IRubyObject self, String id, RubyModule definingModule, IRubyObject[] args, Block block) {
  RubyClass superClass = definingModule.getMetaClass().getMethodLocation().getSuperClass();
  DynamicMethod method = superClass != null ? superClass.searchMethod(id) : UndefinedMethod.INSTANCE;
  IRubyObject rVal = method.isUndefined() ?
    Helpers.callMethodMissing(context, self, method.getVisibility(), id, CallType.SUPER, args, block)
      : method.call(context, self, superClass, id, args, block);
  return rVal;
}

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

/** rb_mod_init_copy
 * 
 */
@JRubyMethod(name = "initialize_copy", required = 1)
@Override
public IRubyObject initialize_copy(IRubyObject original) {
  super.initialize_copy(original);
  RubyModule originalModule = (RubyModule)original;
  if (!getMetaClass().isSingleton()) setMetaClass(originalModule.getSingletonClassClone());
  setSuperClass(originalModule.getSuperClass());
  if (originalModule.hasVariables()) syncVariables(originalModule);
  syncConstants(originalModule);
  originalModule.cloneMethods(this);
  return this;
}

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

/** rb_mod_init_copy
 * 
 */
@JRubyMethod(name = "initialize_copy", required = 1)
@Override
public IRubyObject initialize_copy(IRubyObject original) {
  super.initialize_copy(original);
  RubyModule originalModule = (RubyModule)original;
  if (!getMetaClass().isSingleton()) setMetaClass(originalModule.getSingletonClassClone());
  setSuperClass(originalModule.getSuperClass());
  if (originalModule.hasVariables()) syncVariables(originalModule);
  syncConstants(originalModule);
  originalModule.cloneMethods(this);
  return this;
}

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

@Override
public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block aBlock) {
  IRubyObject[] args = prepareArguments(context, self, getCallArgs(), currDynScope, temp);
  Block block = prepareBlock(context, self, currDynScope, temp);
  String methodName = methAddr.getName();
  RubyModule definingModule = (RubyModule) getDefiningModule().retrieve(context, self, currDynScope, temp);
  RubyClass superClass = definingModule.getMetaClass().getSuperClass();
  DynamicMethod method = superClass != null ? superClass.searchMethod(methodName) : UndefinedMethod.INSTANCE;
  Object rVal = method.isUndefined() ? Helpers.callMethodMissing(context, self, method.getVisibility(), methodName, CallType.SUPER, args, block)
                    : method.call(context, self, superClass, methodName, args, block);
  return hasUnusedResult() ? null : rVal;
}

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

@Override
public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block aBlock) {
  IRubyObject[] args = prepareArguments(context, self, getCallArgs(), currDynScope, temp);
  Block block = prepareBlock(context, self, currDynScope, temp);
  String methodName = methAddr.getName();
  RubyModule definingModule = (RubyModule) getDefiningModule().retrieve(context, self, currDynScope, temp);
  RubyClass superClass = definingModule.getMetaClass().getSuperClass();
  DynamicMethod method = superClass != null ? superClass.searchMethod(methodName) : UndefinedMethod.INSTANCE;
  Object rVal = method.isUndefined() ? Helpers.callMethodMissing(context, self, method.getVisibility(), methodName, CallType.SUPER, args, block)
                    : method.call(context, self, superClass, methodName, args, block);
  return hasUnusedResult() ? null : rVal;
}

相关文章

微信公众号

最新文章

更多

RubyModule类方法