<argument>"lcd ${local.location}/plugins"</argument>\r
<argument>"cd ${remote.location}/plugins"</argument>\r
<argument>"synchronize remote"</argument>\r
+ <argument>"lcd ${local.location}/configuration"</argument>\r
+ <argument>"cd ${remote.location}/configuration"</argument>\r
+ <argument>"synchronize remote -filemask=config.ini"</argument>\r
<argument>"exit"</argument>\r
</arguments>\r
</configuration>\r
<executor className="user.jobengine.server.steps.SyncOCTOPUSDataStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.TranscodeFFAStranStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.TranscodeSELENIOStep" maxConcurrent="4"/>\r
- <executor className="user.jobengine.server.steps.TSMBackupStep" maxConcurrent="2"/>\r
+ <executor className="user.jobengine.server.steps.TSMBackupStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.TSMRestoreStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.MediaToolStep" maxConcurrent="1"/>\r
<input>\r
<parameter name="transcoderTemplateName" />\r
</input>\r
- <input>\r
- <parameter name="localHiresSourcePath" />\r
- </input>\r
<input>\r
<parameter name="globalHiresSourcePath" />\r
</input>\r
<jobtemplate name="Visszarögzített anyagok archiválása mappából">\r
<declarations>\r
<parameters>\r
- <parameter name="filePath" type="java.lang.String" />\r
+ <parameter name="localHiresPath" type="java.lang.String" />\r
+ <parameter name="globalHiresPath" type="java.lang.String" />\r
+ <parameter name="localLowresPath" type="java.lang.String" />\r
+ <parameter name="transcoderAddress" type="java.lang.String" />\r
+ <parameter name="transcoderTemplateName" type="java.lang.String" />\r
+ <parameter name="webPath" type="java.lang.String" />\r
</parameters>\r
+ <variables>\r
+ <variable name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
+ <variable name="targetNamePattern" type="java.lang.String" />\r
+ <variable name="archiveItem" type="user.jobengine.server.steps.ArchiveItem" />\r
+ <variable name="killDateDays" type="java.lang.Integer"/>\r
+ <variable name="successRecipient" type="java.lang.String" />\r
+ <variable name="deleteSource" type="java.lang.Boolean"/>\r
+ </variables>\r
</declarations>\r
<commands>\r
+ <calljobstep type="user.jobengine.server.steps.CreateMissingLowresStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <parameter name="localHiresPath" />\r
+ </input>\r
+ </inputs>\r
+ <outputs>\r
+ <output>\r
+ <variable name="mediaCubeMedia" />\r
+ </output>\r
+ <output>\r
+ <variable name="archiveItem" />\r
+ </output>\r
+ <output>\r
+ <variable name="targetNamePattern" />\r
+ </output>\r
+ <output>\r
+ <variable name="successRecipient" />\r
+ </output>\r
+ <output>\r
+ <variable name="killDateDays" />\r
+ </output>\r
+ <output>\r
+ <variable name="deleteSource" />\r
+ </output>\r
+ </outputs>\r
+ </calljobstep>\r
+ <calljobstep type="user.jobengine.server.steps.TSMRestoreStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <variable name="mediaCubeMedia" />\r
+ </input>\r
+ <input>\r
+ <parameter name="localHiresPath" />\r
+ </input>\r
+ <input>\r
+ <variable name="targetNamePattern" />\r
+ </input>\r
+ <input>\r
+ <variable name="successRecipient" />\r
+ </input>\r
+ <input>\r
+ <variable name="killDateDays" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
<calljobstep type="user.jobengine.server.steps.MediaToolStep" weight="1">\r
<inputs>\r
<input>\r
- <parameter name="filePath" />\r
+ <variable name="archiveItem" />\r
+ </input>\r
+ <input>\r
+ <variable name="mediaCubeMedia" />\r
+ </input>\r
+ </inputs>\r
+ </calljobstep>\r
+ <calljobstep type="user.jobengine.server.steps.TranscodeFFAStranStep" weight="1">\r
+ <inputs>\r
+ <input>\r
+ <variable name="archiveItem" />\r
+ </input>\r
+ <input>\r
+ <variable name="mediaCubeMedia" />\r
+ </input>\r
+ <input>\r
+ <parameter name="transcoderAddress" />\r
+ </input>\r
+ <input>\r
+ <parameter name="transcoderTemplateName" />\r
+ </input>\r
+ <input>\r
+ <parameter name="globalHiresPath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="localLowresPath" />\r
+ </input>\r
+ <input>\r
+ <parameter name="webPath" />\r
+ </input>\r
+ <input>\r
+ <variable name="deleteSource" />\r
</input>\r
</inputs>\r
</calljobstep>\r
package user.jobengine.server.steps;\r
\r
-import java.nio.file.Files;\r
import java.nio.file.Paths;\r
import java.util.List;\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
\r
import user.jobengine.db.ItemDAOEx;\r
import user.jobengine.db.ItemManager;\r
\r
public class CreateMissingLowresStep extends JobStep {\r
private static final Logger logger = LogManager.getLogger();\r
- private static final String targetNamePattern = "%s";\r
- private String workPath = "/mnt/ISILON/ARCHIVE_RESTORE";\r
- private String transcoderPath = "/mnt/SELENIO";\r
- private String webPath = "/mediacube/data/lowres/www/video";\r
+ private Marker marker;\r
\r
@StepEntry\r
- public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(String localHiresPath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ Object[] result = { null, null, "%s", null, 0, true };\r
+ marker = jobRuntime.getMarker();\r
ItemDAOEx dao = new ItemDAOEx((ItemManager) jobEngine.getItemManager());\r
List<Media> medias = dao.getUntranscodedMedias();\r
- if (medias == null)\r
- return null;\r
-\r
- int i = 1;\r
- for (Media media : medias) {\r
- String name = media.getMediaFilesName();\r
- logger.info("Processing {}", name);\r
- restore(jobEngine, jobRuntime, media);\r
- transcode(jobEngine, jobRuntime, media);\r
- Files.delete(Paths.get(workPath, name));\r
- setProgress(i * 100 / medias.size());\r
- i++;\r
+ try {\r
+ if (medias == null || medias.size() == 0) {\r
+ throw new Exception("Nincs feldolgozandó hiány.");\r
+ }\r
+\r
+ result[0] = medias.get(0);\r
+ ArchiveItem archiveItem = new ArchiveItem();\r
+ archiveItem.setMediaFile(Paths.get(localHiresPath, medias.get(0).getMediaFilesName()).toString());\r
+ result[1] = archiveItem;\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ logger.error(marker, e.getMessage());\r
+ } finally {\r
+ setProgress(100);\r
}\r
-\r
- return null;\r
- }\r
-\r
- private void restore(IJobEngine jobEngine, IJobRuntime jobRuntime, Media media) throws Exception {\r
- TSMRestoreStep restore = new TSMRestoreStep();\r
- restore.execute(media, workPath, targetNamePattern, null, 0, jobEngine, jobRuntime);\r
- }\r
-\r
- private void transcode(IJobEngine jobEngine, IJobRuntime jobRuntime, Media media) throws Exception {\r
- TranscodeSELENIOStep selenio = new TranscodeSELENIOStep();\r
- ArchiveItem archiveItem = new ArchiveItem();\r
- archiveItem.setMediaFile(media.getMediaFilesName());\r
- selenio.execute(workPath, archiveItem, media, transcoderPath, webPath, jobEngine, jobRuntime);\r
+ return result;\r
}\r
}\r
package user.jobengine.server.steps;\r
\r
+import java.nio.file.Path;\r
import java.nio.file.Paths;\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Marker;\r
\r
import user.commons.mediatool.MediaInfo;\r
+import user.jobengine.db.Media;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
private Marker marker;\r
\r
@StepEntry\r
- public Object[] execute(String filePath, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
marker = jobRuntime.getMarker();\r
- MediaInfo mi = new MediaInfo(Paths.get(filePath));\r
+\r
+ if (mediaCubeMedia.getLength() > 0)\r
+ return null;\r
+\r
+ Path filePath = Paths.get(archiveItem.getMediaFile());\r
+ MediaInfo mi = new MediaInfo(filePath);\r
try {\r
mi.process();\r
+ long frames = mi.getFrames();\r
+ if (frames > 0) {\r
+ mediaCubeMedia.setLength(frames);\r
+ mediaCubeMedia.modify();\r
+ }\r
} catch (Exception e) {\r
logger.catching(e);\r
logger.error(marker, "A '{}' média analizálása sikertelen. A rendszer üzenete: {}", filePath, e.getMessage());\r
int extPos = name.toLowerCase().lastIndexOf(LXFEXT);\r
targetFileName = String.format("20%s-%s", Paths.get(mediaFile).getParent().getFileName(), name.substring(0, extPos));\r
if (targetFileName.length() > 32) {\r
- targetFileName = targetFileName.substring(0, 27) + "_PGM";\r
+ targetFileName = targetFileName.substring(0, 28) + "_PGM";\r
}\r
logger.info(marker, "Az archiváló folyamat az '{}' anyagot archiválja.", mediaFile);\r
}\r
private Marker marker;\r
\r
@StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName, String localHiresTargetPath,\r
+ public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName,\r
String globalHiresSourcePath, String localLowresTargetPath, String webPath, boolean deleteSource, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
throws Exception {\r
this.marker = jobRuntime.getMarker();\r
check(archiveItem, "archiveItem");\r
check(transcoderAddress, "transcoderAddress");\r
check(transcoderTemplateName, "transcoderTemplateName");\r
- check(localHiresTargetPath, "localHiresTargetPath");\r
check(globalHiresSourcePath, "globalHiresSourcePath");\r
check(localLowresTargetPath, "localLowresTargetPath");\r
check(webPath, "webPath");\r
\r
SET LOCAL_TEMPLATES_LOCATION=jobtemplates\r
SET REMOTE_TEMPLATES_LOCATION=/opt/test-mediacube/configuration/jobtemplates\r
+\r
+SET LOCAL_CONFIG_LOCATION=config\r
+SET REMOTE_CONFIG_LOCATION=/opt/test-mediacube/configuration/executors\r
\r
ECHO *** Deploy steps to server %REMOTE_HOST% ***\r
WinSCP.com /command ^\r
"synchronize remote" ^\r
"exit"\r
\r
+ ECHO *** Deploy config to server %REMOTE_HOST% ***\r
+ WinSCP.com /command ^\r
+ "open %REMOTE_SERVER_ADDRESS% -hostkey=""%REMOTE_SERVER_HOSTKEY%"" -timeout=60" ^\r
+ "lcd %LOCAL_CONFIG_LOCATION%" ^\r
+ "cd %REMOTE_CONFIG_LOCATION%" ^\r
+ "synchronize remote -filemask=config.xml" ^\r
+ "exit"\r
+\r
@ECHO ON\r
\ No newline at end of file
user.commons.mediatool,
user.commons.morpheus,
user.commons.nexio,
- user.commons.nexio.api,
user.commons.nosql,
user.commons.octopus,
user.commons.rcc,
public interface INexioAPI {\r
final String ENCODING = "ISO-8859-2";\r
\r
- List<DBObject> getItems(Date modified, boolean itemsWithAgency);\r
+ NexioDispatcher getDispatcher();\r
\r
+ List<DBObject> getItems(Date modified, boolean itemsWithAgency);\r
}\r
public class NexioAPI implements INexioAPI {\r
private static final Logger logger = LogManager.getLogger();\r
private static final String MODIFIEDTIMESTAMP = "modifiedtimestamp";\r
+ private NexioDispatcher dispatcher;\r
+\r
+ @Override\r
+ public NexioDispatcher getDispatcher() {\r
+ if (dispatcher == null)\r
+ dispatcher = new NexioDispatcher();\r
+ return dispatcher;\r
+ }\r
\r
@Override\r
public List<DBObject> getItems(Date modified, boolean itemsWithAgency) {\r
Bundle-Name: Server
Bundle-SymbolicName: user.jobengine.osgi.server;singleton:=true
Bundle-Version: 1.0.0
-Service-Component: OSGI-INF/component.xml
+Service-Component: OSGI-INF/component.xml, OSGI-INF/componentBinder.xml
Import-Package: javax.servlet;version="3.1.0",
javax.servlet.http;version="3.1.0",
org.apache.logging.log4j;version="2.8.2",
<?xml version="1.0" encoding="UTF-8"?>\r
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="user.jobengine.osgi.server" activate="startup" deactivate="shutdown">\r
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="user.jobengine.server.JobEngine" activate="startup" deactivate="shutdown">\r
<implementation class="user.jobengine.server.JobEngine"/>\r
<!-- \r
<reference bind="bindService" cardinality="1..1" interface="user.jobengine.server.IJobEngine" name="IJobEngine" policy="static" unbind="unbindService"/>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="user.jobengine.server.ComponentBinder">\r
+ <implementation class="user.jobengine.osgi.server.ComponentBinder"/>\r
+ <reference bind="bindService" cardinality="1..1" interface="user.commons.nexio.INexioAPI" name="INexioAPI" policy="static" unbind="unbindService"/>\r
+</scr:component>\r
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
<?init class="user.jobengine.zk.util.AdminAuthInitiator"?>\r
<zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute">\r
+ <script>\r
+ window.history.pushState(null, "Folyamatok", "/jobs"); \r
+ </script>\r
<style>\r
.z-progressmeter { height: 16px; border: 1px solid #cfcfcf; background: #fff 0 0 repeat-x; text-align: left; overflow: hidden; // background-image:\r
url(/zkau/web/1bf94a1d/zul/img/misc/prgmeter-anim.gif); }\r
--- /dev/null
+package user.jobengine.osgi.server;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.nexio.INexioAPI;\r
+\r
+public class ComponentBinder {\r
+ private static final String MEDIACUBE = "MEDIACUBE";\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private static INexioAPI nexioAPI;\r
+\r
+ public static INexioAPI getNexioAPI() {\r
+ if (nexioAPI == null)\r
+ throw new RuntimeException("INexioAPI is null");\r
+ return nexioAPI;\r
+ }\r
+\r
+ public synchronized void bindService(Object service) {\r
+ if (service instanceof INexioAPI) {\r
+ nexioAPI = (INexioAPI) service;\r
+ logger.info("INexioAPI service binded");\r
+ return;\r
+ }\r
+ }\r
+\r
+ public synchronized void unbindService(Object service) {\r
+ if (service instanceof INexioAPI) {\r
+ nexioAPI = null;\r
+ logger.info("INexioAPI service unbinded");\r
+ return;\r
+ }\r
+ }\r
+}\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
-import org.osgi.framework.BundleContext;\r
-import org.osgi.framework.FrameworkUtil;\r
-import org.osgi.framework.ServiceReference;\r
import org.zkoss.bind.annotation.BindingParam;\r
import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.Init;\r
import com.ibm.nosql.json.api.BasicDBObject;\r
\r
import user.commons.ListUtils;\r
-import user.commons.nexio.api.ClipEventListener;\r
+import user.commons.nexio.INexioAPI;\r
+import user.commons.nexio.NexioDispatcher;\r
import user.jobengine.db.ItemManagerData.SignalType;\r
+import user.jobengine.osgi.server.ComponentBinder;\r
import user.jobengine.server.IJobChangedListener;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
if (evt.getName().equals("onCancel"))\r
return;\r
try {\r
- BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();\r
- if (bundleContext == null)\r
- return;\r
- ServiceReference<ClipEventListener> reference = bundleContext.getServiceReference(ClipEventListener.class);\r
- ClipEventListener listener = bundleContext.getService(reference);\r
- listener.restart();\r
+ INexioAPI nexioAPI = ComponentBinder.getNexioAPI();\r
+ NexioDispatcher dispatcher = nexioAPI.getDispatcher();\r
+ dispatcher.restart();\r
} catch (Exception e) {\r
Messagebox.show(e.getMessage());\r
}\r
package user.jobengine.zk.model;\r
\r
+import java.text.ParseException;\r
+import java.util.Date;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.quartz.CronExpression;\r
import org.zkoss.bind.annotation.AfterCompose;\r
import org.zkoss.bind.annotation.Command;\r
import org.zkoss.bind.annotation.ContextParam;\r
import user.jobengine.server.scheduler.SchedulerService;\r
\r
public class JobSelectorModel extends BaseModel {\r
-\r
+ private static final String NEXT_TIME = "nextTime";\r
+ private static final Logger logger = LogManager.getLogger();\r
+ private static final String CRONEXPRESSION = "cronexpression";\r
@Wire("#resultWin")\r
private Window resultWin;\r
private IJobEngine jobEngine;\r
public void init() {\r
this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
jobs = new ListModelList<>(NoSQLUtils.asList(jobEngine.getScheduler().getScheduleJobs()));\r
+ if (jobs != null) {\r
+ for (BasicDBObject job : jobs) {\r
+ String cronExpression = job.getString(CRONEXPRESSION);\r
+ if (StringUtils.isNotBlank(cronExpression)) {\r
+ CronExpression ce;\r
+ try {\r
+ ce = new CronExpression(cronExpression);\r
+ Date nextTime = ce.getNextValidTimeAfter(new Date());\r
+ job.put(NEXT_TIME, nextTime);\r
+ } catch (ParseException e) {\r
+ logger.catching(e);\r
+ }\r
+ }\r
+ }\r
+\r
+ }\r
}\r
\r
public void setJobs(ListModelList<BasicDBObject> jobs) {\r
Bundle-SymbolicName: user.jobengine.osgi.services;singleton:=true
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Service-Component: OSGI-INF/component.xml, OSGI-INF/HaltCommandProvider.xml
+Service-Component: OSGI-INF/componentBinder.xml, OSGI-INF/HaltCommandProvider.xml
Bundle-ActivationPolicy: lazy
Web-ContextPath: /services
Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
org.osgi.framework;version="1.8.0",
user.commons,
user.commons.nexio,
- user.commons.nexio.api,
user.commons.octopus,
user.jobengine.db,
user.jobengine.server
<reference bind="bindService" cardinality="1..1" interface="user.jobengine.db.IItemManager" name="IItemManager" policy="static" unbind="unbindService"/>\r
<reference bind="bindService" cardinality="1..1" interface="user.commons.octopus.IOctopusAPI" name="IOctopusAPI" policy="static" unbind="unbindService"/>\r
<reference bind="bindService" cardinality="1..1" interface="user.commons.nexio.INexioAPI" name="INexioAPI" policy="static" unbind="unbindService"/>\r
+ <reference bind="bindService" cardinality="1..1" interface="user.jobengine.osgi.ws.nexio.NexioWSServlet" name="NexioWSServlet" policy="static" unbind="unbindService"/>\r
+\r
</scr:component>\r
import org.apache.logging.log4j.MarkerManager;\r
\r
import user.commons.nexio.INexioAPI;\r
+import user.commons.nexio.NexioDispatcher;\r
import user.commons.octopus.IOctopusAPI;\r
import user.jobengine.db.IItemManager;\r
+import user.jobengine.osgi.ws.nexio.NexioWSServlet;\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
- private static IOctopusAPI octopusService;\r
- private static INexioAPI nexioService;\r
+ private static IJobEngine jobengine;\r
+ private static IItemManager itemManager;\r
+ private static IOctopusAPI octopusAPI;\r
+ private static INexioAPI nexioAPI;\r
\r
- public static IItemManager getItemManagerService() {\r
- if (itemManagerService == null)\r
+ public static IItemManager getItemManager() {\r
+ if (itemManager == null)\r
throw new RuntimeException("IItemManager is null");\r
- return itemManagerService;\r
+ return itemManager;\r
}\r
\r
- public static IJobEngine getJobengineService() {\r
- if (jobengineService == null)\r
+ public static IJobEngine getJobengine() {\r
+ if (jobengine == null)\r
throw new RuntimeException("IJobEngine is null");\r
- return jobengineService;\r
+ return jobengine;\r
}\r
\r
- public static INexioAPI getNexioService() {\r
- if (nexioService == null)\r
+ public static INexioAPI getNexioAPI() {\r
+ if (nexioAPI == null)\r
throw new RuntimeException("INexioAPI is null");\r
- return nexioService;\r
+ return nexioAPI;\r
}\r
\r
- public static IOctopusAPI getOctopusService() {\r
- if (octopusService == null)\r
+ public static IOctopusAPI getOctopusAPI() {\r
+ if (octopusAPI == null)\r
throw new RuntimeException("IOctopusAPI is null");\r
- return octopusService;\r
+ return octopusAPI;\r
}\r
\r
+ private NexioWSServlet nexioServlet;\r
+\r
public synchronized void bindService(Object service) {\r
if (service instanceof IJobEngine) {\r
- jobengineService = (IJobEngine) service;\r
+ jobengine = (IJobEngine) service;\r
logger.info("IJobEngine service binded");\r
return;\r
}\r
if (service instanceof IItemManager) {\r
- itemManagerService = (IItemManager) service;\r
+ itemManager = (IItemManager) service;\r
logger.info("IItemManager service binded");\r
return;\r
}\r
if (service instanceof IOctopusAPI) {\r
- octopusService = (IOctopusAPI) service;\r
+ octopusAPI = (IOctopusAPI) service;\r
logger.info("IOctopusAPI service binded");\r
return;\r
}\r
if (service instanceof INexioAPI) {\r
- nexioService = (INexioAPI) service;\r
+ nexioAPI = (INexioAPI) service;\r
logger.info("INexioAPI service binded");\r
return;\r
}\r
+ if (service instanceof NexioWSServlet) {\r
+ nexioServlet = (NexioWSServlet) service;\r
+ logger.info("NexioWSServlet service binded");\r
+ return;\r
+ }\r
}\r
\r
public void start() {\r
+ NexioDispatcher dispatcher = nexioAPI.getDispatcher();\r
+ dispatcher.setNexioChangeListener(nexioServlet);\r
+ dispatcher.startup();\r
+\r
logger.info(MarkerManager.getMarker(MEDIACUBE), "A MediaCube server elindult.");\r
}\r
\r
public synchronized void unbindService(Object service) {\r
if (service instanceof IJobEngine) {\r
- jobengineService = null;\r
+ jobengine = null;\r
logger.info("IJobEngine service unbinded");\r
return;\r
}\r
if (service instanceof IItemManager) {\r
- itemManagerService = null;\r
+ itemManager = null;\r
logger.info("IItemManagerService service unbinded");\r
return;\r
}\r
if (service instanceof IOctopusAPI) {\r
- octopusService = null;\r
+ octopusAPI = null;\r
logger.info("IOctopusAPI service unbinded");\r
return;\r
}\r
if (service instanceof INexioAPI) {\r
- nexioService = null;\r
+ nexioAPI = null;\r
logger.info("INexioAPI service unbinded");\r
return;\r
}\r
public class JobengineService {\r
\r
private static final Logger logger = LogManager.getLogger();\r
- private IItemManager itemManager = ComponentBinder.getItemManagerService();\r
+ private IItemManager itemManager = ComponentBinder.getItemManager();\r
\r
public JobengineService() {\r
//logger.info("Created");\r
public Response halt() {\r
Response result = null;\r
try {\r
- final IJobEngine jobEngine = ComponentBinder.getJobengineService();\r
+ final IJobEngine jobEngine = ComponentBinder.getJobengine();\r
if (jobEngine == null)\r
throw new Exception("No ItemManager found");\r
\r
public class OctopusRESTService {
private static final Logger logger = LogManager.getLogger();
private static final String ID = "id";
- private IOctopusAPI octopusService = ComponentBinder.getOctopusService();
+ private IOctopusAPI octopusService = ComponentBinder.getOctopusAPI();
public OctopusRESTService() {
logger.trace("Created");
import com.ibm.nosql.json.api.BasicDBObject;
import user.commons.nexio.INexioChangeListener;
-import user.commons.nexio.NexioDispatcher;
-import user.commons.nexio.api.ClipEventListener;
@SuppressWarnings("serial")
public class NexioWSServlet extends WebSocketServlet implements INexioChangeListener {
}
private Set<Session> sessions = new ConcurrentHashSet<>();
- private NexioDispatcher dispatcher = null;
public NexioWSServlet() {
logger.info("Created");
instance = this;
- dispatcher = new NexioDispatcher();
- dispatcher.setNexioChangeListener(this);
- dispatcher.startup();
- logger.info("Initialized");
- registerNexioService();
+ BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+ if (bundleContext != null)
+ bundleContext.registerService(NexioWSServlet.class, this, null);
}
public void addSession(Session session) {
sessions.removeAll(deadSessions);
}
- private void registerNexioService() {
- BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
- if (bundleContext != null) {
- ClassLoader tccl = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(ClipEventListener.class.getClassLoader());
- bundleContext.registerService(ClipEventListener.class, dispatcher, null);
- } catch (Exception e) {
- logger.catching(e);
- } finally {
- Thread.currentThread().setContextClassLoader(tccl);
- }
- }
- }
-
public void removeSession(Session session) {
if (sessions.contains(session))
sessions.remove(session);
//logger.info("Received: " + message);
try {
- INexioAPI nexioService = ComponentBinder.getNexioService();
- if (nexioService == null)
+ INexioAPI nexioAPI = ComponentBinder.getNexioAPI();
+ if (nexioAPI == null)
throw new Exception("Nexio service is unreachable");
BasicDBObject data = (BasicDBObject) JSONUtil.jsonToDbObject(message);
BasicDBObject response = new BasicDBObject(ACTION, action);
switch (action) {
case LIST:
- List<DBObject> clips = nexioService.getItems(null, true);
+ List<DBObject> clips = nexioAPI.getItems(null, true);
response.append(DATA, clips);
asyncSendResponse(getSession(), response);
break;