Module: Cheri::Java::Builder::Constants

Defined in:
lib/cheri/java/builder/util.rb

Overview

TODO: leftover from JRBuilder, rethink for Cheri

Defined Under Namespace

Classes: ConstRec

Constant Summary collapse

CJava =

:stopdoc:

Cheri::Java

Class Method Summary collapse

Class Method Details

.resolve_ctor(clazz, args, constants) ⇒ Object



208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/cheri/java/builder/util.rb', line 208

def resolve_ctor(clazz,args,constants)
  return true if args.empty?
  # try the simple resolve first
  const_arr = simple_resolve(clazz,args)
  return true unless const_arr
  # check against constructor argument types
  argc = args.length
  key = "#{clazz.java_class.name}##{argc}"
  ctor_args = @method_cache[key]
  unless ctor_args
    ctor_args = []
    clazz.java_class.constructors.each do |ctor|
      ctor_args << ctor.argument_types if ctor.arity == argc  
    end
    @method_cache[key] = ctor_args
  end
  if ctor_args.empty?
    raise NoMethodError,"No constructor found for class '#{clazz.java_class.name} with argument count #{argc}"
  end
  arg_type_resolve(clazz,const_arr,ctor_args,args,constants)
end

.resolve_meth(clazz, method_name, args, constants) ⇒ Object



230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
# File 'lib/cheri/java/builder/util.rb', line 230

def resolve_meth(clazz,method_name,args,constants)
  return true if args.empty?
  # try the simple resolve first
  const_arr = simple_resolve(clazz,args)
  return true unless const_arr
  argc = args.length
  cased_method_name = Util.lcc(method_name)
  key = "#{clazz.java_class.name}##{cased_method_name}##{argc}"
  method_args = @method_cache[key]
  unless method_args
    method_args = []
    clazz.java_class.java_instance_methods.each do |method|
      if method.arity == argc && method.name == cased_method_name
        method_args << method.argument_types
      end
    end
    @method_cache[key] = method_args
  end
  if method_args.empty?
    raise NoMethodError,"No method '#{method_name}' found in class '#{clazz.java_class.name} with argument count #{argc}"
  end
  arg_type_resolve(clazz,const_arr,method_args,args,constants)
end