Class: VertxWeb::MultiTenantHandler

Inherits:
Object
  • Object
show all
Defined in:
/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb

Overview

A handler which selectively executes another handler if a precondition is met. There are cases where applications are build as multi tenant, in this cases one of the common tasks is to configure different authentication mechanisms for each tenant. This handler will allow registering any other handler and will only execute it if the precondition is met. There are 2 way of defining a precondition:
  • A http header value for example
    X-Tenant
  • A custom extractor function that can return a String from the context
Requests that pass the validation will contain a new key in the routing context with the tenant id, for the case of being a default handler the value if this key will be "default".

Constant Summary

@@j_api_type =
Object.new

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (Boolean) accept?(obj)

Returns:

  • (Boolean)


33
34
35
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 33

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

+ (::VertxWeb::MultiTenantHandler) create(header) + (::VertxWeb::MultiTenantHandler) create(tenantExtractor) { ... } + (::VertxWeb::MultiTenantHandler) create(tenantExtractor, contextKey)

Create a MultiTenant handler using a custom tenant extraction function.

Overloads:

  • + (::VertxWeb::MultiTenantHandler) create(header)

    Parameters:

    • header (String)
      the header to lookup (e.g.: "X-Tenant")
  • + (::VertxWeb::MultiTenantHandler) create(tenantExtractor) { ... }

    Yields:

    • the function that extracts the tenant id from the request
  • + (::VertxWeb::MultiTenantHandler) create(tenantExtractor, contextKey)

    Parameters:

    • tenantExtractor (Proc)
      the function that extracts the tenant id from the request
    • contextKey (String)
      the custom key to store the tenant id in the context

Returns:



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 92

def self.create(*args)
  if args[0].class == String && !block_given? && args[1] == nil
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxExtWebHandler::MultiTenantHandler.java_method(:create, [Java::java.lang.String.java_class]).call(args[0]),::VertxWeb::MultiTenantHandler)
  elsif block_given? && args[0] == nil && args[1] == nil
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxExtWebHandler::MultiTenantHandler.java_method(:create, [Java::JavaUtilFunction::Function.java_class]).call((Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::VertxWeb::RoutingContext)) unless !block_given? })),::VertxWeb::MultiTenantHandler)
  elsif args[0].class == Proc && args[1].class == String && !block_given?
    return ::Vertx::Util::Utils.safe_create(Java::IoVertxExtWebHandler::MultiTenantHandler.java_method(:create, [Java::JavaUtilFunction::Function.java_class,Java::java.lang.String.java_class]).call((Proc.new { |event| args[0].call(::Vertx::Util::Utils.safe_create(event,::VertxWeb::RoutingContext)) unless args[0] == nil }),args[1]),::VertxWeb::MultiTenantHandler)
  end
  if defined?(super)
    super
  else
    raise ArgumentError, "Invalid arguments when calling create(#{args[0]},#{args[1]})"
  end
end

+ (Object) j_api_type



42
43
44
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 42

def self.j_api_type
  @@j_api_type
end

+ (Object) j_class



45
46
47
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 45

def self.j_class
  Java::IoVertxExtWebHandler::MultiTenantHandler.java_class
end

+ (Object) TENANT

The default key used to identify a tenant in the context data.


138
139
140
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 138

def self.TENANT
  Java::IoVertxExtWebHandler::MultiTenantHandler.TENANT
end

+ (Object) unwrap(obj)



39
40
41
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 39

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

+ (Object) wrap(obj)



36
37
38
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 36

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

Instance Method Details

- (self) addDefaultHandler(handler) { ... }

Add a default handler for the case when no tenant was matched. The handler cannot be null.

Yields:

  • the handler to register.

Returns:

  • (self)


72
73
74
75
76
77
78
79
80
81
82
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 72

def add_default_handler
  if true
    @j_del.java_method(:addDefaultHandler, [Java::IoVertxCore::Handler.java_class]).call((Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::VertxWeb::RoutingContext)) unless !block_given? }))
    return self
  end
  if defined?(super)
    super
  else
    raise ArgumentError, "Invalid arguments when calling add_default_handler()"
  end
end

- (self) addTenantHandler(tenant, handler) { ... }

Add a handler for a given tenant to this handler. Both tenant and handler cannot be null.

Parameters:

  • tenant (String)
    the tenant id

Yields:

  • the handler to register.

Returns:

  • (self)


55
56
57
58
59
60
61
62
63
64
65
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 55

def add_tenant_handler(*args)
  if args[0].class == String && true
    @j_del.java_method(:addTenantHandler, [Java::java.lang.String.java_class,Java::IoVertxCore::Handler.java_class]).call(args[0],(Proc.new { |event| yield(::Vertx::Util::Utils.safe_create(event,::VertxWeb::RoutingContext)) unless !block_given? }))
    return self
  end
  if defined?(super)
    super
  else
    raise ArgumentError, "Invalid arguments when calling add_tenant_handler(#{args[0]})"
  end
end

- (void) handle(event)

This method returns an undefined value.

Something has happened, so handle it.

Parameters:



110
111
112
113
114
115
116
117
118
119
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 110

def handle(*args)
  if args[0].class.method_defined?(:j_del) && !block_given?
    return @j_del.java_method(:handle, [Java::IoVertxExtWeb::RoutingContext.java_class]).call(args[0].j_del)
  end
  if defined?(super)
    super
  else
    raise ArgumentError, "Invalid arguments when calling handle(#{args[0]})"
  end
end

- (self) removeTenant(tenant)

Remove a handler for a given tenant from this handler. Tenant cannot be null.

Parameters:

  • tenant (String)
    the tenant id

Returns:

  • (self)


126
127
128
129
130
131
132
133
134
135
136
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-web/multi_tenant_handler.rb', line 126

def remove_tenant(*args)
  if args[0].class == String && !block_given?
    @j_del.java_method(:removeTenant, [Java::java.lang.String.java_class]).call(args[0])
    return self
  end
  if defined?(super)
    super
  else
    raise ArgumentError, "Invalid arguments when calling remove_tenant(#{args[0]})"
  end
end