class PIM::Services::ProxyService

Public Class Methods

has_external_service?(name = nil) click to toggle source
# File services.rb, line 42
def self.has_external_service? name = nil
  # FIXME: Add a "callback" to determine if the specified service exists!
  return ::Object.private_method_defined?(:__external_service_callback)
end
has_java_service?(name = nil) click to toggle source
# File services.rb, line 47
def self.has_java_service? name = nil
  return false unless PIM.has_java?
  begin
    java_import 'com.lansa.lax.ruby.ServicesRegistry'
    return com.lansa.lax.ruby.ServicesRegistry.has_service(name) unless name.nil?
    return true
  rescue NameError
    return false
  end
end
has_service?(name) click to toggle source
# File services.rb, line 38
def self.has_service? name
  return (has_external_service?(name) or has_java_service?(name))
end
new(service_name) click to toggle source
# File services.rb, line 13
def initialize service_name
  @service_name = service_name.to_s
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File services.rb, line 17
def method_missing name, *args, &block

  if ProxyService.has_external_service?

    # Call '__external_service_callback' method directly
    return __external_service_callback(@service_name, name.to_s, *args)

  elsif ProxyService.has_java_service?

    # Use service defined in Java services registry
    # TODO: Ensure only methods are being called which have the proper annotation!
    java_service = com.lansa.lax.ruby.ServicesRegistry.get_service(@service_name)
    raise "No java service for '#{@service_name}' registered" if java_service.nil?
    return java_service.send(name, *args, &block)

  end

  super

end