int hr;\r
IntPtr hEvent;\r
MediaDescription = mediaDesc;\r
- CurrentTC = new Timecode(mediaDesc.FirstFrame);\r
+ if (mediaDesc != null)\r
+ CurrentTC = new Timecode(mediaDesc.FirstFrame);\r
Debug.WriteLine("SetupGraph");\r
// Set up the graph\r
SetupGraph(hWin);\r
private void SetupGraph(Control hWin) {\r
int hr;\r
\r
- m_videoWidth = MediaDescription.Resolution.Width;\r
- m_videoHeight = MediaDescription.Resolution.Height;\r
+ if (MediaDescription != null) {\r
+ m_videoWidth = MediaDescription.Resolution.Width;\r
+ m_videoHeight = MediaDescription.Resolution.Height;\r
+ }\r
\r
try {\r
m_FilterGraph = new FilterGraph() as IFilterGraph2;\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.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "SONY MXF 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
Debug.WriteLine("CloseInterfaces");\r
int hr;\r
GC.SuppressFinalize(this);\r
- tcWorker.CancelAsync();\r
+ if (tcWorker != null)\r
+ tcWorker.CancelAsync();\r
lock (this) {\r
if (State != GraphState.Exiting) {\r
State = GraphState.Exiting;\r
public static MediaDescription GetDescription(string fileName) {\r
MediaDescription mediaDesc = new MediaDescription();\r
mediaDesc.fileName = fileName;\r
+ //return mediaDesc;\r
logger.Debug("Start MediaInfo");\r
MediaInfo MI = new MediaInfo();\r
MI.Open(fileName);\r
\r
private static void setResolution(MediaDescription mediaDesc, MediaInfo MI) {\r
int videoStreams = MI.Count_Get(StreamKind.Video);\r
- if (videoStreams != 1)\r
+ if (videoStreams > 1)\r
throw new Exception("Multiple video streams found!");\r
+ if (videoStreams == 1) {\r
+ }\r
int Width = int.Parse(MI.Get(StreamKind.Video, 0, "Width"));\r
int Height = int.Parse(MI.Get(StreamKind.Video, 0, "Height"));\r
mediaDesc.resolution = new Size(Width, Height);\r
\r
trackBar1.Value = 0;\r
trackBar1.Minimum = 0;\r
- trackBar1.Maximum = m_mediaDescription.Duration.Frames + 1;\r
m_play = new DxPlayer(panelVideo, m_mediaDescription);\r
- txtStartTC.Text = m_mediaDescription.FirstFrame.ToString();\r
- txtEndTC.Text = m_mediaDescription.Duration.ToString();\r
+ m_play.PlayEvent += new DxPlayEvent(playEvent);\r
+ if (m_mediaDescription != null) {\r
+ trackBar1.Maximum = m_mediaDescription.Duration.Frames + 1;\r
+ txtStartTC.Text = m_mediaDescription.FirstFrame.ToString();\r
+ txtEndTC.Text = m_mediaDescription.Duration.ToString();\r
+ }\r
}\r
catch (COMException ce) {\r
MessageBox.Show("Failed to open file: " + ce.Message, "Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
\r
private void PlayerForm_Shown(object sender, EventArgs e) {\r
if (m_play != null) {\r
- m_play.PlayEvent += new DxPlayEvent(playEvent);\r
if (AutoStart)\r
m_play.Play();\r
else {\r
}\r
\r
public Timecode(Timecode tc) {\r
+ if (tc == null)\r
+ return;\r
startFrame = tc.startFrame;\r
frameRate = tc.frameRate;\r
}\r
MediaCubeApi client = new MediaCubeApi("http://localhost:8080/services/rest/jobengine/", null, null, 100);\r
client.Item();\r
}\r
+\r
+ [TestMethod]\r
+ public void TestNotify() {\r
+ MediaCubeApi client = new MediaCubeApi("http://localhost:8080/services/rest/jobengine/", null, null, 100);\r
+ client.Notify("vasay@elgekko.net", "Újravágást kérek!");\r
+ }\r
+\r
}\r
}\r
{\r
"$type": "OctopusMetadata",\r
"server": {\r
- "address": "http://10.10.1.28:8080/services/rest/octopus/",\r
+ "address": "http://10.10.1.28:8080/services/rest/octopus",\r
"userName": "dani",\r
"password": "dani",\r
"timeout": 1000\r
{\r
"$type": "MediaCubeMetadata",\r
"server": {\r
- "address": "http://10.10.1.28:8080/services/rest/jobengine/",\r
+ "address": "http://10.10.1.28:8080/services/rest/jobengine",\r
"userName": "dani",\r
"password": "dani"\r
}\r
\r
private void OnDeleted(JToken d) {\r
string id = d[ID].ToString();\r
- var item = this.Where(i => i.ID.Equals(id)).First();\r
+ var item = this.Where(i => i.ID != null && i.ID.Equals(id)).First();\r
parent.SafeCall(() => {\r
Remove(item);\r
messageBus.Send(new RemoveFileActionMsg() {\r
public FTPTargetProcessor(Control parent, TargetProcessorParametersWrapper parameters)\r
: base(parent, parameters) {\r
FtpTrace.LogFunctions = false;\r
- Uri inputUri = new Uri(String.Format("{0}/{1}", parameters.SourceConfig.Local.Address.LocalPath, parameters.InputFileName));\r
+ Uri inputUri = createInputUri(parameters);\r
inputFile = new FileInfo(inputUri.LocalPath);\r
Input = inputFile.FullName;\r
ID = parameters.ID;\r
workFlowAction = new WorkflowAction() { houseId = ID, tag = parameters.TargetConfig.Tag, touched = DateTime.Now };\r
}\r
\r
+ protected virtual Uri createInputUri(TargetProcessorParametersWrapper parameters) {\r
+ return new Uri(String.Format("{0}/{1}", parameters.SourceConfig.Local.Address.LocalPath, parameters.InputFileName));\r
+ }\r
+\r
protected override void BeforeExecute() {\r
base.BeforeExecute();\r
targetFTP = CreateClient(parameters.TargetConfig.Remote);\r
sourceConfig = parameters.SourceConfig;\r
}\r
\r
+ protected override Uri createInputUri(TargetProcessorParametersWrapper parameters) {\r
+ return new Uri(String.Format("{0}/{1}", parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
+ }\r
+\r
protected override void UploadFile() {\r
FtpClient sourceFTP = null;\r
FtpClient monitorFTP = null;\r
return result;\r
}\r
\r
+ public void Notify(string to, string content) {\r
+ var request = new RestRequest("notify", Method.GET);\r
+ //Debug.WriteLine(body);\r
+ request.AddQueryParameter("to", to);\r
+ request.AddQueryParameter("content", content);\r
+ var response = client.Execute(request);\r
+ if (response.StatusCode != HttpStatusCode.OK || response.ContentLength < 1)\r
+ return;\r
+ }\r
+\r
+\r
public void Item() {\r
var request = new RestRequest("item", Method.GET);\r
var response = client.Execute(request);\r
</Filters>\r
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %markerSimpleName - %msg (%F:%L) %n" />\r
</Console>\r
- <HTMLMailAppender name="MarkeredMail" subject="MEDIACUBE" to="vasary@elgekko.net" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
+ <HTMLMailAppender name="MarkeredMail" subject="MediaCube rendszerüzenet" to="vasary@elgekko.net" from="mediacubeserver@gmail.com" smtpHost="smtp.gmail.com"\r
smtpPort="465" smtpProtocol="smtps" smtpUsername="mediacubeserver@gmail.com" smtpPassword="salabakter" ignoreExceptions="false" bufferSize="1">\r
<Filters>\r
<MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
</Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L) %n" />\r
+ <PatternLayout pattern="%d{HH:mm:ss} %-5level - %msg %n%n A küldő a %F forráskód %L. sorából a %logger{1}.%M függvény volt. %n" />\r
</HTMLMailAppender>\r
<RollingFile name="RollingFile" fileName="${fileName}" filePattern="${filePattern}">\r
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] [%t] [%M] [%class{36}] %msg%n %throwable{short}" />\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.555"/>\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="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: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
<Filters>\r
<MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
</Filters>\r
- <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{1}.%M - %msg (%F:%L) %n" />\r
+ <PatternLayout pattern="%d{HH:mm:ss} %-5level - %msg %n%n A küldő a %F forráskód %L. sorából a %logger{1}.%M függvény volt. %n" />\r
</HTMLMailAppender>\r
<RollingFile name="MarkeredRollingFile" fileName="${markeredFileName}" filePattern="${markeredFilePattern}">\r
<Filters>\r
<argument>"call mkdir ${remote.location}"</argument>\r
<argument>"lcd ${local.location}"</argument>\r
<argument>"cd ${remote.location}"</argument>\r
- <argument>"synchronize remote -criteria=size"</argument>\r
+ <argument>"synchronize remote"</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
Fragment-Host: org.apache.logging.log4j.core;bundle-version="2.8.2"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: user.commons.log4j2.appender
-Import-Package: javax.mail;version="1.5.0"
+Import-Package: javax.mail;version="1.5.0",
+ user.commons
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
import javax.mail.internet.InternetHeaders;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.util.ByteArrayDataSource;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.apache.logging.log4j.util.Strings;
+import user.commons.MediaCubeMarker;
+
/**
* Manager for sending SMTP events.
*/
connect(appendEvent);
}
try {
+ if (appendEvent.getMarker() instanceof MediaCubeMarker) {
+ MediaCubeMarker mcm = (MediaCubeMarker) appendEvent.getMarker();
+ message.setRecipient(RecipientType.TO, new InternetAddress(mcm.getTo()));
+ }
+
final LogEvent[] priorEvents = buffer.removeAll();
// LOG4J-310: log appendEvent even if priorEvents is empty
store.appendStoreUri(storeUri);\r
store.add();\r
}\r
+ StoreUri storeUri = manager.createStoreUri(RemoteStoreProtocol.HTTP, "10.10.1.28/video");\r
+ storeUri.setPortNumber(90);\r
+ storeUri.setSource(true);\r
+ storeUri.setTarget(false);\r
+ manager.getStore("Low-res").appendStoreUri(storeUri);\r
+ manager.getStore("Low-res").setPersister(manager);\r
+ manager.getStore("Low-res").add();\r
+\r
if (manager.getFileType("High-res") == null) {\r
FileType fileType = manager.createFileType("High-res", "High resolution material", "MPEG Video", "PCM", 1, 8, 25);\r
fileType.add();\r
<borderlayout height="50px">\r
<west width="250px" border="0">\r
<div width="100%" height="100%" style="background: #008AC8;" >\r
- <image src="/img/mediacube_logo_v2_50x50.png" alt="MediaCube Server v2.0.1">\r
+ <image src="/img/mediacube_logo_v2_50x50.png" tooltiptext="MediaCube Server v2.0.1">\r
<!-- <custom-attributes org.zkoss.zul.image.preload="true" /> -->\r
</image>\r
</div>\r
package user.jobengine.zk.model;\r
\r
+import java.io.File;\r
import java.nio.file.Paths;\r
import java.util.List;\r
import java.util.Map;\r
import org.zkoss.zul.Messagebox;\r
\r
import user.commons.ListUtils;\r
+import user.commons.StoreUri;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.Item;\r
import user.jobengine.db.Media;\r
import user.jobengine.db.MediaFile;\r
List<MediaFile> mediaFiles = this.selectedMedia.getMediaFiles();\r
for (MediaFile mf : mediaFiles) {\r
Store store = mf.getStore();\r
- if (mf.getStore().isLowres()) {\r
- //protocol + address + relativepath\r
- //store.getStoreUris().get(0).getProtocol().getValue()\r
- ret = Paths.get(store.getStoreUris().get(0).toString(false), mf.getRelativePath()).toString();\r
+ if (store.isLowres()) {\r
+ StoreUri sourceStoreUri = store.getSourceStoreUri(RemoteStoreProtocol.HTTP);\r
+ File f = new File("file://" + mf.getRelativePath().replace("\\", "/"));\r
+ ret = String.format("%s%s%s", "/pages/mediaplayer.jsp?mediaurl=", sourceStoreUri.toString(), f.getName()).toString();\r
break;\r
}\r
}\r
}\r
\r
- ret = "http://10.10.1.28:90/";\r
return ret;\r
}\r
\r
}\r
return ret;\r
}\r
-\r
+ \r
public boolean getHasSelectedMediaFile(){\r
String mediaFilePath =getMediaFilePath();\r
return (mediaFilePath != null && !"".equals(mediaFilePath));\r
Export-Package: user.jobengine.osgi.rest,
user.jobengine.osgi.rest.octopus,
user.jobengine.osgi.ws.nexio
-Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11"
+Require-Bundle: org.jboss.resteasy.jaxrs;bundle-version="3.0.11",
+ org.apache.logging.log4j.core
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.MarkerManager;\r
\r
import user.commons.nexio.INexioAPI;\r
import user.commons.octopus.IOctopusAPI;\r
import user.jobengine.server.IJobEngine;\r
\r
public class ComponentBinder {\r
+ private static final String MEDIACUBE = "MEDIACUBE";\r
private static final Logger logger = LogManager.getLogger();\r
private static IJobEngine jobengineService;\r
private static IItemManager itemManagerService;\r
}\r
\r
public void start() {\r
+ logger.info(MarkerManager.getMarker(MEDIACUBE), "A MediaCube server elindult.");\r
}\r
\r
public synchronized void unbindService(Object service) {\r
import javax.ws.rs.POST;\r
import javax.ws.rs.Path;\r
import javax.ws.rs.Produces;\r
+import javax.ws.rs.QueryParam;\r
import javax.ws.rs.core.MediaType;\r
import javax.ws.rs.core.Response;\r
\r
import org.apache.logging.log4j.Logger;\r
import org.eclipse.core.runtime.adaptor.EclipseStarter;\r
\r
+import user.commons.MediaCubeMarker;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Item;\r
import user.jobengine.db.JSONBase;\r
}\r
return result;\r
}\r
+\r
+ @GET\r
+ @Path("/notify")\r
+ @Consumes({ MediaType.APPLICATION_JSON })\r
+ public Response notify(@QueryParam("to") String to, @QueryParam("content") String content) {\r
+ Response result = null;\r
+ try {\r
+ logger.info(new MediaCubeMarker(to), content);\r
+ result = Response.ok().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