openvidu-server: Bean initialization refactoring

pull/370/head
pabloFuente 2019-10-09 15:03:16 +02:00
parent aa7a2c7adf
commit f017909c4a
2 changed files with 51 additions and 38 deletions

View File

@ -26,12 +26,12 @@ import org.kurento.jsonrpc.server.JsonRpcConfigurer;
import org.kurento.jsonrpc.server.JsonRpcHandlerRegistry; import org.kurento.jsonrpc.server.JsonRpcHandlerRegistry;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
@ -81,12 +81,10 @@ public class OpenViduServer implements JsonRpcConfigurer {
public static String wsUrl; public static String wsUrl;
public static String httpUrl; public static String httpUrl;
@Autowired
OpenviduConfig openviduConfig;
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public KmsManager kmsManager() { @DependsOn("openviduConfig")
public KmsManager kmsManager(OpenviduConfig openviduConfig) {
if (openviduConfig.getKmsUris().isEmpty()) { if (openviduConfig.getKmsUris().isEmpty()) {
throw new IllegalArgumentException("'kms.uris' should contain at least one KMS url"); throw new IllegalArgumentException("'kms.uris' should contain at least one KMS url");
} }
@ -97,7 +95,8 @@ public class OpenViduServer implements JsonRpcConfigurer {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public CallDetailRecord cdr() { @DependsOn("openviduConfig")
public CallDetailRecord cdr(OpenviduConfig openviduConfig) {
List<CDRLogger> loggers = new ArrayList<>(); List<CDRLogger> loggers = new ArrayList<>();
if (openviduConfig.isCdrEnabled()) { if (openviduConfig.isCdrEnabled()) {
log.info("OpenVidu CDR is enabled"); log.info("OpenVidu CDR is enabled");
@ -111,10 +110,46 @@ public class OpenViduServer implements JsonRpcConfigurer {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public CoturnCredentialsService coturnCredentialsService() { @DependsOn("openviduConfig")
public CoturnCredentialsService coturnCredentialsService(OpenviduConfig openviduConfig) {
return new CoturnCredentialsServiceFactory().getCoturnCredentialsService(openviduConfig.getSpringProfile()); return new CoturnCredentialsServiceFactory().getCoturnCredentialsService(openviduConfig.getSpringProfile());
} }
@Bean
@ConditionalOnMissingBean
@DependsOn("openviduConfig")
public SessionManager sessionManager() {
return new KurentoSessionManager();
}
@Bean
@ConditionalOnMissingBean
@DependsOn("openviduConfig")
public RpcHandler rpcHandler() {
return new RpcHandler();
}
@Bean
@ConditionalOnMissingBean
@DependsOn("openviduConfig")
public SessionEventsHandler sessionEventsHandler() {
return new KurentoSessionEventsHandler();
}
@Bean
@ConditionalOnMissingBean
@DependsOn("openviduConfig")
public TokenGenerator tokenGenerator() {
return new TokenGeneratorDefault();
}
@Bean
@ConditionalOnMissingBean
@DependsOn("openviduConfig")
public RecordingManager recordingManager() {
return new RecordingManager();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public LoadManager loadManager() { public LoadManager loadManager() {
@ -127,42 +162,12 @@ public class OpenViduServer implements JsonRpcConfigurer {
return new RpcNotificationService(); return new RpcNotificationService();
} }
@Bean
@ConditionalOnMissingBean
public SessionManager sessionManager() {
return new KurentoSessionManager();
}
@Bean
@ConditionalOnMissingBean
public RpcHandler rpcHandler() {
return new RpcHandler();
}
@Bean
@ConditionalOnMissingBean
public SessionEventsHandler sessionEventsHandler() {
return new KurentoSessionEventsHandler();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public KurentoParticipantEndpointConfig kurentoEndpointConfig() { public KurentoParticipantEndpointConfig kurentoEndpointConfig() {
return new KurentoParticipantEndpointConfig(); return new KurentoParticipantEndpointConfig();
} }
@Bean
@ConditionalOnMissingBean
public TokenGenerator tokenGenerator() {
return new TokenGeneratorDefault();
}
@Bean
@ConditionalOnMissingBean
public RecordingManager recordingManager() {
return new RecordingManager();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public RecordingDownloader recordingDownload() { public RecordingDownloader recordingDownload() {

View File

@ -62,6 +62,8 @@ public class OpenviduConfig {
private static final Logger log = LoggerFactory.getLogger(OpenviduConfig.class); private static final Logger log = LoggerFactory.getLogger(OpenviduConfig.class);
private static volatile boolean FIRST_INITIALIZATION = true;
public static final List<String> OPENVIDU_STRING_PROPERTIES = Arrays.asList(new String[] { "openvidu.secret", public static final List<String> OPENVIDU_STRING_PROPERTIES = Arrays.asList(new String[] { "openvidu.secret",
"openvidu.publicurl", "openvidu.recording.path", "openvidu.recording.notification", "openvidu.publicurl", "openvidu.recording.path", "openvidu.recording.notification",
"openvidu.recording.custom-layout", "openvidu.recording.composed-url", "openvidu.recording.version", "openvidu.recording.custom-layout", "openvidu.recording.composed-url", "openvidu.recording.version",
@ -742,7 +744,13 @@ public class OpenviduConfig {
} }
@PostConstruct @PostConstruct
public void init() { protected void init() {
if (!FIRST_INITIALIZATION) {
return;
} else {
FIRST_INITIALIZATION = false;
}
// Check configuration parameters // Check configuration parameters
Map<String, ?> props = null; Map<String, ?> props = null;