Feature #31 Nexio szinronizáció újraindítása a felületről
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 27 Nov 2018 14:34:27 +0000 (14:34 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 27 Nov 2018 14:34:27 +0000 (14:34 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31353

client/Maestro/Sources/NexioRESTSource.cs
server/-configuration/run-mediacube-server-bsh.launch
server/user.jobengine.osgi.commons/src/user/commons/nexio/INexioChangeListener.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDataMiner.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSServlet.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/ws/nexio/NexioWSSocket.java

index 945877d13998de8a2efc936f9165930d012ed068..d72bad836fb7899c346ec8311de9119b1755337a 100644 (file)
@@ -250,7 +250,10 @@ namespace Maestro.Sources {
         private void OnList(JToken l) {\r
             if (l == null)\r
                 return;\r
+\r
+            cache = null;\r
             parent.SafeCall(() => {\r
+                Clear();\r
                 l.Children().\r
                     ToList().\r
                     Select(t => CreateItem(t, false)).\r
index bdc1613d8753ab8235ba952df8013c2e0b5c6ef0..f81b80d978fd9697dae7ff9f6fd4cdb7ce30c763 100644 (file)
@@ -19,7 +19,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=192.168.10.101&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.disable=false&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders&#13;&#10;-Djobengine.octopus.stories.name=stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,,etc/user-jetty-http.xml,etc/user-jetty-https.xml&#13;&#10;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=192.168.10.105&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.disable=false&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders&#13;&#10;-Djobengine.octopus.stories.name=stories&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
 <stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
index a741b51e3b660626d6d2220fc67106a6ee1bf2bd..55c2728b5114f52646abbc0b0002ece4803af744 100644 (file)
@@ -10,4 +10,6 @@ public interface INexioChangeListener {
 \r
        void onUpdate(BasicDBObject data);\r
 \r
+       void refreshClients() throws Exception;\r
+\r
 }\r
index cd17ff8e3fa87e734244c8ae5375ac749241e677..d2ed899f0e8265b5f17424c2c4dd9fe7b5718971 100644 (file)
@@ -173,6 +173,12 @@ public class NexioDataMiner implements Runnable, INexioChangeListener {
                return result;\r
        }\r
 \r
+       @Override\r
+       public void refreshClients() throws Exception {\r
+               // TODO Auto-generated method stub\r
+\r
+       }\r
+\r
        private void removeDeleted(Map<String, BasicDBObject> remoteClips, Map<String, BasicDBObject> localClips) {\r
                Set<String> remoteNames = new HashSet<>(remoteClips.keySet());\r
                Set<String> localNames = new HashSet<>(localClips.keySet());\r
index 165c585bd6e9af9cbe1e28f496bb7ce05260ef6b..7c63f705c2fdd8d4eae5c9fae616b9ea8c47608a 100644 (file)
@@ -249,6 +249,13 @@ public class NexioDispatcher implements ClipEventListener {
                                Mediabase mediabase = NexioDispatcher.this.controller.getMediabase();\r
                                mediaListener = mediabase.createMediaListener(disabled, NexioDispatcher.this);\r
                                setRestartInProgress(false);\r
+\r
+                               try {\r
+                                       nexioChangeListener.refreshClients();\r
+                               } catch (Exception e) {\r
+                                       logger.catching(e);\r
+                               }\r
+\r
                                mediaListener.startListener();\r
 \r
                        } catch (Exception e) {\r
@@ -296,14 +303,14 @@ public class NexioDispatcher implements ClipEventListener {
                }\r
 \r
                /*\r
-\r
+               \r
                                int c = connection.read(buffer, 0, 2);\r
                                //2 bytes hosszan az idokozben hozzaadott id-k szamossaga\r
                                if (c < 2) {\r
                                        throw new ProtocolException("c, 2, 2");\r
                                }\r
                                //MSB, LSB\r
-\r
+               \r
                                return nofIds;\r
                        */\r
                return ret;\r
@@ -351,7 +358,8 @@ public class NexioDispatcher implements ClipEventListener {
                //rename-nel a clipForName null lesz de a clipForID nem ezert nem kell create\r
                if (clipForName == null && clipForID == null) {\r
                        collection.save(clip);\r
-                       onCreate(clip);\r
+                       if (!isRestartInProgress())\r
+                               onCreate(clip);\r
                } else {\r
                        if (clipForID != null) {\r
                                clip.put("_id", clipForID.get("_id"));\r
@@ -411,6 +419,7 @@ public class NexioDispatcher implements ClipEventListener {
                        this.controller.connect();\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
+                       setRestartInProgress(false);\r
                        return;\r
                }\r
                dropAllClipsFromMongo();\r
index 3a4ddd02e0757110a280bdf41aa3b8fcaf96dd80..3733ef71d6f136634a6b491e7412d3dea4eb946a 100644 (file)
@@ -19,6 +19,8 @@ public class ComponentBinder {
        private static IOctopusAPI octopusAPI;\r
        private static INexioAPI nexioAPI;\r
 \r
+       private static NexioWSServlet nexioServlet;\r
+\r
        public static IItemManager getItemManager() {\r
                if (itemManager == null)\r
                        throw new RuntimeException("IItemManager is null");\r
@@ -37,14 +39,18 @@ public class ComponentBinder {
                return nexioAPI;\r
        }\r
 \r
+       //      public static NexioWSServlet getNexioWSServlet() {\r
+       //              if (nexioServlet == null)\r
+       //                      throw new RuntimeException("IOctopusAPI is null");\r
+       //              return nexioServlet;\r
+       //      }\r
+\r
        public static IOctopusAPI getOctopusAPI() {\r
                if (octopusAPI == null)\r
                        throw new RuntimeException("IOctopusAPI is null");\r
                return octopusAPI;\r
        }\r
 \r
-       private NexioWSServlet nexioServlet;\r
-\r
        public synchronized void bindService(Object service) {\r
                if (service instanceof IJobEngine) {\r
                        jobengine = (IJobEngine) service;\r
index df9286dc51963576520807a124c8cfae47fc7e3b..e5604bf1bd8ca5f15242fa83a62f2a57e7297459 100644 (file)
@@ -16,6 +16,7 @@ import org.osgi.framework.FrameworkUtil;
 import com.ibm.nosql.json.api.BasicDBObject;
 
 import user.commons.nexio.INexioChangeListener;
+import user.jobengine.osgi.rest.ComponentBinder;
 
 @SuppressWarnings("serial")
 public class NexioWSServlet extends WebSocketServlet implements INexioChangeListener {
@@ -100,6 +101,13 @@ public class NexioWSServlet extends WebSocketServlet implements INexioChangeList
                        sessions.removeAll(deadSessions);
        }
 
+       @Override
+       public void refreshClients() throws Exception {
+               BasicDBObject item = new BasicDBObject(NexioWSSocket.DATA, ComponentBinder.getNexioAPI().getItems(null, true));
+               item.put(NexioWSSocket.ACTION, NexioWSSocket.LIST);
+               processMessage(item);
+       }
+
        public void removeSession(Session session) {
                if (sessions.contains(session))
                        sessions.remove(session);
index 66894b94adaaa28b24ac0d2f3a38823787cf8e45..771adfa68c28f11f43f79990da0e58103d19e5d2 100644 (file)
@@ -1,7 +1,6 @@
 package user.jobengine.osgi.ws.nexio;
 
 import java.io.IOException;
-import java.util.List;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -12,9 +11,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ibm.nosql.json.JSONUtil;
 import com.ibm.nosql.json.api.BasicDBObject;
-import com.ibm.nosql.json.api.DBObject;
 
-import user.commons.nexio.INexioAPI;
 import user.jobengine.osgi.rest.ComponentBinder;
 import user.jobengine.osgi.rest.ServiceObjectMapper;
 
@@ -37,14 +34,6 @@ public class NexioWSSocket extends WebSocketAdapter {
                logger.info("EventSocket created");
        }
 
-       private void listNexio(BasicDBObject response) throws Exception {
-               INexioAPI nexioAPI = ComponentBinder.getNexioAPI();
-               if (nexioAPI == null)
-                       throw new Exception("Nexio service is unreachable");
-               List<DBObject> clips = nexioAPI.getItems(null, true);
-               response.append(DATA, clips);
-       }
-
        @Override
        public void onWebSocketClose(int statusCode, String reason) {
                super.onWebSocketClose(statusCode, reason);
@@ -79,7 +68,7 @@ public class NexioWSSocket extends WebSocketAdapter {
                        BasicDBObject response = new BasicDBObject(ACTION, action);
                        switch (action) {
                        case LIST:
-                               listNexio(response);
+                               response.append(DATA, ComponentBinder.getNexioAPI().getItems(null, true));
                                break;
                        default:
                                throw new Exception("Unhandled action : " + action);