\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
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
#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
using System.Security.Permissions;\r
\r
using DirectShowLib;\r
+using System.Diagnostics;\r
\r
#if !USING_NET11\r
using System.Runtime.InteropServices.ComTypes;\r
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
--- /dev/null
+<?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
<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 -Dorg.eclipse.equinox.http.jetty.http.port=8080 -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=salabakter -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps" -Djobengine.transcoder.source=c:\_Movie\hires\ -Djetty.home="${workspace_loc:-configuration}/jetty" -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 -Djobengine.octopus.api.address=http://10.10.1.21/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=salabakter -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -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 -Dorg.eclipse.equinox.http.jetty.http.port=8080 -Dorg.eclipse.epp.logging.aeri.skipReports=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djobengine.jobsteps.root="${workspace_loc}/user.jobengine.executors/config" -Djobengine.jobtemplates.root="${workspace_loc}/user.jobengine.executors/jobtemplates" -Djobengine.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=salabakter -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps" -Djobengine.transcoder.source=c:\_Movie\hires\ -Djetty.home="${workspace_loc:-configuration}/jetty" -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 -Djobengine.octopus.api.address=http://10.10.1.21/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://localhost:50000/mc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=salabakter -Djobengine.nosql.db.schema=test -Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl -Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -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
+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
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 &
--- /dev/null
+wget -qO- http://localhost:8080/services/rest/jobengine/halt
+exit 0
+
<?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
+++ /dev/null
-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
<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
<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
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",
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",
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",
<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
<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
-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
// 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
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
}\r
}\r
\r
+ public void start() {\r
+ }\r
+\r
public synchronized void unbindService(Object service) {\r
if (service instanceof IJobEngine) {\r
jobengineService = null;\r
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
\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
--- /dev/null
+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
\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
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
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