+++ /dev/null
-{\r
- "sourceStoreUri": {\r
- "protocol": "file://",\r
- "rootPath": "c:/temp"\r
- },\r
- "targets": \r
- [\r
- {\r
- "name": "name1",\r
- "storeUri": {\r
- "protocol": "file://",\r
- "rootPath": "c:/temp1"\r
- }\r
- },\r
- {\r
- "name": "name2",\r
- "storeUri": {\r
- "protocol": "file://",\r
- "rootPath": "c:/temp2"\r
- }\r
- }\r
- ]\r
-}\r
-\r
-\r
-\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.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://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -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 -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -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.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=192.168.0.12 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=false -Dnexio.disable=false -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory -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://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.db.user=db2admin -Djobengine.db.password=password -Djobengine.loglevel=INFO -Dlog4j.configurationFile="${workspace_loc}/-configuration/log4j2.xml" -Djobengine.jobsteps.alternate.root="${workspace_loc}/user.jobengine.executors/bin/" -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 -Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty -Djava.io.tmpdir=c:\temp\jetty -Djobengine.octopus.api.address=http://10.10.1.11/api/v1 -Djobengine.octopus.api.user=mam -Djobengine.octopus.api.password=napocska -Djobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; -Djobengine.nosql.db.user=db2admin -Djobengine.nosql.db.password=password -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.zenium -Djobengine.jobscheduling.config="${workspace_loc}/-configuration/scheduledjobs.json" -Djobengine.maestro.config="${workspace_loc}/-configuration/maestro.json" -Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -Djobengine.nexio.db.user=sa -Djobengine.nexio.db.password=resolve -Dnexio.host=192.168.0.12 -Djobengine.nexio.name=testnexioclips -Dnexio.useMOSGateway=false -Dnexio.disable=false -Djobengine.octopus.rundowns.name=rundowns181026 -Djobengine.octopus.storyfolders.name=storyfolders181026 -Djobengine.octopus.stories.name=stories181026 -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="false"/>\r
<stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
Bundle-ClassPath: .
Service-Component: OSGI-INF/nexioAPI.xml, OSGI-INF/octopusAPI.xml
Export-Package: user.commons,
+ user.commons.config,
user.commons.ftp,
user.commons.logging,
user.commons.mediatool,
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
-<listEntry value="/user.jobengine.osgi.commons/test/user/jobengine/remotestore/TestTSMClient.java"/>\r
-</listAttribute>\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
-<listEntry value="1"/>\r
-</listAttribute>\r
-<mapAttribute key="org.eclipse.debug.core.environmentVariables">\r
-<mapEntry key="DSMI_CONFIG" value="c:\Program Files\Tivoli\TSM\baclient\dsm.opt"/>\r
-<mapEntry key="DSMI_DIR" value="c:\Program Files\Tivoli\TSM\baclient"/>\r
-<mapEntry key="DSMI_LOG" value="c:\temp"/>\r
-</mapAttribute>\r
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>\r
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>\r
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value="TestConnect"/>\r
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="user.jobengine.remotestore.TestTSMClient"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="user.jobengine.osgi.commons"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djava.library.path="c:\Program Files\Tivoli\TSM\api64\DLL""/>\r
-</launchConfiguration>\r
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">\r
-<listEntry value="/user.jobengine.osgi.commons/test/user/jobengine/remotestore/TestTSMClient.java"/>\r
-</listAttribute>\r
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">\r
-<listEntry value="1"/>\r
-</listAttribute>\r
-<mapAttribute key="org.eclipse.debug.core.environmentVariables">\r
-<mapEntry key="DSMI_CONFIG" value="c:\Program Files\Tivoli\TSM\baclient\dsm.opt"/>\r
-<mapEntry key="DSMI_DIR" value="c:\Program Files\Tivoli\TSM\baclient"/>\r
-<mapEntry key="DSMI_LOG" value="c:\temp"/>\r
-</mapAttribute>\r
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>\r
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>\r
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>\r
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="user.jobengine.remotestore.TestTSMClient"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="user.jobengine.osgi.commons"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djava.library.path="c:\Program Files\Tivoli\TSM\api64\DLL""/>\r
-</launchConfiguration>\r
--- /dev/null
+package user.commons.config;\r
+\r
+import java.io.File;\r
+import java.nio.file.Files;\r
+import java.nio.file.Paths;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import com.fasterxml.jackson.annotation.JsonInclude.Include;\r
+import com.fasterxml.jackson.databind.DeserializationFeature;\r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.fasterxml.jackson.databind.SerializationFeature;\r
+import com.fasterxml.jackson.datatype.joda.JodaModule;\r
+\r
+public class JSONConfig {\r
+ private static Logger logger = LogManager.getLogger();\r
+ private static ObjectMapper objectMapper = createMapper();\r
+\r
+ private static ObjectMapper createMapper() {\r
+ return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)\r
+ .registerModule(new JodaModule()).setSerializationInclusion(Include.NON_NULL);\r
+ }\r
+\r
+ public static <T> T read(String locationProperty, Class<T> type) throws Exception {\r
+ T result = null;\r
+ String configPath = System.getProperty(locationProperty);\r
+ if (configPath == null || "".equals(configPath))\r
+ throw new Exception("Missing system property: " + locationProperty);\r
+ File configFile = new File(configPath);\r
+ if (configFile.exists()) {\r
+ String json = new String(Files.readAllBytes(Paths.get(configFile.getAbsolutePath())));\r
+ try {\r
+ result = objectMapper.readValue(json.getBytes(), type);\r
+\r
+ } catch (Exception e) {\r
+ logger.error(e);\r
+ throw e;\r
+ }\r
+ } else {\r
+ logger.error("Missing '{}' configuration file: {}", configPath, configFile.getAbsolutePath());\r
+ }\r
+\r
+ return result;\r
+ }\r
+\r
+}\r
--- /dev/null
+package user.jobengine.zk.model;\r
+\r
+import java.util.List;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class MaestroConfig {\r
+ private StoreUri sourceStoreUri;\r
+\r
+ private List<MaestroTarget> targets;\r
+\r
+ public StoreUri getSourceStoreUri() {\r
+ return sourceStoreUri;\r
+ }\r
+\r
+ public List<MaestroTarget> getTargets() {\r
+ return targets;\r
+ }\r
+\r
+ public void setSourceStoreUri(StoreUri sourceStoreUri) {\r
+ this.sourceStoreUri = sourceStoreUri;\r
+ }\r
+\r
+ public void setTargets(List<MaestroTarget> targets) {\r
+ this.targets = targets;\r
+ }\r
+}\r
--- /dev/null
+package user.jobengine.zk.model;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class MaestroTarget {\r
+ private String name;\r
+ private StoreUri storeUri;\r
+\r
+ public String getName() {\r
+ return name;\r
+ }\r
+\r
+ public StoreUri getStoreUri() {\r
+ return storeUri;\r
+ }\r
+\r
+ public void setName(String name) {\r
+ this.name = name;\r
+ }\r
+\r
+ public void setStoreUri(StoreUri storeUri) {\r
+ this.storeUri = storeUri;\r
+ }\r
+\r
+}
\ No newline at end of file
--- /dev/null
+package user.jobengine.server;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.junit.Test;
+
+import user.commons.config.JSONConfig;
+import user.jobengine.zk.model.MaestroConfig;
+
+public class MaestroConfigTest {
+
+ @Test
+ public void testConstructor_Schedule() throws Exception {
+ // Fixture
+ String key = "jobengine.maestro.config";
+ String root = new File(MaestroConfigTest.class.getResource("").getFile()).getAbsolutePath().replace("\\bin\\", "\\test\\");
+ Path resource = Paths.get(root, "maestro.json");
+ System.setProperty(key, resource.toString());
+ // Exercise
+ MaestroConfig sut = JSONConfig.read(key, MaestroConfig.class);
+
+ // Verify
+ assertNotNull(sut);
+ assertNotNull(sut.getSourceStoreUri());
+ assertTrue(sut.getSourceStoreUri().getRemoteFiles().size() > 0);
+ }
+
+}
--- /dev/null
+{\r
+ "sourceStoreUri": {\r
+ "protocol": "LOCAL",\r
+ "uri": "c:/temp"\r
+ },\r
+ "targets": \r
+ [\r
+ {\r
+ "name": "name1",\r
+ "storeUri": {\r
+ "protocol": "LOCAL",\r
+ "uri": "c:/temp1"\r
+ }\r
+ },\r
+ {\r
+ "name": "name2",\r
+ "storeUri": {\r
+ "protocol": "LOCAL",\r
+ "uri": "c:/temp2"\r
+ }\r
+ }\r
+ ]\r
+}\r
+\r
+\r
+\r