org.jruby.RubyClass.getInstanceVariable()方法的使用及代码示例

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

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

RubyClass.getInstanceVariable介绍

暂无

代码示例

代码示例来源:origin: bazelbuild/bazel

@JRubyMethod(name = "descriptor", meta = true)
public static IRubyObject getDescriptor(ThreadContext context, IRubyObject recv) {
  return ((RubyClass) recv).getInstanceVariable(Utils.DESCRIPTOR_INSTANCE_VAR);
}

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

@JRubyMethod
public static IRubyObject java_class(ThreadContext context, IRubyObject recv) {
  return recv.getMetaClass().getRealClass().getInstanceVariable("@java_class");
}

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

@JRubyMethod
public static IRubyObject java_class(ThreadContext context, IRubyObject recv) {
  return recv.getMetaClass().getRealClass().getInstanceVariable("@java_class");
}

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

@JRubyMethod
public static IRubyObject java_class(ThreadContext context, IRubyObject recv) {
  return recv.getMetaClass().getRealClass().getInstanceVariable("@java_class");
}

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

@JRubyMethod
public static IRubyObject java_class(ThreadContext context, IRubyObject recv) {
  return recv.getMetaClass().getRealClass().getInstanceVariable("@java_class");
}

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

@JRubyMethod(name = { "size" }, meta = true)
public static IRubyObject size(ThreadContext context, IRubyObject structClass) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  RubyClass klass = (RubyClass) structClass;
  Object obj = klass.getFFIHandle();
  if (obj instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  }
  if ((obj = ((RubyClass) structClass).getInstanceVariable("@layout")) instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  } else {
    obj = ((RubyClass) structClass).getInstanceVariable("@size");
  }
  return obj instanceof RubyFixnum ? (RubyFixnum) obj : RubyFixnum.zero(context.runtime);
}

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

@JRubyMethod(name = { "size" }, meta = true)
public static IRubyObject size(ThreadContext context, IRubyObject structClass) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  RubyClass klass = (RubyClass) structClass;
  Object obj = klass.getFFIHandle();
  if (obj instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  }
  if ((obj = ((RubyClass) structClass).getInstanceVariable("@layout")) instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  } else {
    obj = ((RubyClass) structClass).getInstanceVariable("@size");
  }
  return obj instanceof RubyFixnum ? (RubyFixnum) obj : RubyFixnum.zero(context.runtime);
}

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

@JRubyMethod(name = { "size" }, meta = true)
public static IRubyObject size(ThreadContext context, IRubyObject structClass) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  RubyClass klass = (RubyClass) structClass;
  Object obj = klass.getFFIHandle();
  if (obj instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  }
  if ((obj = ((RubyClass) structClass).getInstanceVariable("@layout")) instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  } else {
    obj = ((RubyClass) structClass).getInstanceVariable("@size");
  }
  return obj instanceof RubyFixnum ? (RubyFixnum) obj : RubyFixnum.zero(context.runtime);
}

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

private static void checkAlreadyReified(final RubyClass clazz, Ruby runtime) throws RaiseException {
  // not allowed for original (non-generated) Java classes
  // note: not allowing for any previously created class right now;
  // this restriction might be loosened later for generated classes
  if ( ( Java.NEW_STYLE_EXTENSION && clazz.getReifiedClass() != null )
      ||
      ( clazz.hasInstanceVariable("@java_class")
        && clazz.getInstanceVariable("@java_class").isTrue()
        && !clazz.getSingletonClass().isMethodBound("java_proxy_class", false) )
      ||
      ( clazz.hasInstanceVariable("@java_proxy_class")
        && clazz.getInstanceVariable("@java_proxy_class").isTrue() ) ) {
    throw runtime.newArgumentError("can not add Java interface to existing Java class");
  }
}

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

private static void checkAlreadyReified(final RubyClass clazz, Ruby runtime) throws RaiseException {
  // not allowed for original (non-generated) Java classes
  // note: not allowing for any previously created class right now;
  // this restriction might be loosened later for generated classes
  if ( ( Java.NEW_STYLE_EXTENSION && clazz.getReifiedClass() != null )
      ||
      ( clazz.hasInstanceVariable("@java_class")
        && clazz.getInstanceVariable("@java_class").isTrue()
        && !clazz.getSingletonClass().isMethodBound("java_proxy_class", false) )
      ||
      ( clazz.hasInstanceVariable("@java_proxy_class")
        && clazz.getInstanceVariable("@java_proxy_class").isTrue() ) ) {
    throw runtime.newArgumentError("can not add Java interface to existing Java class");
  }
}

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

