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>

Reply via email to