Class List Method List File List

# Class: VertxServiceDiscovery::ServiceReference

Inherits:
  Object
  - Object
  - VertxServiceDiscovery::ServiceReference
  show all
Defined in:
  /Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb

## Overview

Once a consumer has chosen a service, it builds a ServiceReference managing the binding with the chosen service provider.

The reference lets the consumer: * access the service (via a proxy or a client) with the #get method * release the reference - so the binding between the consumer and the provider is removed

## Constant Summary

@@j_api_type =

      Object.new

## Class Method Summary (collapse)

- + (Boolean) accept?(obj)
- + (Object) j_api_type
- + (Object) j_class
- + (Object) unwrap(obj)
- + (Object) wrap(obj)

## Instance Method Summary (collapse)

- - (Object) cached
  Gets the service object if already retrieved.
- - (Object) cached_as(x = nil)
  Gets the service object if already retrieved.
- - (Object) get
  Gets the object to access the service.
- - (Object) get_as(x = nil)
  Gets the object to access the service.
- - (true, false) holding?(object = nil)
  Checks whether or not the service reference has the given service object.
- - (Hash) record
  The service record.
- - (void) release
  Releases the reference.

## Class Method Details

### + (`Boolean`) accept?(obj)

Returns:

- (`Boolean`)

    22
    23
    24
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 22

    def @@j_api_type.accept?(obj)
      obj.class == ServiceReference
    end

### + (`Object`) j_api_type

    31
    32
    33
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 31

    def self.j_api_type
      @@j_api_type
    end

### + (`Object`) j_class

    34
    35
    36
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 34

    def self.j_class
      Java::IoVertxServicediscovery::ServiceReference.java_class
    end

### + (`Object`) unwrap(obj)

    28
    29
    30
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 28

    def @@j_api_type.unwrap(obj)
      obj.j_del
    end

### + (`Object`) wrap(obj)

    25
    26
    27
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 25

    def @@j_api_type.wrap(obj)
      ServiceReference.new(obj)
    end

## Instance Method Details

### - (`Object`) cached

Gets the service object if already retrieved. It won't try to acquire the service object if not retrieved yet.

Returns:

- (`Object`) —
  the object, `null` if not yet retrieved

Raises:

- (`ArgumentError`)

    79
    80
    81
    82
    83
    84
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 79

    def cached
      if !block_given?
        return ::Vertx::Util::Utils.from_object(@j_del.java_method(:cached, []).call())
      end
      raise ArgumentError, "Invalid arguments when calling cached()"
    end

### - (`Object`) cached_as(x = nil)

Gets the service object if already retrieved. It won't try to acquire the service object if not retrieved yet. Unlike #cached, this method return the warpped object to the desired (given) type.

Parameters:

- x (`Nil`) (defaults to: `nil`) —
  the type of object

Returns:

- (`Object`) —
  the object, `null` if not yet retrieved

Raises:

- (`ArgumentError`)

    71
    72
    73
    74
    75
    76
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 71

    def cached_as(x=nil)
      if x.class == Class && !block_given?
        return ::Vertx::Util::Utils.v_type_of(x).wrap(@j_del.java_method(:cachedAs, [Java::JavaLang::Class.java_class]).call(::Vertx::Util::Utils.j_class_of(x)))
      end
      raise ArgumentError, "Invalid arguments when calling cached_as(#{x})"
    end

### - (`Object`) get

Gets the object to access the service. It can be a proxy, a client or whatever object. The type depends on the service type and the server itself. This method returns the Java version and primary facet of the object, use #get_as to retrieve the polyglot instance of the object or another facet..

Returns:

- (`Object`) —
  the object to access the service

Raises:

- (`ArgumentError`)

    51
    52
    53
    54
    55
    56
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 51

    def get
      if !block_given?
        return ::Vertx::Util::Utils.from_object(@j_del.java_method(:get, []).call())
      end
      raise ArgumentError, "Invalid arguments when calling get()"
    end

### - (`Object`) get_as(x = nil)

Gets the object to access the service. It can be a proxy, a client or whatever object. The type depends on the service type and the server itself. This method wraps the service object into the desired type.

Parameters:

- x (`Nil`) (defaults to: `nil`) —
  the type of object

Returns:

- (`Object`) —
  the object to access the service wrapped to the given type

Raises:

- (`ArgumentError`)

    61
    62
    63
    64
    65
    66
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 61

    def get_as(x=nil)
      if x.class == Class && !block_given?
        return ::Vertx::Util::Utils.v_type_of(x).wrap(@j_del.java_method(:getAs, [Java::JavaLang::Class.java_class]).call(::Vertx::Util::Utils.j_class_of(x)))
      end
      raise ArgumentError, "Invalid arguments when calling get_as(#{x})"
    end

### - (`true`, `false`) holding?(object = nil)

Checks whether or not the service reference has the given service object.

Parameters:

- object (`Object`) (defaults to: `nil`) —
  the service object, must not be `null`

Returns:

- (`true`, `false`) —
  `true` if the service reference service object is equal to the given object, `false` otherwise.

Raises:

- (`ArgumentError`)

    97
    98
    99
    100
    101
    102
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 97

    def holding?(object=nil)
      if ::Vertx::Util::unknown_type.accept?(object) && !block_given?
        return @j_del.java_method(:isHolding, [Java::java.lang.Object.java_class]).call(::Vertx::Util::Utils.to_object(object))
      end
      raise ArgumentError, "Invalid arguments when calling holding?(#{object})"
    end

### - (`Hash`) record

Returns the service record.

Returns:

- (`Hash`) —
  the service record.

Raises:

- (`ArgumentError`)

    38
    39
    40
    41
    42
    43
    44
    45
    46
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 38

    def record
      if !block_given?
        if @cached_record != nil
          return @cached_record
        end
        return @cached_record = @j_del.java_method(:record, []).call() != nil ? JSON.parse(@j_del.java_method(:record, []).call().toJson.encode) : nil
      end
      raise ArgumentError, "Invalid arguments when calling record()"
    end

### - (`void`) release

This method returns an undefined value.

Releases the reference. Once released, the consumer must not use the reference anymore. This method must be idempotent and defensive, as multiple call may happen.

Raises:

- (`ArgumentError`)

    88
    89
    90
    91
    92
    93
    # File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-service-discovery/service_reference.rb', line 88

    def release
      if !block_given?
        return @j_del.java_method(:release, []).call()
      end
      raise ArgumentError, "Invalid arguments when calling release()"
    end