@JRubyMethod(name = { "size" }, meta = true)
public static IRubyObject size(ThreadContext context, IRubyObject structClass) {
  if (!(structClass instanceof RubyClass)) {
    throw context.runtime.newTypeError(structClass, context.runtime.getClassClass());
  }
  RubyClass klass = (RubyClass) structClass;
  Object obj = klass.getFFIHandle();
  if (obj instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  }
  if ((obj = ((RubyClass) structClass).getInstanceVariable("@layout")) instanceof StructLayout) {
    return ((StructLayout) obj).size(context);
  } else {
    obj = ((RubyClass) structClass).getInstanceVariable("@size");
  }
  return obj instanceof RubyFixnum ? (RubyFixnum) obj : RubyFixnum.zero(context.runtime);
}

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

private static void checkAlreadyReified(final RubyClass clazz, Ruby runtime) throws RaiseException {
  // not allowed for original (non-generated) Java classes
  // note: not allowing for any previously created class right now;
  // this restriction might be loosened later for generated classes
  if ((Java.NEW_STYLE_EXTENSION && clazz.getReifiedClass() != null)
      ||
      (clazz.hasInstanceVariable("@java_class")
        && clazz.getInstanceVariable("@java_class").isTrue()
        && !clazz.getSingletonClass().isMethodBound("java_proxy_class", false))
      ||
      (clazz.hasInstanceVariable("@java_proxy_class")
        && clazz.getInstanceVariable("@java_proxy_class").isTrue())) {
    throw runtime.newArgumentError("can not add Java interface to existing Java class");
  }
}

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

private static void checkAlreadyReified(final RubyClass clazz, Ruby runtime) throws RaiseException {
  // not allowed for original (non-generated) Java classes
  // note: not allowing for any previously created class right now;
  // this restriction might be loosened later for generated classes
  if ((Java.NEW_STYLE_EXTENSION && clazz.getReifiedClass() != null)
      ||
      (clazz.hasInstanceVariable("@java_class")
        && clazz.getInstanceVariable("@java_class").isTrue()
        && !clazz.getSingletonClass().isMethodBound("java_proxy_class", false))
      ||
      (clazz.hasInstanceVariable("@java_proxy_class")
        && clazz.getInstanceVariable("@java_proxy_class").isTrue())) {
    throw runtime.newArgumentError("can not add Java interface to existing Java class");
  }
}

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

private static JavaProxyClass getProxyClass(final IRubyObject self) {
  final RubyClass metaClass = self.getMetaClass();
  IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class");
  if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new
    proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass);
    metaClass.setInstanceVariable("@java_proxy_class", proxyClass);
  }
  return (JavaProxyClass) proxyClass;
}

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

private static JavaProxyClass getProxyClass(final IRubyObject self) {
  final RubyClass metaClass = self.getMetaClass();
  IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class");
  if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new
    proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass);
    metaClass.setInstanceVariable("@java_proxy_class", proxyClass);
  }
  return (JavaProxyClass) proxyClass;
}

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

private boolean exceptionHandled(ThreadContext context, IRubyObject excType, Object excObj) {
  Ruby runtime = context.runtime;
  if (excObj instanceof IRubyObject) {
    // regular ruby exception
    if (!(excType instanceof RubyModule)) throw runtime.newTypeError("class or module required for rescue clause. Found: " + excType);
    return excType.callMethod(context, "===", (IRubyObject)excObj).isTrue();
  } else if (runtime.getException().op_ge(excType).isTrue() || runtime.getObject() == excType) {
    // convert java obj to a ruby object and try again
    return excType.callMethod(context, "===", JavaUtil.convertJavaToUsableRubyObject(runtime, excObj)).isTrue();
  } else if (excType instanceof RubyClass && excType.getInstanceVariables().hasInstanceVariable("@java_class")) {
    // java exception where the rescue clause has an embedded java class that could catch it
    RubyClass rubyClass = (RubyClass)excType;
    JavaClass javaClass = (JavaClass)rubyClass.getInstanceVariable("@java_class");
    if (javaClass != null) {
      Class cls = javaClass.javaClass();
      if (cls.isInstance(excObj)) return true;
    }
  }
  return false;
}

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

