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