Class: VertxWeb::MultiTenantHandler
- Inherits:
-
Object
- Object
- VertxWeb::MultiTenantHandler
- 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
Constant Summary
- @@j_api_type =
Object.new
Class Method Summary (collapse)
- + (Boolean) accept?(obj)
-
+ (::VertxWeb::MultiTenantHandler) create(*args)
Create a MultiTenant handler using a custom tenant extraction function.
- + (Object) j_api_type
- + (Object) j_class
-
+ (Object) TENANT
The default key used to identify a tenant in the context data.
- + (Object) unwrap(obj)
- + (Object) wrap(obj)
Instance Method Summary (collapse)
-
- (self) addDefaultHandler(handler) { ... }
Add a default handler for the case when no tenant was matched.
-
- (self) addTenantHandler(tenant, handler) { ... }
Add a handler for a given tenant to this handler.
-
- (void) handle(event)
Something has happened, so handle it.
-
- (self) removeTenant(tenant)
Remove a handler for a given tenant from this handler.
Class Method Details
+ (Boolean) accept?(obj)
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.
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.
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.
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.
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.
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 |