You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/03/08 16:10:03 UTC
[openmeetings] 01/01: PoC: spring configurable for non-beans
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch spring-configurable
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 9c9b3024fda851b8ce327dd67fc8c72be07045c2
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Mar 8 23:09:33 2021 +0700
PoC: spring configurable for non-beans
---
.../org/apache/openmeetings/core/remote/KRoom.java | 6 +--
.../apache/openmeetings/core/remote/KStream.java | 26 +++++++----
.../openmeetings/core/remote/KurentoHandler.java | 7 ---
.../core/remote/StreamProcessorActions.java | 2 +-
.../webapp/WEB-INF/classes/applicationContext.xml | 1 +
pom.xml | 51 +++++++++++++++-------
6 files changed, 58 insertions(+), 35 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index 3de644f..99cedfd 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -84,9 +84,9 @@ public class KRoom {
return chunkDao;
}
- public KStream join(final StreamDesc sd, KurentoHandler kHandler) {
+ public KStream join(final StreamDesc sd) {
log.info("ROOM {}: join client {}, stream: {}", room.getId(), sd.getClient(), sd.getUid());
- final KStream stream = new KStream(sd, this, kHandler);
+ final KStream stream = new KStream(sd, this);
processor.addStream(stream);
return stream;
}
@@ -253,7 +253,7 @@ public class KRoom {
StreamDesc sd = c.addStream(StreamType.WEBCAM, Activity.AUDIO);
sd.setWidth(120).setHeight(90);
c.restoreActivities(sd);
- KStream stream = join(sd, processor.getHandler());
+ KStream stream = join(sd);
stream.startBroadcast(sd, "", () -> {});
processor.getClientManager().update(c);
});
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index aaef0ca..4fa6c80 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -44,6 +44,7 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import org.apache.openmeetings.core.sip.ISipCallbacks;
+import org.apache.openmeetings.core.sip.SipManager;
import org.apache.openmeetings.core.sip.SipStackProcessor;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.entity.basic.Client;
@@ -69,13 +70,23 @@ import org.kurento.client.WebRtcEndpoint;
import org.kurento.jsonrpc.JsonUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowire;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
import com.github.openjson.JSONObject;
+@Configurable(autowire = Autowire.BY_TYPE)
public class KStream extends AbstractStream implements ISipCallbacks {
private static final Logger log = LoggerFactory.getLogger(KStream.class);
- private final KurentoHandler kHandler;
+ @Autowired
+ private KurentoHandler kHandler;
+ @Autowired
+ private StreamProcessor processor;
+ @Autowired
+ private SipManager sipManager;
+
private final KRoom kRoom;
private final Date connectedSince;
private final StreamType streamType;
@@ -96,12 +107,11 @@ public class KStream extends AbstractStream implements ISipCallbacks {
private boolean hasScreen;
private boolean sipClient;
- public KStream(final StreamDesc sd, KRoom kRoom, KurentoHandler kHandler) {
+ public KStream(final StreamDesc sd, KRoom kRoom) {
super(sd.getSid(), sd.getUid());
this.kRoom = kRoom;
streamType = sd.getType();
this.connectedSince = new Date();
- this.kHandler = kHandler;
//TODO Min/MaxVideoSendBandwidth
//TODO Min/Max Audio/Video RecvBandwidth
}
@@ -189,7 +199,7 @@ public class KStream extends AbstractStream implements ISipCallbacks {
flowoutFuture = Optional.of(new CompletableFuture<>().completeAsync(() -> {
log.warn("KStream will be dropped {}, sid {}, uid {}", sd, sid, uid);
if (StreamType.SCREEN == streamType) {
- kHandler.getStreamProcessor().doStopSharing(sid, uid);
+ processor.doStopSharing(sid, uid);
}
stopBroadcast();
return null;
@@ -275,7 +285,7 @@ public class KStream extends AbstractStream implements ISipCallbacks {
listeners.put(uid, listener);
log.debug("PARTICIPANT {}: obtained endpoint for {}", uid, this.uid);
- Client cur = kHandler.getStreamProcessor().getBySid(this.sid);
+ Client cur = processor.getBySid(this.sid);
if (cur == null) {
log.warn("Client for endpoint dooesn't exists");
} else {
@@ -450,7 +460,7 @@ public class KStream extends AbstractStream implements ISipCallbacks {
outgoingMedia = null;
}
if (remove) {
- kHandler.getStreamProcessor().release(this, false);
+ processor.release(this, false);
}
}
@@ -588,7 +598,7 @@ public class KStream extends AbstractStream implements ISipCallbacks {
if (count > 0) {
if (sipProcessor.isEmpty()) {
try {
- sipProcessor = kHandler.getSipManager().createSipStackProcessor(
+ sipProcessor = sipManager.createSipStackProcessor(
randomUUID().toString()
, kRoom.getRoom()
, this);
@@ -626,7 +636,7 @@ public class KStream extends AbstractStream implements ISipCallbacks {
answerConsumer.accept(answer);
log.debug(answer);
if (sipClient) {
- StreamDesc sd = kHandler.getStreamProcessor().getBySid(sid).getStream(uid);
+ StreamDesc sd = processor.getBySid(sid).getStream(uid);
try {
outgoingMedia = rtpEndpoint;
internalStartBroadcast(sd, sdp);
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index 1e8ebb4..1a24bc9 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -41,7 +41,6 @@ import javax.annotation.PreDestroy;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
-import org.apache.openmeetings.core.sip.SipManager;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.record.RecordingChunkDao;
import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -130,8 +129,6 @@ public class KurentoHandler {
private TestStreamProcessor testProcessor;
@Autowired
private StreamProcessor streamProcessor;
- @Autowired
- private SipManager sipManager;
boolean isConnected() {
boolean connctd = connected.get() && client != null && !client.isClosed();
@@ -405,10 +402,6 @@ public class KurentoHandler {
return streamProcessor;
}
- SipManager getSipManager() {
- return sipManager;
- }
-
RecordingChunkDao getChunkDao() {
return chunkDao;
}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessorActions.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessorActions.java
index 8608485..b80a290 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessorActions.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessorActions.java
@@ -107,7 +107,7 @@ public class StreamProcessorActions {
try {
if (sender == null) {
KRoom room = kHandler.getRoom(c.getRoomId());
- sender = room.join(sd, kHandler);
+ sender = room.join(sd);
}
if (msg.has("width")) {
sd.setWidth(msg.getInt("width")).setHeight(msg.getInt("height"));
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index 1c50a99..05c6e80 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -40,6 +40,7 @@
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
<context:annotation-config />
+ <context:spring-configured/>
<!-- Start annotation Prometheus metrics
<aop:aspectj-autoproxy/>
End annotation -->
diff --git a/pom.xml b/pom.xml
index 6b0e4db..12babd9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -501,6 +501,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aspects</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.mnode.ical4j</groupId>
<artifactId>ical4j</artifactId>
<version>${ical4j.version}</version>
@@ -743,6 +748,10 @@
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aspects</artifactId>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -879,6 +888,10 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>com.nickwongdev</groupId>
+ <artifactId>aspectj-maven-plugin</artifactId>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
@@ -1162,6 +1175,28 @@
<installDirectory>${project.build.directory}</installDirectory>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.nickwongdev</groupId>
+ <artifactId>aspectj-maven-plugin</artifactId>
+ <version>1.12.6</version>
+ <configuration>
+ <complianceLevel>${jdk.version}</complianceLevel>
+ <Xlint>ignore</Xlint>
+ <aspectLibraries>
+ <aspectLibrary>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aspects</artifactId>
+ </aspectLibrary>
+ </aspectLibraries>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</pluginManagement>
</build>
@@ -1197,22 +1232,6 @@
</reportSet>
</reportSets>
</plugin>
- <!-- plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- <version>${maven-checkstyle-plugin.version}</version>
- <configuration>
- <skip>${om.quick.build}</skip>
- <includeTestSourceDirectory>true</includeTestSourceDirectory>
- </configuration>
- <reportSets>
- <reportSet>
- <reports>
- <report>checkstyle</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>