<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.10.1.27:50000/mc: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/user/jobengine/server/steps" -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.10.1.27:50000/mc: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" -Dnexio.host=10.10.1.55 -Dnexio.disable=true -Djobengine.octopus.rundowns.name=test_rundowns -Djobengine.octopus.storyfolders.name=test_storyfolders -Djobengine.octopus.stories.name=test_stories -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.10.1.27:50000/mc: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.10.1.27:50000/mc: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" -Dnexio.host=10.10.1.55 -Dnexio.disable=true -Djobengine.octopus.rundowns.name=test_rundowns -Djobengine.octopus.storyfolders.name=test_storyfolders -Djobengine.octopus.stories.name=test_stories -Dmediacube.auth.location="${workspace_loc}/-configuration/mediacube-auth.properties""/>\r
<stringAttribute key="pde.version" value="3.3"/>\r
<booleanAttribute key="show_selected_only" value="true"/>\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,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
{\r
"active": false,\r
"executeimmediate": false,\r
- "name" : "Teszt folyamat",\r
+ "name" : "Teszt folyamat (nincs paraméter)",\r
"template": "fake-noparams.xml",\r
"cronexpression": "0 40 22 * * ?",\r
+ "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
+ },\r
+ {\r
+ "active": false,\r
+ "executeimmediate": false,\r
+ "name" : "Teszt folyamat",\r
+ "template": "fake.xml",\r
+ "cronexpression": "0 40 22 * * ?",\r
"parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ]\r
}\r
]}\r
<?xml version="1.0" encoding="UTF-8"?>\r
<classpath>\r
<classpathentry kind="src" path="src"/>\r
+ <classpathentry excluding="obsolate" kind="src" path="obsolate"/>\r
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
<classpathentry kind="output" path="bin"/>\r
--- /dev/null
+default.configuration=\r
+eclipse.preferences.version=1\r
+hibernate3.enabled=false\r
<?xml version="1.0" encoding="UTF-8"?>\r
<executors>\r
- <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
- <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
- <executor className="user.jobengine.server.steps.ArchiveMaterialSubmitStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.ArchiveListBuilderStep" maxConcurrent="1"/>\r
- <executor className="user.jobengine.server.steps.CheckTRAFFICMissingMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.ArchiveMaterialSubmitStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CheckMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.CheckTRAFFICMissingMaterialsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.CleanupMountedLocationStep" maxConcurrent="10"/>\r
+ <executor className="user.jobengine.server.steps.CopyForArchiveNEXIOMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.CopyForArchiveNEXIORecordingsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.CreateMissingLowresStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.DeleteNEXIOMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.DownloadRecordingFromNexioStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
+ <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
+ <executor className="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="1"/>\r
<executor className="user.jobengine.server.steps.MetadataTransformStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.OutputPathAndNameSelectorStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.RecordingsArchiveItemBuilderStep" maxConcurrent="1"/>\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="4"/>\r
- <executor className="user.jobengine.server.steps.TSMRestoreStep" maxConcurrent="2"/>\r
- <executor className="user.jobengine.server.steps.OutputPathAndNameSelectorStep" maxConcurrent="1"/>\r
- <executor className="user.jobengine.server.steps.CopyForArchiveNEXIOMaterialsStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.TSMBackupStep" maxConcurrent="2"/>\r
+ <executor className="user.jobengine.server.steps.TSMRetrieveMissingMaterialStep" maxConcurrent="1"/>\r
+ <executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
</executors>
\ No newline at end of file
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
+import com.ibm.nosql.json.api.DB;\r
+\r
+import user.commons.nosql.NoSQLUtils;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
@StepEntry\r
public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
Object[] result = { itemID + 1 };\r
-\r
+ DB noSQLDB = NoSQLUtils.getNoSQLDB();\r
//logger.info(jobRuntime.getMarker(), "Starting with {} #{}", itemID, jobRuntime.getId());\r
// Message message = logger.getMessageFactory().newMessage("Starting with {} #{}", itemID, jobRuntime.getId());\r
// logger.error(jobRuntime.getMarker(), message, new Exception("TESZT"));\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-\r
-public class MultiParamStep extends JobStep {\r
-\r
- @StepEntry\r
- public Object[] execute(long p1, String p2, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
- Object[] result = { p1 + 1, p2 + "x" };\r
-\r
- return result;\r
- }\r
-\r
-}\r
import org.apache.logging.log4j.message.Message;\r
import org.apache.logging.log4j.message.ParameterizedMessage;\r
\r
-import user.commons.ffastrans.FFAStransAPI;\r
-import user.commons.ffastrans.IFFAStransAPI;\r
+import user.commons.transcoder.FFAStransAPI;\r
+import user.commons.transcoder.IFFAStransAPI;\r
import user.jobengine.db.FileType;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.Media;\r
private Marker marker;\r
\r
@StepEntry\r
- public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName, String localHiresSourcePath,\r
- String globalHiresSourcePath, String localLowresTargetPath, String webPath, String sourcePath, boolean deleteSource, IJobEngine jobEngine,\r
- IJobRuntime jobRuntime) throws Exception {\r
+ public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName, String localHiresTargetPath,\r
+ String globalHiresSourcePath, String localLowresTargetPath, String webPath, boolean deleteSource, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
+ throws Exception {\r
marker = jobRuntime.getMarker();\r
manager = jobEngine.getItemManager();\r
store = check(manager.getSystemStore(true), "lowres Store");\r
check(archiveItem, "archiveItem");\r
check(transcoderAddress, "transcoderAddress");\r
check(transcoderTemplateName, "transcoderTemplateName");\r
- check(localHiresSourcePath, "localHiresSourcePath");\r
+ check(localHiresTargetPath, "localHiresTargetPath");\r
check(globalHiresSourcePath, "globalHiresSourcePath");\r
check(localLowresTargetPath, "localLowresTargetPath");\r
check(webPath, "webPath");\r
String sourceFileName = sourceMediaFile.getName();\r
String details = String.format("%s (%d bytes)", sourceFileName, sourceMediaFile.length());\r
try {\r
- String sourceFile = sourceMediaFile.toString().replace(localHiresSourcePath, globalHiresSourcePath);\r
+ String sourceFile = sourceMediaFile.toString().replace(localHiresTargetPath, globalHiresSourcePath);\r
IFFAStransAPI api = new FFAStransAPI(transcoderAddress, p -> {\r
jobRuntime.incrementProgress(p);\r
});\r
@StepEntry\r
public Object[] execute(ArchiveItem archiveItem, String targetFileName, int nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine,\r
IJobRuntime jobRuntime) throws Exception {\r
+\r
marker = jobRuntime.getMarker();\r
manager = jobEngine.getItemManager();\r
setAndCheck(archiveItem, targetFileName, nexioPort, nexioUserName, nexioPassword);\r
+++ /dev/null
-package user.jobengine.server.steps;\r
-\r
-import org.apache.commons.lang.StringUtils;\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.MediaCubeMarker;\r
-\r
-public class UserNotificationStep extends JobStep {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- @StepEntry\r
- public Object[] execute(String to, String notification) {\r
- if (StringUtils.isNotBlank(to) && StringUtils.isNotBlank(notification))\r
- logger.info(new MediaCubeMarker(to), notification);\r
- return null;\r
- }\r
-\r
-}\r
SET REMOTE_SERVER_HOSTKEY=ssh-ed25519 256 ea:ab:67:70:79:63:2f:6a:34:81:48:e2:b9:dd:ca:d4\r
SET REMOTE_SERVER_ADDRESS=scp://root:password@%REMOTE_HOST%\r
\r
-SET LOCAL_STEPS_LOCATION=bin/user/jobengine/server/steps\r
-SET REMOTE_STEPS_LOCATION=/opt/test-mediacube/configuration/executors\r
+SET LOCAL_STEPS_LOCATION=bin/user\r
+SET REMOTE_STEPS_LOCATION=/opt/test-mediacube/configuration/executors/user\r
\r
SET LOCAL_TEMPLATES_LOCATION=jobtemplates\r
SET REMOTE_TEMPLATES_LOCATION=/opt/test-mediacube/configuration/jobtemplates\r
Bundle-ClassPath: .
Service-Component: OSGI-INF/nexioAPI.xml, OSGI-INF/octopusAPI.xml
Export-Package: user.commons,
- user.commons.ffastrans,
user.commons.ftp,
user.commons.logging,
user.commons.morpheus,
user.commons.selenio.wsclient,
user.commons.server.protocol,
user.commons.server.tcp,
- user.commons.strings
+ user.commons.strings,
+ user.commons.transcoder
Require-Bundle: org.apache.commons.lang;bundle-version="2.4.0",
user.tsm.client;bundle-version="1.2.0",
org.apache.commons.digester;bundle-version="3.2.0";visibility:=reexport,
-package user.commons.ffastrans;\r
+package user.commons.transcoder;\r
\r
import java.util.List;\r
\r
\r
public class FFAStransAPI implements IFFAStransAPI {\r
\r
- public interface IProgressChangedListener {\r
- void onProgressChanged(int progress);\r
- }\r
-\r
- public static void main(String[] args) throws Exception {\r
-\r
- for (int i = 0; i < 1; i++) {\r
- IFFAStransAPI api = new FFAStransAPI("http://10.10.1.74:65445/api/json/v1/", p -> {\r
- System.out.println("Progress: " + p);\r
- });\r
-\r
- String inputFile = "\\\\10.10.254.74\\temp_isilon\\NEXIO\\HIRADO\\180201\\0700_hirado_CLN_-_CS.lxf";\r
- api.submit("MAM_proxy_copy", inputFile);\r
- try {\r
- api.monitor(1000);\r
- } catch (Exception e) {\r
- System.out.println(e.getMessage());\r
- }\r
- // try {\r
- //\r
- // String outputFile = "\\\\10.10.1.74\\MAM-Proxy_output\\20180201-0700_hirado_TEST-_CS.mp4";\r
- // Path outputFilePath = Paths.get(outputFile);\r
- // File file = outputFilePath.toFile();\r
- // if (!file.exists())\r
- // Thread.sleep(2000);\r
- // Files.delete(outputFilePath);\r
- // } catch (Exception e) {\r
- // System.out.println(e.getMessage());\r
- // }\r
-\r
- }\r
- }\r
+ // public static void main(String[] args) throws Exception {\r
+ //\r
+ // for (int i = 0; i < 1; i++) {\r
+ // IFFAStransAPI api = new FFAStransAPI("http://10.10.1.74:65445/api/json/v1/", p -> {\r
+ // System.out.println("Progress: " + p);\r
+ // });\r
+ //\r
+ // String inputFile = "\\\\10.10.254.74\\temp_isilon\\NEXIO\\HIRADO\\180201\\0700_hirado_CLN_-_CS.lxf";\r
+ // api.submit("MAM_proxy_copy", inputFile);\r
+ // try {\r
+ // api.monitor(1000);\r
+ // } catch (Exception e) {\r
+ // System.out.println(e.getMessage());\r
+ // }\r
+ // // try {\r
+ // //\r
+ // // String outputFile = "\\\\10.10.1.74\\MAM-Proxy_output\\20180201-0700_hirado_TEST-_CS.mp4";\r
+ // // Path outputFilePath = Paths.get(outputFile);\r
+ // // File file = outputFilePath.toFile();\r
+ // // if (!file.exists())\r
+ // // Thread.sleep(2000);\r
+ // // Files.delete(outputFilePath);\r
+ // // } catch (Exception e) {\r
+ // // System.out.println(e.getMessage());\r
+ // // }\r
+ //\r
+ // }\r
+ // }\r
\r
private ResteasyWebTarget webTarget;\r
\r
-package user.commons.ffastrans;\r
+package user.commons.transcoder;\r
\r
import java.util.List;\r
\r
--- /dev/null
+package user.commons.transcoder;\r
+\r
+public interface IProgressChangedListener {\r
+ void onProgressChanged(int progress);\r
+}
\ No newline at end of file
package user.common.octopus.test;\r
\r
import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertNotNull;\r
import static org.junit.Assert.assertTrue;\r
\r
+import java.io.File;\r
import java.io.FileInputStream;\r
import java.lang.invoke.MethodHandles;\r
import java.net.URL;\r
+import java.net.URLClassLoader;\r
import java.nio.file.Files;\r
import java.nio.file.Paths;\r
import java.sql.SQLException;\r
sut.execute();\r
}\r
\r
- @Test\r
- public void integrationTestClear() {\r
- // fixture\r
- sut = new OctopusDataMiner1();\r
- // Exercise\r
- sut.clear();\r
- }\r
-\r
- @Test\r
- public void integrationTestWithClear() {\r
- // fixture\r
- sut = new OctopusDataMiner1();\r
- sut.clear();\r
+ // @Test\r
+ // public void integrationTestClear() {\r
+ // // fixture\r
+ // sut = new OctopusDataMiner1();\r
+ // // Exercise\r
+ // sut.clear();\r
+ // }\r
\r
- // Exercise\r
- sut.run();\r
- }\r
+ // @Test\r
+ // public void integrationTestWithClear() {\r
+ // // fixture\r
+ // sut = new OctopusDataMiner1();\r
+ // sut.clear();\r
+ //\r
+ // // Exercise\r
+ // sut.run();\r
+ // }\r
\r
@Test\r
public void run() {\r
\r
@Test\r
public void test6() throws Exception {\r
- BasicDBObject x = new BasicDBObject();\r
- x.remove("y");\r
+ URL[] urls = new URL[] { new File("c:/_workspace/USER/MediaCube/server/user.jobengine.executors/bin/").toURI().toURL() };\r
+\r
+ URLClassLoader loader = URLClassLoader.newInstance(urls);\r
+ Class<?> stepClass = loader.loadClass("user.jobengine.server.steps.FakeStep2");\r
+ assertNotNull(stepClass);\r
}\r
\r
@Test\r
+++ /dev/null
-package user.jobengine.server;\r
-\r
-import java.io.ByteArrayOutputStream;\r
-import java.io.File;\r
-import java.io.InputStream;\r
-import java.net.URL;\r
-import java.net.URLConnection;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-public class DynamicClassLoader extends ClassLoader {\r
- private static final Logger logger = LogManager.getLogger();\r
-\r
- public DynamicClassLoader(ClassLoader parent) {\r
- super(parent);\r
- }\r
-\r
- @Override\r
- public Class<?> loadClass(String name) {\r
- Class<?> result = null;\r
- boolean load = false;\r
- try {\r
- String[] tags = name.split("\\.");\r
- String fileName = tags[tags.length - 1] + ".class";\r
-\r
- String filePath = null;\r
- String path = null;\r
- File file = null;\r
- File directory = null;\r
-\r
- path = System.getProperty(JobEngine.STEPSROOT);\r
- if (path != null && path.length() > 0) {\r
- directory = new File(path);\r
- filePath = directory.getCanonicalPath() + File.separator + fileName;\r
- file = new File(filePath);\r
- if (file.exists())\r
- load = true;\r
- }\r
-\r
- if (!load) {\r
- path = System.getProperty(JobEngine.STEPSALTERNATEROOT);\r
- if (path != null && path.length() > 0) {\r
- directory = new File(path);\r
- filePath = directory.getCanonicalPath() + File.separator + fileName;\r
- file = new File(filePath);\r
- if (file.exists())\r
- load = true;\r
- }\r
- }\r
-\r
- if (load) {\r
- String url = "file:" + filePath;\r
- logger.trace("Trying load from: " + url);\r
-\r
- URL classUrl = new URL(url);\r
- URLConnection connection = classUrl.openConnection();\r
- InputStream input = connection.getInputStream();\r
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();\r
- int data = input.read();\r
- while (data != -1) {\r
- buffer.write(data);\r
- data = input.read();\r
- }\r
- input.close();\r
- byte[] classData = buffer.toByteArray();\r
- result = defineClass(name, classData, 0, classData.length);\r
- if (result != null)\r
- logger.trace("Dynamic load successfull: " + result.getName());\r
- }\r
- } catch (Exception e) {\r
- throw new RuntimeException(e);\r
- }\r
- if (result == null) {\r
- try {\r
- result = super.loadClass(name);\r
- if (result != null)\r
- logger.trace("Standard load successfull: " + result.getName());\r
- } catch (Exception e1) {\r
- throw new RuntimeException(e1);\r
- }\r
- }\r
- return result;\r
- }\r
-}\r
--- /dev/null
+package user.jobengine.server;\r
+\r
+import java.io.File;\r
+import java.net.URL;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+public class DynamicClassLocator {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ private static void addPath(List<URL> result, String property) {\r
+ try {\r
+ String pathname = System.getProperty(property);\r
+ if (pathname != null && pathname.length() > 0) {\r
+ File rootDirectory = new File(pathname);\r
+ if (rootDirectory.exists())\r
+ result.add(rootDirectory.toURI().toURL());\r
+ }\r
+ } catch (Exception e) {\r
+ logger.catching(e);\r
+ }\r
+ }\r
+\r
+ public static URL[] makeURLs() {\r
+ List<URL> result = new ArrayList<>();\r
+ addPath(result, JobEngine.STEPSROOT);\r
+ addPath(result, JobEngine.STEPSALTERNATEROOT);\r
+ return result.toArray(new URL[result.size()]);\r
+ }\r
+\r
+}\r
for (IJobStepExecutor executor : executorList)
addStepExecutor(executor);
}
- loadUnregisteredExecutors(stepRoot);
- loadUnregisteredExecutors(stepsAlternateRoot);
} catch (Exception e) {
logger.error("Error loading executors: " + e);
} finally {
logger.info("Loaded templates: " + sb.toString());
}
- @SuppressWarnings("unchecked")
- public void loadUnregisteredExecutors(String path) throws Exception {
- if (path != null) {
- StoreUri store = new StoreUri();
- store.setProtocol(RemoteStoreProtocol.LOCAL);
- // String uri =
- // DirectoryUtils.combine(store.getProtocol().getValue(), path);
- store.setUri(path);
- // original code
- // store.setUri(RemoteStoreProtocol.LOCAL.getValue() + path);
- // original code end
- store.setFilter("*.class");
- List<RemoteFile> files = store.getRemoteFiles();
- DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
- for (RemoteFile file : files) {
- String name = file.getName();
- if (!name.contains("$")) {
- String className = "user.jobengine.server.steps." + name.replace("." + file.getExtension(), "");
- try {
- Class<IJobStep> clazz = (Class<IJobStep>) loader.loadClass(className);
- IJobStepExecutor executor = new JobStepExecutor(clazz, 1);
- if (executor != null)
- addStepExecutor(executor);
- } catch (Exception e) {
- logger.error("Dynamic executor loading error: " + e.getMessage());
- }
- }
- }
- }
- }
-
@Override
public void processCancelRequest(IJobMessage message) {
IJobRuntime jobRuntime = getJobById(message.getJobId());
package user.jobengine.server;
+import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
throw new JobEngineException("Step class name can't be null.");
// throw new
// JobEngineException("Illegal concurrent instance count. Must be greater then 0.");
- DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
- stepClass = (Class<IJobStep>) loader.loadClass(className);
- if (stepClass == null)
+ //DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
+ try {
+ URLClassLoader loader = URLClassLoader.newInstance(DynamicClassLocator.makeURLs(), getClass().getClassLoader());
+ stepClass = (Class<IJobStep>) loader.loadClass(className);
+ } catch (ClassNotFoundException e) {
+ logger.catching(e);
throw new JobEngineException("System can't load JobStep implementation: " + className);
+ }
// priorityQueue = new PriorityBlockingQueue<IJobRuntime>();
//queue = new LinkedBlockingQueue<IJobRuntime>();
queue = new PriorityBlockingQueue<IJobRuntime>();
@SuppressWarnings("unchecked")
@Override
public Class<IJobStep> getStepClass() {
- if (stepClass != null) {
- DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
- stepClass = (Class<IJobStep>) loader.loadClass(stepClass.getCanonicalName());
- }
+ //TODO miért hozunk létre mindíg újat
+ // if (stepClass != null) {
+ // DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
+ // stepClass = (Class<IJobStep>) loader.loadClass(stepClass.getCanonicalName());
+ // }
return stepClass;
}