class PIM::Services::ProxyService
Public Class Methods
has_external_service?(name = nil)
click to toggle source
# File services.rb, line 49 def self.has_external_service? name = nil unless name.nil? # FIXME: Add a "callback" to determine if the specified service actually exists! return false if DISABLED_EXTERNAL_SERVICES.include?(name.to_s) end return ::Object.private_method_defined?(:__external_service_callback) end
has_java_service?(name = nil)
click to toggle source
# File services.rb, line 59 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 com.lansa.lax.ruby.ServicesRegistry.has_any_service() rescue NameError return false end end
has_service?(name)
click to toggle source
# File services.rb, line 45 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 16 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 20 def method_missing name, *args, &block if ProxyService.has_service?(@service_name) # Suspend ExecutionGuard Thread#raise for both Yakut and JRuby service calls: # deliver deadline expiry on resume after the call returns (wall-clock still # counts), never mid-call / Fiber.yield / guard cleanup. return PIM.suspend_execution_guard do if ProxyService.has_external_service?(@service_name) __external_service_callback(@service_name, name.to_s, *args) else # 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? java_service.send(name, *args, &block) end end end super end