git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 6 Oct 2017 15:17:58 +0000 (15:17 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 6 Oct 2017 15:17:58 +0000 (15:17 +0000)
19 files changed:
client/DxPlay/DxPlayer.cs
client/DxPlay/FilterGraphTools.cs
server/-configuration/deploy-skipinstall-mediacube-modules.launch [new file with mode: 0644]
server/-configuration/run-mediacube-server-localhost.launch
server/-configuration/start-mediacube.sh
server/-configuration/stop-mediacube.sh [new file with mode: 0644]
server/-dependencies/jobengine.target
server/-product/mediacube-osgi.bat [deleted file]
server/-product/mediacube.product
server/-product/pom.xml
server/user.jobengine.osgi.server/META-INF/MANIFEST.MF
server/user.jobengine.osgi.services/META-INF/MANIFEST.MF
server/user.jobengine.osgi.services/OSGI-INF/HaltCommandProvider.xml [moved from server/user.jobengine.osgi.server/OSGI-INF/ConsoleCommandProvider.xml with 78% similarity]
server/user.jobengine.osgi.services/WEB-INF/web.xml
server/user.jobengine.osgi.services/src/user/jobengine/osgi/console/HaltCommandProvider.java [moved from server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ConsoleCommandProvider.java with 90% similarity]
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/RESTApplications.java
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/TextMessageBodyReaderWriter.java [new file with mode: 0644]
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/jobengine/JobengineService.java

index 4ffb3db6a3575cf9d870787bf064f86ac55e8881..aadd6b527b97e87164146f31749b9c59cf16e51f 100644 (file)
@@ -204,7 +204,7 @@ namespace DxPlay {
 \r
         // Build the capture graph for grabber and renderer.</summary>\r
         // (Control to show video in, Filename to play)\r
-        private void SetupGraph(Control hWin) {\r
+        private void SetupGraphLAV(Control hWin) {\r
             int hr;\r
 \r
             m_videoWidth = MediaDescription.Resolution.Width;\r
@@ -227,8 +227,8 @@ namespace DxPlay {
                 hr = m_FilterGraph.AddSourceFilter(MediaDescription.FileName, MediaDescription.FileName, out sourceFilter);\r
                 DsError.ThrowExceptionForHR(hr);\r
 \r
-                IBaseFilter splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Splitter");\r
-                //IBaseFilter splitter = FilterGraphTools.AddFilterByDevicePath(graphBuilder, @"c:\Programs\LAVFilters\LAVSplitter.ax", "LAV Splitter");\r
+                //IBaseFilter splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Splitter");\r
+                IBaseFilter splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "SONY MXF Splitter");\r
                 if (splitter == null)\r
                     throw new Exception("No splitter!");\r
 \r
@@ -280,6 +280,74 @@ namespace DxPlay {
 #endif\r
         }\r
 \r
+        private void SetupGraph(Control hWin) {\r
+            int hr;\r
+\r
+            m_videoWidth = MediaDescription.Resolution.Width;\r
+            m_videoHeight = MediaDescription.Resolution.Height;\r
+\r
+            try {\r
+                m_FilterGraph = new FilterGraph() as IFilterGraph2;\r
+\r
+                IGraphBuilder graphBuilder = m_FilterGraph as IGraphBuilder;\r
+                m_mediaSeek = m_FilterGraph as IMediaSeeking;\r
+                m_mediaPosition = m_FilterGraph as IMediaPosition;\r
+                m_mediaEvent = m_FilterGraph as IMediaEvent;\r
+                m_mediaCtrl = m_FilterGraph as IMediaControl;\r
+                m_videoWindow = m_FilterGraph as IVideoWindow;\r
+\r
+                IBaseFilter sourceFilter = null;\r
+                hr = m_FilterGraph.AddSourceFilter(MediaDescription.FileName, MediaDescription.FileName, out sourceFilter);\r
+                DsError.ThrowExceptionForHR(hr);\r
+\r
+                //Type typeFromClsid = Type.GetTypeFromCLSID(new Guid("CCE7BD95-3BC4-4cfb-9664-0BF83201BE09"));\r
+                //IBaseFilter splitter = (IBaseFilter)Activator.CreateInstance(typeFromClsid);\r
+\r
+                IBaseFilter splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "Sony MXF Splitter");\r
+                if (splitter == null)\r
+                    throw new Exception("No splitter!");\r
+\r
+                FilterGraphTools.ConnectFilters(graphBuilder, sourceFilter, "Output", splitter, "Input", true);\r
+\r
+                IBaseFilter videoDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "Sony MPEG Video Decoder Pro");\r
+                if (videoDecoder == null)\r
+                    throw new Exception("No video decoder!");\r
+\r
+                FilterGraphTools.ConnectFilters(graphBuilder, splitter, "Video", videoDecoder, "Input", true);\r
+\r
+                IBaseFilter sampGrabber = (IBaseFilter)new SampleGrabber();\r
+                ConfigureSampleGrabber((ISampleGrabber)sampGrabber);\r
+                hr = m_FilterGraph.AddFilter(sampGrabber, "Sample Grabber");\r
+                DsError.ThrowExceptionForHR(hr);\r
+\r
+                FilterGraphTools.ConnectFilters(graphBuilder, videoDecoder, "Output", sampGrabber, "Input", true);\r
+\r
+                m_videoRenderer = (IBaseFilter)new VideoMixingRenderer9();\r
+                hr = m_FilterGraph.AddFilter(m_videoRenderer, "Video Mixing Renderer 9");\r
+                DsError.ThrowExceptionForHR(hr);\r
+\r
+                FilterGraphTools.ConnectFilters(graphBuilder, sampGrabber, "Output", m_videoRenderer, "VMR Input0", true);\r
+\r
+                ConfigureVideoWindow(hWin);\r
+\r
+                if (DsFindPin.ByName(splitter, "Audio") != null) {\r
+                    IBaseFilter audioDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "SONY Audio Mixer");\r
+                    if (audioDecoder == null)\r
+                        throw new Exception("No audio decoder!");\r
+\r
+                    FilterGraphTools.ConnectFilters(graphBuilder, splitter, "Audio", audioDecoder, "Input", true);\r
+                    FilterGraphTools.RenderPin(graphBuilder, audioDecoder, "Output");\r
+                }\r
+\r
+                SaveSizeInfo(sampGrabber as ISampleGrabber);\r
+\r
+            }\r
+            catch (Exception e) {\r
+                Debug.WriteLine(e.Message);\r
+            }\r
+            finally {\r
+            }\r
+        }\r
 \r
         // Configure the video window\r
         private void ConfigureVideoWindow(Control hWin) {\r
index 4a75a06d6e024f08afb823d9820ef9aa5cdebe94..f3a47197124b9a67f9aa894e2597f580ba1e0fb8 100644 (file)
@@ -11,6 +11,7 @@ using System.Runtime.InteropServices;
 using System.Security.Permissions;\r
 \r
 using DirectShowLib;\r
+using System.Diagnostics;\r
 \r
 #if !USING_NET11\r
 using System.Runtime.InteropServices.ComTypes;\r
@@ -116,6 +117,7 @@ namespace DirectShowLib.Utils {
             DsDevice[] devices = DsDevice.GetDevicesOfCat(deviceCategory);\r
 \r
             for (int i = 0; i < devices.Length; i++) {\r
+                Debug.WriteLine("Found " + devices[i].Name);\r
                 if (string.IsNullOrEmpty(devices[i].Name)) //if the name is empty ignore the filter\r
                     continue;\r
                 else {\r
diff --git a/server/-configuration/deploy-skipinstall-mediacube-modules.launch b/server/-configuration/deploy-skipinstall-mediacube-modules.launch
new file mode 100644 (file)
index 0000000..53673e0
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<launchConfiguration type="org.eclipse.m2e.Maven2LaunchConfigurationType">\r
+<booleanAttribute key="M2_DEBUG_OUTPUT" value="false"/>\r
+<stringAttribute key="M2_GOALS" value="deploy -Dmaven.install.skip=true -Dmaven.clean.skip=true -Dmaven.test.skip=true"/>\r
+<booleanAttribute key="M2_NON_RECURSIVE" value="false"/>\r
+<booleanAttribute key="M2_OFFLINE" value="true"/>\r
+<stringAttribute key="M2_PROFILES" value=""/>\r
+<listAttribute key="M2_PROPERTIES"/>\r
+<stringAttribute key="M2_RUNTIME" value="EMBEDDED"/>\r
+<booleanAttribute key="M2_SKIP_TESTS" value="false"/>\r
+<intAttribute key="M2_THREADS" value="1"/>\r
+<booleanAttribute key="M2_UPDATE_SNAPSHOTS" value="false"/>\r
+<stringAttribute key="M2_USER_SETTINGS" value=""/>\r
+<booleanAttribute key="M2_WORKSPACE_RESOLUTION" value="false"/>\r
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">\r
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>\r
+</listAttribute>\r
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}/-modules"/>\r
+</launchConfiguration>\r
index 1cbf6e741506420386ebf2323d82dade61c5bee4..842617af52992cab76c73a72ec77835f3eee4531 100644 (file)
 <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.equinox.http.jetty.http.port=8080&#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://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=salabakter&#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/user/jobengine/server/steps&quot;&#13;&#10;-Djobengine.transcoder.source=c:\_Movie\hires\&#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;-Djobengine.octopus.api.address=http://10.10.1.21/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=salabakter&#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_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.55"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8080&#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://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=salabakter&#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/user/jobengine/server/steps&quot;&#13;&#10;-Djobengine.transcoder.source=c:\_Movie\hires\&#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;-Djobengine.octopus.api.address=http://10.10.1.21/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=salabakter&#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_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.555"/>\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,javassist@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.jdt.core.compiler.batch@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.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default: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,javassist@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.jdt.core.compiler.batch@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:true,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
 <booleanAttribute key="tracing" value="false"/>\r
 <booleanAttribute key="useCustomFeatures" value="false"/>\r
 <booleanAttribute key="useDefaultConfigArea" value="true"/>\r
index d0fbed97e3818687af947d647f65fc32dcf13649..da80980ab73cd665b174db9f11b400fbf8835406 100644 (file)
@@ -1,3 +1,4 @@
+cd /opt/mediacube
 export DSMI_CONFIG=/opt/mediacube/configuration/dsm.opt
 export DSMI_DIR=/opt/tivoli/tsm/client/api/bin64
 export DSMI_LOG=/opt/mediacube/log
@@ -8,4 +9,4 @@ export LIBPATH=/opt/tivoli/tsm/client/ba/bin:/opt/tivoli/tsm/client/api/bin64
 export SHLIB_PATH=/opt/tivoli/tsm/client/ba/bin:/opt/tivoli/tsm/client/api/bin64
 export TZ=NFT-1DFT,M3.5.0,M10.5.0
 export PATH=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/bin:$PATH
-nohup ./mediacube &
\ No newline at end of file
+nohup ./mediacube </dev/null &>/dev/null &
diff --git a/server/-configuration/stop-mediacube.sh b/server/-configuration/stop-mediacube.sh
new file mode 100644 (file)
index 0000000..d7f1a89
--- /dev/null
@@ -0,0 +1,3 @@
+wget -qO- http://localhost:8080/services/rest/jobengine/halt
+exit 0
+
index 6552a7bb87e359f2d202df9e4514c1a18127a403..a059c44eba206dbc1a0f96185904910c8add5861 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<?pde version="3.8"?><target name="JobEngine" sequenceNumber="237">\r
+<?pde version="3.8"?><target name="JobEngine" sequenceNumber="241">\r
 <locations>\r
 <location path="${eclipse_home}" type="Profile"/>\r
 <location path="${workspace_loc}/-dependencies/target/repository/plugins" type="Directory"/>\r
 <plugin id="org.eclipse.osgi" version="3.11.2.v20161107-1947"/>\r
 <plugin id="org.eclipse.osgi.services" version="3.2.100.v20100503"/>\r
 <plugin id="org.eclipse.osgi.util"/>\r
+<plugin id="org.eclipse.update.configurator"/>\r
 <plugin id="org.glassfish.hk2.api" version="2.5.0.b42"/>\r
 <plugin id="org.glassfish.hk2.external.aopalliance-repackaged" version="2.5.0.b42"/>\r
 <plugin id="org.glassfish.hk2.external.javax.inject" version="2.5.0.b42"/>\r
diff --git a/server/-product/mediacube-osgi.bat b/server/-product/mediacube-osgi.bat
deleted file mode 100644 (file)
index 93154ce..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-java -jar plugins/org.eclipse.osgi_3.11.3.v20170209-1843.jar ^\r
--configuration configuration/config.ini ^\r
--console ^\r
--consoleLog ^\r
--Dorg.eclipse.equinox.http.jetty.http.port=8080 ^\r
--Dorg.eclipse.epp.logging.aeri.skipReports=true ^\r
--Declipse.ignoreApp=true ^\r
--Dosgi.noShutdown=true ^\r
--Djetty.home=./configuration/etc ^\r
--Djetty.etc.config.urls=user-jetty.xml,user-jetty-ssl.xml,user-jetty-ssl-context.xml,user-jetty-http.xml,user-jetty-https.xml ^\r
--Dlog4j.configuration=./configuration/log4j.properties ^\r
--Djobengine.loglevel=INFO ^\r
--Djobengine.jobsteps.root=./configuration/executors ^\r
--Djobengine.jobtemplates.root=./configuration/templates ^\r
--Djobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; ^\r
--Djobengine.db.user=db2admin ^\r
--Djobengine.db.password=password ^\r
--Djobengine.octopus.api.address=http://10.10.1.21/api/v1 ^\r
--Djobengine.octopus.api.user=mam ^\r
--Djobengine.octopus.api.password=napocska ^\r
--Djobengine.octopus.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; ^\r
--Djobengine.octopus.db.user=db2admin ^\r
--Djobengine.octopus.db.password=password ^\r
--Djobengine.octopus.db.schema=test ^\r
--Djobengine.rcc.host=localhost ^\r
--Djobengine.rcc.defaultlowresprofile=MediaCube-H264 ^\r
--Djobengine.transcoder.source=c:\_Movie\hires\\r
index 28c4d9746d9cbadd16c2e60fd5e7774062a1ea37..a06024d9b575e3beeb2b34f0081cd4a6aceaaffd 100644 (file)
       <plugin id="org.eclipse.jetty.websocket.server"/>\r
       <plugin id="org.eclipse.jetty.websocket.servlet"/>\r
       <plugin id="org.eclipse.jetty.xml"/>\r
-      <plugin id="org.eclipse.osgi"/>\r
-      <plugin id="org.eclipse.osgi.services"/>\r
+      <plugin id="org.eclipse.osgi" version="3.11.2.v20161107-1947"/>\r
+      <plugin id="org.eclipse.osgi.services" version="3.2.100.v20100503"/>\r
+      <plugin id="org.eclipse.update.configurator"/>\r
       <plugin id="org.hamcrest.core"/>\r
       <plugin id="org.jboss.resteasy.client"/>\r
       <plugin id="org.jboss.resteasy.jaxrs"/>\r
index d648665da674d46d86c4f50c0681b1950537916b..1bac3f52794519ed085352caa9468e0d1611964a 100644 (file)
                                                                        <directory>${basedir}/../-configuration</directory>\r
                                                                        <includes>\r
                                                                                <include>start-mediacube.sh</include>\r
+                                                                               <include>stop-mediacube.sh</include>\r
                                                                        </includes>\r
                                                                </resource>\r
                                                        </resources>\r
                                                                        <directory>${basedir}/../-configuration</directory>\r
                                                                        <includes>\r
                                                                                <include>start-mediacube.sh</include>\r
+                                                                               <include>stop-mediacube.sh</include>\r
                                                                        </includes>\r
                                                                </resource>\r
                                                        </resources>\r
                                                        <arguments>\r
                                                                <argument>/command</argument>\r
                                                                <argument>"open ${remote.address} -hostkey=""${remote.hostkey}"""</argument>\r
+                                                               <argument>"call ${remote.location}/stop-mediacube.sh 2>/dev/null"</argument>\r
+                                                               <argument>"call rm -rf ${remote.location}"</argument>\r
+                                                               <argument>"call mkdir ${remote.location}"</argument>\r
                                                                <argument>"lcd ${local.location}"</argument>\r
                                                                <argument>"cd ${remote.location}"</argument>\r
-                                                               <argument>"synchronize remote"</argument>\r
+                                                               <argument>"synchronize remote -criteria=size"</argument>\r
                                                                <argument>"call chmod +x mediacube"</argument>\r
+                                                               <argument>"call chmod +x stop-mediacube.sh"</argument>\r
                                                                <argument>"call chmod +x start-mediacube.sh"</argument>\r
                                                                <argument>"call ./start-mediacube.sh"</argument>\r
                                                                <argument>"exit"</argument>\r
index 51e7912dd4c1f26883e8604af0d8aa6ce6bc50e1..4c2176b3a52d430e965ed3478a49547262154dd0 100644 (file)
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 Bundle-Name: Server
 Bundle-SymbolicName: user.jobengine.osgi.server;singleton:=true
 Bundle-Version: 1.0.0
-Service-Component: OSGI-INF/component.xml, OSGI-INF/ConsoleCommandProvider.xml
+Service-Component: OSGI-INF/component.xml
 Import-Package: javax.servlet;version="3.1.0",
  javax.servlet.http;version="3.1.0",
  org.apache.logging.log4j.core;version="2.8.2",
index 38f7ec1a81875b31909db7031295dab1553b52dc..2737ccd1e0bebbdcf9debe634d814628ac6af735 100644 (file)
@@ -4,7 +4,7 @@ Bundle-Name: Services
 Bundle-SymbolicName: user.jobengine.osgi.services;singleton:=true
 Bundle-Version: 1.0.0
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Service-Component: OSGI-INF/component.xml
+Service-Component: OSGI-INF/component.xml, OSGI-INF/HaltCommandProvider.xml
 Bundle-ActivationPolicy: lazy
 Web-ContextPath: /services
 Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
@@ -23,9 +23,11 @@ Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
  javax.ws.rs.core;version="2.0.1",
  javax.ws.rs.ext;version="2.0.1",
  org.apache.logging.log4j;version="2.8.2",
+ org.eclipse.core.runtime.adaptor,
  org.eclipse.jetty.util;version="9.3.9",
  org.eclipse.jetty.websocket.api;version="9.3.9",
  org.eclipse.jetty.websocket.servlet;version="9.3.9",
+ org.eclipse.osgi.framework.console;version="1.1.0",
  org.joda.time;version="2.2.0",
  org.joda.time.base;version="2.2.0",
  org.osgi.framework;version="1.8.0",
similarity index 78%
rename from server/user.jobengine.osgi.server/OSGI-INF/ConsoleCommandProvider.xml
rename to server/user.jobengine.osgi.services/OSGI-INF/HaltCommandProvider.xml
index 7a46c0c57b748b1c9d285d54833663f58e3fca46..50904575d8879beb55e80c479a571c22ec3bf505 100644 (file)
@@ -3,5 +3,5 @@
    <service>\r
       <provide interface="org.eclipse.osgi.framework.console.CommandProvider"/>\r
    </service>\r
-   <implementation class="user.jobengine.osgi.server.ConsoleCommandProvider"/>\r
+   <implementation class="user.jobengine.osgi.console.HaltCommandProvider"/>\r
 </scr:component>
\ No newline at end of file
index cc895b43bd976a61328bb2da255ef6599ede886e..8702cb52424eafebea71a148c6cb22611151ec4c 100644 (file)
             <param-value>user.jobengine.osgi.rest.RESTApplications</param-value>\r
         </init-param>\r
     </servlet>\r
+       <listener>\r
+           <listener-class>\r
+               org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap\r
+           </listener-class>\r
+       </listener>\r
        <context-param>\r
       <param-name>resteasy.servlet.mapping.prefix</param-name>\r
       <param-value>/rest</param-value>\r
similarity index 90%
rename from server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ConsoleCommandProvider.java
rename to server/user.jobengine.osgi.services/src/user/jobengine/osgi/console/HaltCommandProvider.java
index 36b6e26560f08610a808b4ccdf823361d648a093..63550af7107ca3adb59d2e8ed9d615d868b78502 100644 (file)
@@ -1,4 +1,4 @@
-package user.jobengine.osgi.server;\r
+package user.jobengine.osgi.console;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
@@ -23,10 +23,10 @@ import user.jobengine.server.IJobEngine;
 //                                             logger.info("Stopping {} ", b.getSymbolicName());\r
 //                                             b.stop();\r
 //                                     }\r
-public class ConsoleCommandProvider implements CommandProvider {\r
+@SuppressWarnings("restriction")\r
+public class HaltCommandProvider implements CommandProvider {\r
        private static final Logger logger = LogManager.getLogger();\r
 \r
-       @SuppressWarnings("restriction")\r
        public Object _halt(CommandInterpreter intp) {\r
                final StringBuffer buffer = new StringBuffer();\r
                Thread shutdownThread = new Thread(() -> {\r
index f3d1a61ff3895c8c353ab2aa15d4183959656ec6..7a82199b9b330d367b18d9d3b6c9a79c64208d09 100644 (file)
@@ -15,7 +15,28 @@ public class ComponentBinder {
        private static IOctopusAPI octopusService;\r
        private static INexioAPI nexioService;\r
 \r
-       public void start() {\r
+       public static IItemManager getItemManagerService() {\r
+               if (itemManagerService == null)\r
+                       throw new RuntimeException("IItemManager is null");\r
+               return itemManagerService;\r
+       }\r
+\r
+       public static IJobEngine getJobengineService() {\r
+               if (jobengineService == null)\r
+                       throw new RuntimeException("IJobEngine is null");\r
+               return jobengineService;\r
+       }\r
+\r
+       public static INexioAPI getNexioService() {\r
+               if (nexioService == null)\r
+                       throw new RuntimeException("INexioAPI is null");\r
+               return nexioService;\r
+       }\r
+\r
+       public static IOctopusAPI getOctopusService() {\r
+               if (octopusService == null)\r
+                       throw new RuntimeException("IOctopusAPI is null");\r
+               return octopusService;\r
        }\r
 \r
        public synchronized void bindService(Object service) {\r
@@ -41,6 +62,9 @@ public class ComponentBinder {
                }\r
        }\r
 \r
+       public void start() {\r
+       }\r
+\r
        public synchronized void unbindService(Object service) {\r
                if (service instanceof IJobEngine) {\r
                        jobengineService = null;\r
@@ -63,28 +87,4 @@ public class ComponentBinder {
                        return;\r
                }\r
        }\r
-\r
-       public static IJobEngine getJobengineService() {\r
-               if (jobengineService == null)\r
-                       throw new RuntimeException("IJobEngine is null");\r
-               return jobengineService;\r
-       }\r
-\r
-       public static IItemManager getItemManagerService() {\r
-               if (itemManagerService == null)\r
-                       throw new RuntimeException("IItemManager is null");\r
-               return itemManagerService;\r
-       }\r
-\r
-       public static IOctopusAPI getOctopusService() {\r
-               if (octopusService == null)\r
-                       throw new RuntimeException("IOctopusAPI is null");\r
-               return octopusService;\r
-       }\r
-\r
-       public static INexioAPI getNexioService() {\r
-               if (nexioService == null)\r
-                       throw new RuntimeException("INexioAPI is null");\r
-               return nexioService;\r
-       }\r
 }\r
index cfc1d0885bb2247bcf4d2bbbaf43109a5cea79e6..ab81c22f3afc11731bef622384f5386e36d3ca4d 100644 (file)
@@ -11,9 +11,14 @@ import user.jobengine.osgi.rest.octopus.OctopusRESTService;
 \r
 public class RESTApplications extends Application {\r
 \r
+       public RESTApplications() {\r
+               //              ResteasyProviderFactory instance = ResteasyProviderFactory.getInstance();\r
+               //              instance.registerProvider(DefaultTextPlain.class, true);\r
+               //              System.out.println("");\r
+       }\r
+\r
        @Override\r
        public Set<Class<?>> getClasses() {\r
-               return new HashSet<>(\r
-                               Arrays.asList(OctopusRESTService.class, JobengineService.class, JacksonJsonProvider.class));\r
+               return new HashSet<>(Arrays.asList(OctopusRESTService.class, JobengineService.class, JacksonJsonProvider.class, TextMessageBodyReaderWriter.class));\r
        }\r
 }\r
diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/TextMessageBodyReaderWriter.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/TextMessageBodyReaderWriter.java
new file mode 100644 (file)
index 0000000..e41e6da
--- /dev/null
@@ -0,0 +1,14 @@
+package user.jobengine.osgi.rest;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.Produces;
+import javax.ws.rs.ext.Provider;
+
+import org.jboss.resteasy.plugins.providers.DefaultTextPlain;
+
+@Provider
+@Produces({ "text/plain", "text/html" })
+@Consumes({ "text/plain" })
+public class TextMessageBodyReaderWriter extends DefaultTextPlain {
+
+}
\ No newline at end of file
index 142e244b50ed7ee0ae0286e4a5e13b27b1be071b..426ec305a7a88f313d21a23c599d6e1df3a3b73f 100644 (file)
@@ -10,13 +10,16 @@ import javax.ws.rs.core.Response;
 \r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.eclipse.core.runtime.adaptor.EclipseStarter;\r
 \r
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Item;\r
 import user.jobengine.db.JSONBase;\r
 import user.jobengine.osgi.rest.ComponentBinder;\r
+import user.jobengine.server.IJobEngine;\r
 \r
 @Path("/jobengine")\r
+@SuppressWarnings("restriction")\r
 public class JobengineService {\r
 \r
        private static final Logger logger = LogManager.getLogger();\r
@@ -26,6 +29,23 @@ public class JobengineService {
                logger.info("Created");\r
        }\r
 \r
+       @POST\r
+       @Path("/create")\r
+       @Consumes({ MediaType.APPLICATION_JSON })\r
+       @Produces({ MediaType.APPLICATION_JSON })\r
+       public Response create(JSONBase entity) {\r
+               Response result = null;\r
+               try {\r
+                       if (itemManager == null)\r
+                               throw new Exception("No ItemManager found");\r
+                       itemManager.add(entity);\r
+                       result = Response.ok().entity(entity).build();\r
+               } catch (Exception e) {\r
+                       result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();\r
+               }\r
+               return result;\r
+       }\r
+\r
        @GET\r
        @Path("/item")\r
        @Consumes({ MediaType.APPLICATION_JSON })\r
@@ -43,17 +63,28 @@ public class JobengineService {
                return result;\r
        }\r
 \r
-       @POST\r
-       @Path("/create")\r
-       @Consumes({ MediaType.APPLICATION_JSON })\r
-       @Produces({ MediaType.APPLICATION_JSON })\r
-       public Response create(JSONBase entity) {\r
+       @GET\r
+       @Path("/halt")\r
+       public Response halt() {\r
                Response result = null;\r
                try {\r
-                       if (itemManager == null)\r
+                       final IJobEngine jobEngine = ComponentBinder.getJobengineService();\r
+                       if (jobEngine == null)\r
                                throw new Exception("No ItemManager found");\r
-                       itemManager.add(entity);\r
-                       result = Response.ok().entity(entity).build();\r
+\r
+                       Thread shutdownThread = new Thread(() -> {\r
+                               try {\r
+                                       Thread.sleep(1000);\r
+                                       jobEngine.shutdown();\r
+                                       EclipseStarter.shutdown();\r
+                                       System.exit(0);\r
+                               } catch (Exception e) {\r
+                                       logger.error("Error:", e);\r
+                               }\r
+                       });\r
+                       shutdownThread.start();\r
+\r
+                       result = Response.ok().build();\r
                } catch (Exception e) {\r
                        result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build();\r
                }\r