From f017909c4a6a88aff3271fe92c24f1f7fa53b6a6 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Wed, 9 Oct 2019 15:03:16 +0200 Subject: [PATCH] openvidu-server: Bean initialization refactoring --- .../io/openvidu/server/OpenViduServer.java | 79 ++++++++++--------- .../server/config/OpenviduConfig.java | 10 ++- 2 files changed, 51 insertions(+), 38 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java index b9819698..142bbd8d 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java +++ b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java @@ -26,12 +26,12 @@ import org.kurento.jsonrpc.server.JsonRpcConfigurer; import org.kurento.jsonrpc.server.JsonRpcHandlerRegistry; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.Import; import org.springframework.context.event.EventListener; @@ -81,12 +81,10 @@ public class OpenViduServer implements JsonRpcConfigurer { public static String wsUrl; public static String httpUrl; - @Autowired - OpenviduConfig openviduConfig; - @Bean @ConditionalOnMissingBean - public KmsManager kmsManager() { + @DependsOn("openviduConfig") + public KmsManager kmsManager(OpenviduConfig openviduConfig) { if (openviduConfig.getKmsUris().isEmpty()) { throw new IllegalArgumentException("'kms.uris' should contain at least one KMS url"); } @@ -97,7 +95,8 @@ public class OpenViduServer implements JsonRpcConfigurer { @Bean @ConditionalOnMissingBean - public CallDetailRecord cdr() { + @DependsOn("openviduConfig") + public CallDetailRecord cdr(OpenviduConfig openviduConfig) { List loggers = new ArrayList<>(); if (openviduConfig.isCdrEnabled()) { log.info("OpenVidu CDR is enabled"); @@ -111,10 +110,46 @@ public class OpenViduServer implements JsonRpcConfigurer { @Bean @ConditionalOnMissingBean - public CoturnCredentialsService coturnCredentialsService() { + @DependsOn("openviduConfig") + public CoturnCredentialsService coturnCredentialsService(OpenviduConfig openviduConfig) { 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 @ConditionalOnMissingBean public LoadManager loadManager() { @@ -127,42 +162,12 @@ public class OpenViduServer implements JsonRpcConfigurer { 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 @ConditionalOnMissingBean public KurentoParticipantEndpointConfig kurentoEndpointConfig() { return new KurentoParticipantEndpointConfig(); } - @Bean - @ConditionalOnMissingBean - public TokenGenerator tokenGenerator() { - return new TokenGeneratorDefault(); - } - - @Bean - @ConditionalOnMissingBean - public RecordingManager recordingManager() { - return new RecordingManager(); - } - @Bean @ConditionalOnMissingBean public RecordingDownloader recordingDownload() { diff --git a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java index 2c279a6b..e7663748 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java +++ b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java @@ -62,6 +62,8 @@ public class OpenviduConfig { private static final Logger log = LoggerFactory.getLogger(OpenviduConfig.class); + private static volatile boolean FIRST_INITIALIZATION = true; + public static final List OPENVIDU_STRING_PROPERTIES = Arrays.asList(new String[] { "openvidu.secret", "openvidu.publicurl", "openvidu.recording.path", "openvidu.recording.notification", "openvidu.recording.custom-layout", "openvidu.recording.composed-url", "openvidu.recording.version", @@ -742,7 +744,13 @@ public class OpenviduConfig { } @PostConstruct - public void init() { + protected void init() { + + if (!FIRST_INITIALIZATION) { + return; + } else { + FIRST_INITIALIZATION = false; + } // Check configuration parameters Map props = null;