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 <solomax...@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>