This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git

commit 335d616486bf00eb30995c9f6a194f06edd8901f
Author: Maxim Solodovnik <solo...@apache.org>
AuthorDate: Wed Sep 27 18:54:43 2023 +0700

    [OPENMEETINGS-2756] audio/video is fixed; version is bumped
---
 openmeetings-core/pom.xml                          |  2 +-
 openmeetings-db/pom.xml                            |  2 +-
 openmeetings-install/pom.xml                       |  2 +-
 openmeetings-mediaserver/pom.xml                   |  2 +-
 .../src/main/java/module-info.java                 |  1 +
 .../openmeetings/mediaserver/IStreamProcessor.java | 24 ------------
 .../org/apache/openmeetings/mediaserver/KRoom.java |  2 +-
 .../openmeetings/mediaserver/KurentoHandler.java   | 44 ++++++++++++++++------
 .../openmeetings/mediaserver/StreamProcessor.java  | 18 +++++----
 .../mediaserver/StreamProcessorActions.java        |  7 ++--
 .../mediaserver/TestStreamProcessor.java           | 11 +++---
 .../src/test/java/module-info.test                 |  1 +
 openmeetings-screenshare/pom.xml                   |  2 +-
 openmeetings-server/pom.xml                        |  2 +-
 openmeetings-service/pom.xml                       |  2 +-
 openmeetings-util/pom.xml                          |  2 +-
 openmeetings-web/pom.xml                           |  2 +-
 openmeetings-webservice/pom.xml                    |  2 +-
 pom.xml                                            |  4 +-
 19 files changed, 67 insertions(+), 65 deletions(-)

diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 7b3e47fa1..54a96621f 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-core</artifactId>
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 416b02239..3ba12399c 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-db</artifactId>
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index f01dd5faa..3e37d0ed7 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-install</artifactId>
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index 017679e2f..a38173417 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-mediaserver</artifactId>
diff --git a/openmeetings-mediaserver/src/main/java/module-info.java 
b/openmeetings-mediaserver/src/main/java/module-info.java
index 42f766fac..45dee43fb 100644
--- a/openmeetings-mediaserver/src/main/java/module-info.java
+++ b/openmeetings-mediaserver/src/main/java/module-info.java
@@ -36,6 +36,7 @@ module org.apache.openmeetings.mediaserver {
 
        requires spring.beans;
        requires spring.context;
+       requires spring.core;
 
        requires kurento.client;
        requires kurento.jsonrpc.client;
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
deleted file mode 100644
index 6d6e65f96..000000000
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.mediaserver;
-
-public interface IStreamProcessor {
-       void release(AbstractStream stream, boolean releaseStream);
-       void destroy();
-}
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
index abffc893a..e7edc4771 100644
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
+++ 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
@@ -76,7 +76,7 @@ public class KRoom {
        private JSONObject recordingUser = new JSONObject();
        private JSONObject sharingUser = new JSONObject();
 
-       public KRoom(Room r) {
+       KRoom(Room r) {
                this.room = r;
                Injector.get().inject(this);
                log.info("ROOM {} has been created", room.getId());
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
index 957d33abe..d3989f7fe 100644
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
+++ 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
@@ -57,6 +57,7 @@ import org.kurento.client.Continuation;
 import org.kurento.client.Endpoint;
 import org.kurento.client.EventListener;
 import org.kurento.client.KurentoClient;
+import org.kurento.client.ListenerSubscription;
 import org.kurento.client.MediaObject;
 import org.kurento.client.MediaPipeline;
 import org.kurento.client.ObjectCreatedEvent;
@@ -69,16 +70,17 @@ import org.kurento.client.WebRtcEndpoint;
 import org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
+@Singleton
+@Named
 public class KurentoHandler {
        private static final Logger log = 
LoggerFactory.getLogger(KurentoHandler.class);
        public static final String PARAM_ICE = "iceServers";
@@ -115,6 +117,8 @@ public class KurentoHandler {
        private String kuid;
        private CertificateKeyType certificateType;
        private KurentoClient client;
+       private ListenerSubscription objectCreatedListener;
+       private ListenerSubscription objectDestroyedListener;
        private final AtomicBoolean connected = new AtomicBoolean(false);
        private final Map<Long, KRoom> rooms = new ConcurrentHashMap<>();
        private final Set<String> ignoredKuids = new HashSet<>();
@@ -138,6 +142,7 @@ public class KurentoHandler {
 
        @PostConstruct
        public void init() {
+               log.trace("KurentoHandler::PostConstruct");
                Runnable check = () -> {
                        try {
                                if (client != null) {
@@ -178,8 +183,8 @@ public class KurentoHandler {
                                                        notifyRooms(true);
                                                }
                                        });
-                               
client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
-                               
client.getServerManager().addObjectDestroyedListener(event ->
+                               objectCreatedListener = 
client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
+                               objectDestroyedListener = 
client.getServerManager().addObjectDestroyedListener(event ->
                                        
log.debug("Kurento::ObjectDestroyedEvent objectId {}, tags {}, source {}", 
event.getObjectId(), event.getTags(), event.getSource())
                                );
                        } catch (Exception e) {
@@ -204,6 +209,14 @@ public class KurentoHandler {
                                client = null;
                                if (!copy.isClosed()) {
                                        log.debug("Client will be destroyed 
...");
+                                       if (objectCreatedListener != null) {
+                                               
copy.getServerManager().removeObjectCreatedListener(objectCreatedListener);
+                                               objectCreatedListener = null;
+                                       }
+                                       if (objectDestroyedListener != null) {
+                                               
copy.getServerManager().removeObjectDestroyedListener(objectDestroyedListener);
+                                               objectDestroyedListener = null;
+                                       }
                                        copy.destroy();
                                        log.debug(".... Client is destroyed");
                                }
@@ -304,7 +317,8 @@ public class KurentoHandler {
                return rooms.computeIfAbsent(roomId, k -> {
                        log.debug("Room {} does not exist. Will create now!", 
roomId);
                        Room r = roomDao.get(roomId);
-                       return new KRoom(r);
+                       KRoom kRoom = new KRoom(r);
+                       return kRoom;
                });
        }
 
@@ -382,7 +396,7 @@ public class KurentoHandler {
                this.certificateType = 
CertificateKeyType.valueOf(certificateType);
        }
 
-       public CertificateKeyType getCertificateType() {
+       CertificateKeyType getCertificateType() {
                return certificateType;
        }
 
@@ -412,6 +426,7 @@ public class KurentoHandler {
                private void checkPipeline(String roomOid) {
                        scheduler.schedule(() -> {
                                if (client == null) {
+                                       log.trace("KWatchDog::checkPipeline 
Client is NULL");
                                        return;
                                }
                                // still alive
@@ -420,17 +435,24 @@ public class KurentoHandler {
                                try {
                                        final String inKuid = 
tags.get(TAG_KUID);
                                        if (inKuid != null && 
ignoredKuids.contains(inKuid)) {
+                                               
log.trace("KWatchDog::checkPipeline KUID in ignore list");
                                                return;
                                        }
                                        if (validTestPipeline(tags)) {
+                                               
log.trace("KWatchDog::checkPipeline test pipeline detected");
                                                return;
                                        }
                                        if (kuid.equals(inKuid)) {
-                                               KStream stream = 
streamProcessor.getByUid(tags.get(TAG_STREAM_UID));
+                                               String streamUId = 
tags.get(TAG_STREAM_UID);
+                                               
log.trace("KWatchDog::checkPipeline kuid matched, streamId: {}", streamUId);
+                                               KStream stream = 
streamProcessor.getByUid(streamUId);
                                                if (stream != null) {
-                                                       if 
(stream.getRoomId().equals(Long.valueOf(tags.get(TAG_ROOM)))
-                                                                       && 
stream.getPipeline().getId().equals(pipe.getId()))
-                                                       {
+                                                       Long sRoomId = 
stream.getRoomId();
+                                                       Long tRoomId = 
Long.valueOf(tags.get(TAG_ROOM));
+                                                       String pipeId = 
stream.getPipeline().getId();
+                                                       
log.trace("KWatchDog::checkPipeline stream found! Room match ? {}, Pipe match ? 
{}"
+                                                                       , 
sRoomId.equals(tRoomId), pipeId.equals(pipe.getId()));
+                                                       if 
(sRoomId.equals(tRoomId) && pipeId.equals(pipe.getId())) {
                                                                return;
                                                        } else {
                                                                
stream.release();
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
index e5116d70c..ee09c7545 100644
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
+++ 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
@@ -35,11 +35,11 @@ import 
org.apache.openmeetings.core.converter.RecordingConverter;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
 import org.apache.openmeetings.db.entity.basic.Client.Activity;
+import org.apache.openmeetings.db.entity.basic.Client.StreamType;
+import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
 import org.apache.openmeetings.db.entity.basic.StreamDesc;
 import org.apache.openmeetings.db.entity.basic.WebcamStreamDesc;
-import org.apache.openmeetings.db.entity.basic.Client.StreamType;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
@@ -52,17 +52,19 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Component;
 
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
-public class StreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+public class StreamProcessor {
        private static final Logger log = 
LoggerFactory.getLogger(StreamProcessor.class);
        /**
-        * Holds a reference to the current streams available on the server 
instance
+        * Holds references to the current streams available on the server 
instance
         */
        private final Map<String, KStream> streamByUid = new 
ConcurrentHashMap<>();
 
@@ -465,7 +467,6 @@ public class StreamProcessor implements IStreamProcessor {
                return recDao;
        }
 
-       @Override
        public void release(AbstractStream stream, boolean releaseStream) {
                final String uid = stream.getUid();
                if (releaseStream) {
@@ -480,11 +481,12 @@ public class StreamProcessor implements IStreamProcessor {
                                WebSocketHelper.sendRoom(new 
TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.RIGHT_UPDATED, c.getUid()));
                        }
                }
+               log.trace("StreamProcessor::release uid: {}", uid);
                streamByUid.remove(uid);
        }
 
-       @Override
        public void destroy() {
+               log.trace("StreamProcessor::destroy !!!!");
                for (Map.Entry<String, KStream> e : streamByUid.entrySet()) {
                        release(e.getValue(), true);
                }
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
index ea8f7d63e..d74da8d40 100644
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
+++ 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
@@ -35,13 +35,14 @@ import 
org.kurento.client.internal.server.KurentoServerException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.springframework.stereotype.Component;
-
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
+@Singleton
+@Named
 public class StreamProcessorActions {
        private static final Logger log = 
LoggerFactory.getLogger(StreamProcessorActions.class);
 
diff --git 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
index a7309d122..42ce6fd1e 100644
--- 
a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
+++ 
b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
@@ -32,14 +32,15 @@ import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.IWsClient;
 import org.kurento.client.IceCandidate;
 
-import org.springframework.stereotype.Component;
-
 import com.github.openjson.JSONObject;
 
 import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
 
-@Component
-class TestStreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+class TestStreamProcessor {
        private final Map<String, KTestStream> streamByUid = new 
ConcurrentHashMap<>();
 
        @Inject
@@ -101,12 +102,10 @@ class TestStreamProcessor implements IStreamProcessor {
                }
        }
 
-       @Override
        public void release(AbstractStream stream, boolean releaseStream) {
                streamByUid.remove(stream.getUid());
        }
 
-       @Override
        public void destroy() {
                for (Entry<String, KTestStream> e : streamByUid.entrySet()) {
                        e.getValue().release();
diff --git a/openmeetings-mediaserver/src/test/java/module-info.test 
b/openmeetings-mediaserver/src/test/java/module-info.test
index deaf32995..5f839623c 100644
--- a/openmeetings-mediaserver/src/test/java/module-info.test
+++ b/openmeetings-mediaserver/src/test/java/module-info.test
@@ -37,6 +37,7 @@ module org.apache.openmeetings.mediaserver {
 
        requires spring.beans;
        requires spring.context;
+       requires spring.core;
 
        requires kurento.client;
        requires kurento.jsonrpc.client;
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index c7c819935..05b9e9035 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-screenshare</artifactId>
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index e51a40415..696978a04 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-server</artifactId>
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 9d7bece7a..d3524fab7 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-service</artifactId>
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 9989d3894..b4388d9a5 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-util</artifactId>
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index ee8ad5190..dda3a619f 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-web</artifactId>
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index d1758e1e7..acb255775 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
        <parent>
                <groupId>org.apache.openmeetings</groupId>
                <artifactId>openmeetings-parent</artifactId>
-               <version>7.2.0-SNAPSHOT</version>
+               <version>8.0.0-SNAPSHOT</version>
                <relativePath>..</relativePath>
        </parent>
        <artifactId>openmeetings-webservice</artifactId>
diff --git a/pom.xml b/pom.xml
index 7d7c2e20f..1cff9f406 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,13 +26,13 @@
        </parent>
        <groupId>org.apache.openmeetings</groupId>
        <artifactId>openmeetings-parent</artifactId>
-       <version>7.2.0-SNAPSHOT</version>
+       <version>8.0.0-SNAPSHOT</version>
        <packaging>pom</packaging>
        <name>Openmeetings</name>
        <description>Parent project for all OpenMeetings Maven modules. 
Required to hold general settings</description>
        <properties>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-               
<project.build.outputTimestamp>2023-05-10T02:44:22Z</project.build.outputTimestamp>
+               
<project.build.outputTimestamp>2023-09-27T11:15:33Z</project.build.outputTimestamp>
                <wicket.configuration>DEPLOYMENT</wicket.configuration>
                <om.quick.build>false</om.quick.build>
                <om.notquick.build>true</om.notquick.build>

Reply via email to