本文整理了Java中org.jruby.RubyClass.getInstanceVariable
方法的一些代码示例,展示了RubyClass.getInstanceVariable
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RubyClass.getInstanceVariable
方法的具体详情如下:
包路径:org.jruby.RubyClass
类名称: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());
}
}
内容来源于网络,如有侵权,请联系作者删除!