private static void appendFeaturesToClass(ThreadContext context, final IRubyObject self, final RubyClass clazz) {
  final Ruby runtime = context.runtime;
  checkAlreadyReified(clazz, runtime);
  final JavaClass javaClass = getJavaClassForInterface(self);
  RubyArray javaInterfaces;
  if ( ! clazz.hasInstanceVariable("@java_interfaces") ) {
    javaInterfaces = RubyArray.newArray(runtime, javaClass);
    clazz.setInstanceVariable("@java_interfaces", javaInterfaces);
    initInterfaceImplMethods(context, clazz);
  }
  else {
    javaInterfaces = (RubyArray) clazz.getInstanceVariable("@java_interfaces");
    // we've already done the above priming logic, just add another interface
    // to the list of intentions unless we're past the point of no return or
    // already intend to implement the given interface
    if ( ! ( javaInterfaces.isFrozen() || javaInterfaces.includes(context, javaClass) ) ) {
      javaInterfaces.append(javaClass);
    }
  }
}

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

private boolean exceptionHandled(ThreadContext context, IRubyObject excType, Object excObj) {
  Ruby runtime = context.runtime;
  if (excObj instanceof IRubyObject) {
    // regular ruby exception
    if (!(excType instanceof RubyModule)) throw runtime.newTypeError("class or module required for rescue clause. Found: " + excType);
    return excType.callMethod(context, "===", (IRubyObject)excObj).isTrue();
  } else if (runtime.getException().op_ge(excType).isTrue() || runtime.getObject() == excType) {
    // convert java obj to a ruby object and try again
    return excType.callMethod(context, "===", JavaUtil.convertJavaToUsableRubyObject(runtime, excObj)).isTrue();
  } else if (excType instanceof RubyClass && excType.getInstanceVariables().hasInstanceVariable("@java_class")) {
    // java exception where the rescue clause has an embedded java class that could catch it
    RubyClass rubyClass = (RubyClass)excType;
    JavaClass javaClass = (JavaClass)rubyClass.getInstanceVariable("@java_class");
    if (javaClass != null) {
      Class cls = javaClass.javaClass();
      if (cls.isInstance(excObj)) return true;
    }
  }
  return false;
}

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

private static void appendFeaturesToClass(ThreadContext context, final IRubyObject self, final RubyClass clazz) {
  final Ruby runtime = context.runtime;
  checkAlreadyReified(clazz, runtime);
  final JavaClass javaClass = getJavaClassForInterface(self);
  RubyArray javaInterfaces;
  if ( ! clazz.hasInstanceVariable("@java_interfaces") ) {
    javaInterfaces = RubyArray.newArray(runtime, javaClass);
    clazz.setInstanceVariable("@java_interfaces", javaInterfaces);
    initInterfaceImplMethods(context, clazz);
  }
  else {
    javaInterfaces = (RubyArray) clazz.getInstanceVariable("@java_interfaces");
    // we've already done the above priming logic, just add another interface
    // to the list of intentions unless we're past the point of no return or
    // already intend to implement the given interface
    if ( ! ( javaInterfaces.isFrozen() || javaInterfaces.includes(context, javaClass) ) ) {
      javaInterfaces.append(javaClass);
    }
  }
}

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

static final StructLayout getStructLayout(Ruby runtime, IRubyObject structClass) {
  try {
    Object layout = ((RubyClass) structClass).getFFIHandle();
    if (layout instanceof StructLayout) {
      return (StructLayout) layout;
    }
    RubyClass klass = (RubyClass) structClass;
    while (klass != runtime.getObject() && !((layout = klass.getInstanceVariable("@layout")) instanceof StructLayout)) {
      klass = klass.getSuperClass();
    }
    if (!(layout instanceof StructLayout)) {
      throw runtime.newRuntimeError("no valid struct layout for " + ((RubyClass) structClass).getName());
    }
    // Cache the layout on the Struct metaclass for faster retrieval next time
    ((RubyClass) structClass).setFFIHandle(layout);
    return (StructLayout) layout;
  } catch (ClassCastException ex) {
    if (!(structClass instanceof RubyClass)) {
      throw runtime.newTypeError("wrong argument type "
          + structClass.getMetaClass().getName() + " (expected subclass of Struct)");
    }
    throw runtime.newRuntimeError("invalid layout set for struct " + ((RubyClass) structClass).getName());
  }
}

相关文章

微信公众号

最新文章

更多

RubyClass类方法