19
19
20
20
package org .elasticsearch .transport ;
21
21
22
- import com .google .common .collect .ImmutableList ;
23
22
import org .elasticsearch .cluster .node .DiscoveryNode ;
24
23
import org .elasticsearch .common .inject .AbstractModule ;
25
- import org .elasticsearch .common .inject .Module ;
26
- import org .elasticsearch .common .inject .Modules ;
27
- import org .elasticsearch .common .inject .SpawnModules ;
24
+ import org .elasticsearch .common .logging .ESLogger ;
25
+ import org .elasticsearch .common .logging .Loggers ;
28
26
import org .elasticsearch .common .settings .Settings ;
29
- import org .elasticsearch .transport .local .LocalTransportModule ;
30
- import org .elasticsearch .transport .netty .NettyTransportModule ;
27
+ import org .elasticsearch .plugins .Plugin ;
28
+ import org .elasticsearch .transport .local .LocalTransport ;
29
+ import org .elasticsearch .transport .netty .NettyTransport ;
30
+
31
+ import static org .elasticsearch .common .Preconditions .checkNotNull ;
31
32
32
33
/**
33
34
*
34
35
*/
35
- public class TransportModule extends AbstractModule implements SpawnModules {
36
+ public class TransportModule extends AbstractModule {
36
37
37
- private final Settings settings ;
38
-
39
38
public static final String TRANSPORT_TYPE_KEY = "transport.type" ;
40
39
public static final String TRANSPORT_SERVICE_TYPE_KEY = "transport.service.type" ;
41
40
41
+ private final ESLogger logger ;
42
+ private final Settings settings ;
43
+
44
+ private Class <? extends TransportService > configuredTransportService ;
45
+ private Class <? extends Transport > configuredTransport ;
46
+ private String configuredTransportServiceSource ;
47
+ private String configuredTransportSource ;
48
+
42
49
public TransportModule (Settings settings ) {
43
50
this .settings = settings ;
51
+ this .logger = Loggers .getLogger (getClass (), settings );
44
52
}
45
53
46
54
@ Override
47
- public Iterable <? extends Module > spawnModules () {
48
- Class <? extends Module > defaultTransportModule ;
49
- if ( DiscoveryNode . localNode ( settings )) {
50
- defaultTransportModule = LocalTransportModule .class ;
55
+ protected void configure () {
56
+ if ( configuredTransportService != null ) {
57
+ logger . info ( "Using [{}] as transport service, overridden by [{}]" , configuredTransportService . getName (), configuredTransportServiceSource );
58
+ bind ( TransportService .class ). to ( configuredTransportService ). asEagerSingleton () ;
51
59
} else {
52
- defaultTransportModule = NettyTransportModule .class ;
60
+ Class <? extends TransportService > defaultTransportService = TransportService .class ;
61
+ Class <? extends TransportService > transportService = settings .getAsClass (TRANSPORT_SERVICE_TYPE_KEY , defaultTransportService , "org.elasticsearch.transport." , "TransportService" );
62
+ if (!TransportService .class .equals (transportService )) {
63
+ bind (TransportService .class ).to (transportService ).asEagerSingleton ();
64
+ } else {
65
+ bind (TransportService .class ).asEagerSingleton ();
66
+ }
53
67
}
54
- return ImmutableList .of (Modules .createModule (settings .getAsClass (TRANSPORT_TYPE_KEY , defaultTransportModule , "org.elasticsearch.transport." , "TransportModule" ), settings ));
55
- }
56
68
57
- @ Override
58
- protected void configure () {
59
- Class <? extends TransportService > transportService = settings .getAsClass (TRANSPORT_SERVICE_TYPE_KEY , TransportService .class , "org.elasticsearch.transport." , "TransportService" );
60
- if (!TransportService .class .equals (transportService )) {
61
- bind (TransportService .class ).to (transportService ).asEagerSingleton ();
69
+ if (configuredTransport != null ) {
70
+ logger .info ("Using [{}] as transport, overridden by [{}]" , configuredTransport .getName (), configuredTransportSource );
71
+ bind (Transport .class ).to (configuredTransport ).asEagerSingleton ();
62
72
} else {
63
- bind (TransportService .class ).asEagerSingleton ();
73
+ Class <? extends Transport > defaultTransport = DiscoveryNode .localNode (settings ) ? LocalTransport .class : NettyTransport .class ;
74
+ Class <? extends Transport > transport = settings .getAsClass (TRANSPORT_TYPE_KEY , defaultTransport , "org.elasticsearch.transport." , "Transport" );
75
+ bind (Transport .class ).to (transport ).asEagerSingleton ();
64
76
}
65
77
}
78
+
79
+ public void setTransportService (Class <? extends TransportService > transportService , String source ) {
80
+ checkNotNull (transportService , "Configured transport service may not be null" );
81
+ checkNotNull (source , "Plugin, that changes transport service may not be null" );
82
+ this .configuredTransportService = transportService ;
83
+ this .configuredTransportServiceSource = source ;
84
+ }
85
+
86
+ public void setTransport (Class <? extends Transport > transport , String source ) {
87
+ checkNotNull (transport , "Configured transport may not be null" );
88
+ checkNotNull (source , "Plugin, that changes transport may not be null" );
89
+ this .configuredTransport = transport ;
90
+ this .configuredTransportSource = source ;
91
+ }
66
92
}
0 commit comments