From: Vásáry Dániel Date: Thu, 1 Mar 2018 13:32:35 +0000 (+0000) Subject: git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube... X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=c499b826e924794439a8c925597809f9cbc80b88;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C30941 --- diff --git a/server/-configuration/run-mediacube-server-bsh.launch b/server/-configuration/run-mediacube-server-bsh.launch index e6edad96..4ffdbc8f 100644 --- a/server/-configuration/run-mediacube-server-bsh.launch +++ b/server/-configuration/run-mediacube-server-bsh.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/scheduledjobs.json b/server/-configuration/scheduledjobs.json index 7cd76f45..b2fc4826 100644 --- a/server/-configuration/scheduledjobs.json +++ b/server/-configuration/scheduledjobs.json @@ -194,9 +194,17 @@ { "active": false, "executeimmediate": false, - "name" : "Teszt folyamat", + "name" : "Teszt folyamat (nincs paraméter)", "template": "fake-noparams.xml", "cronexpression": "0 40 22 * * ?", + "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ] + }, + { + "active": false, + "executeimmediate": false, + "name" : "Teszt folyamat", + "template": "fake.xml", + "cronexpression": "0 40 22 * * ?", "parameters": [ {"name": "itemID", "value": 1, "type": "java.lang.Long"} ] } ]} diff --git a/server/user.jobengine.executors/.classpath b/server/user.jobengine.executors/.classpath index 48482498..dd1b9a64 100644 --- a/server/user.jobengine.executors/.classpath +++ b/server/user.jobengine.executors/.classpath @@ -1,6 +1,7 @@ + diff --git a/server/user.jobengine.executors/.settings/org.hibernate.eclipse.console.prefs b/server/user.jobengine.executors/.settings/org.hibernate.eclipse.console.prefs new file mode 100644 index 00000000..8fdae10c --- /dev/null +++ b/server/user.jobengine.executors/.settings/org.hibernate.eclipse.console.prefs @@ -0,0 +1,3 @@ +default.configuration= +eclipse.preferences.version=1 +hibernate3.enabled=false diff --git a/server/user.jobengine.executors/config/config.xml b/server/user.jobengine.executors/config/config.xml index e482e38c..4366af6f 100644 --- a/server/user.jobengine.executors/config/config.xml +++ b/server/user.jobengine.executors/config/config.xml @@ -1,18 +1,26 @@ - - - - + + + + + + + + + + + + + - - - - + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/src/obsolate/AFakeStep.java b/server/user.jobengine.executors/obsolate/obsolate/AFakeStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/AFakeStep.java rename to server/user.jobengine.executors/obsolate/obsolate/AFakeStep.java diff --git a/server/user.jobengine.executors/src/obsolate/DeleteMaterialsStep.java b/server/user.jobengine.executors/obsolate/obsolate/DeleteMaterialsStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/DeleteMaterialsStep.java rename to server/user.jobengine.executors/obsolate/obsolate/DeleteMaterialsStep.java diff --git a/server/user.jobengine.executors/src/obsolate/DownloadStep.java b/server/user.jobengine.executors/obsolate/obsolate/DownloadStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/DownloadStep.java rename to server/user.jobengine.executors/obsolate/obsolate/DownloadStep.java diff --git a/server/user.jobengine.executors/src/obsolate/GetItemSourcesStep.java b/server/user.jobengine.executors/obsolate/obsolate/GetItemSourcesStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/GetItemSourcesStep.java rename to server/user.jobengine.executors/obsolate/obsolate/GetItemSourcesStep.java diff --git a/server/user.jobengine.executors/src/obsolate/ImportWriteDataToDBStep.java b/server/user.jobengine.executors/obsolate/obsolate/ImportWriteDataToDBStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/ImportWriteDataToDBStep.java rename to server/user.jobengine.executors/obsolate/obsolate/ImportWriteDataToDBStep.java diff --git a/server/user.jobengine.executors/src/obsolate/MediaDBWriterStep.java b/server/user.jobengine.executors/obsolate/obsolate/MediaDBWriterStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/MediaDBWriterStep.java rename to server/user.jobengine.executors/obsolate/obsolate/MediaDBWriterStep.java diff --git a/server/user.jobengine.executors/src/obsolate/MediaDownloadStep.java b/server/user.jobengine.executors/obsolate/obsolate/MediaDownloadStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/MediaDownloadStep.java rename to server/user.jobengine.executors/obsolate/obsolate/MediaDownloadStep.java diff --git a/server/user.jobengine.executors/src/obsolate/MediaUploadStep.java b/server/user.jobengine.executors/obsolate/obsolate/MediaUploadStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/MediaUploadStep.java rename to server/user.jobengine.executors/obsolate/obsolate/MediaUploadStep.java diff --git a/server/user.jobengine.executors/src/obsolate/NexioDataMinerStep.java b/server/user.jobengine.executors/obsolate/obsolate/NexioDataMinerStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/NexioDataMinerStep.java rename to server/user.jobengine.executors/obsolate/obsolate/NexioDataMinerStep.java diff --git a/server/user.jobengine.executors/src/obsolate/SetArchivedStep.java b/server/user.jobengine.executors/obsolate/obsolate/SetArchivedStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/SetArchivedStep.java rename to server/user.jobengine.executors/obsolate/obsolate/SetArchivedStep.java diff --git a/server/user.jobengine.executors/src/obsolate/TSMBackupStep_orig.java b/server/user.jobengine.executors/obsolate/obsolate/TSMBackupStep_orig.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/TSMBackupStep_orig.java rename to server/user.jobengine.executors/obsolate/obsolate/TSMBackupStep_orig.java diff --git a/server/user.jobengine.executors/src/obsolate/TemplateStep.java b/server/user.jobengine.executors/obsolate/obsolate/TemplateStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/TemplateStep.java rename to server/user.jobengine.executors/obsolate/obsolate/TemplateStep.java diff --git a/server/user.jobengine.executors/src/obsolate/TranscodeStep.java b/server/user.jobengine.executors/obsolate/obsolate/TranscodeStep.java similarity index 100% rename from server/user.jobengine.executors/src/obsolate/TranscodeStep.java rename to server/user.jobengine.executors/obsolate/obsolate/TranscodeStep.java diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java index 4f6512da..431205b5 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java @@ -3,6 +3,9 @@ package user.jobengine.server.steps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.ibm.nosql.json.api.DB; + +import user.commons.nosql.NoSQLUtils; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; @@ -14,7 +17,7 @@ public class FakeStep extends JobStep { @StepEntry public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { Object[] result = { itemID + 1 }; - + DB noSQLDB = NoSQLUtils.getNoSQLDB(); //logger.info(jobRuntime.getMarker(), "Starting with {} #{}", itemID, jobRuntime.getId()); // Message message = logger.getMessageFactory().newMessage("Starting with {} #{}", itemID, jobRuntime.getId()); // logger.error(jobRuntime.getMarker(), message, new Exception("TESZT")); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MultiParamStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MultiParamStep.java deleted file mode 100644 index 2d0f1850..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MultiParamStep.java +++ /dev/null @@ -1,15 +0,0 @@ -package user.jobengine.server.steps; - -import user.jobengine.server.IJobEngine; -import user.jobengine.server.IJobRuntime; - -public class MultiParamStep extends JobStep { - - @StepEntry - public Object[] execute(long p1, String p2, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - Object[] result = { p1 + 1, p2 + "x" }; - - return result; - } - -} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeFFAStranStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeFFAStranStep.java index 93c5f4cd..c09674f2 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeFFAStranStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/TranscodeFFAStranStep.java @@ -12,8 +12,8 @@ import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.message.Message; import org.apache.logging.log4j.message.ParameterizedMessage; -import user.commons.ffastrans.FFAStransAPI; -import user.commons.ffastrans.IFFAStransAPI; +import user.commons.transcoder.FFAStransAPI; +import user.commons.transcoder.IFFAStransAPI; import user.jobengine.db.FileType; import user.jobengine.db.IItemManager; import user.jobengine.db.Media; @@ -33,9 +33,9 @@ public class TranscodeFFAStranStep extends JobStep { private Marker marker; @StepEntry - public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName, String localHiresSourcePath, - String globalHiresSourcePath, String localLowresTargetPath, String webPath, String sourcePath, boolean deleteSource, IJobEngine jobEngine, - IJobRuntime jobRuntime) throws Exception { + public Object[] execute(ArchiveItem archiveItem, Media mediaCubeMedia, String transcoderAddress, String transcoderTemplateName, String localHiresTargetPath, + String globalHiresSourcePath, String localLowresTargetPath, String webPath, boolean deleteSource, IJobEngine jobEngine, IJobRuntime jobRuntime) + throws Exception { marker = jobRuntime.getMarker(); manager = jobEngine.getItemManager(); store = check(manager.getSystemStore(true), "lowres Store"); @@ -44,7 +44,7 @@ public class TranscodeFFAStranStep extends JobStep { check(archiveItem, "archiveItem"); check(transcoderAddress, "transcoderAddress"); check(transcoderTemplateName, "transcoderTemplateName"); - check(localHiresSourcePath, "localHiresSourcePath"); + check(localHiresTargetPath, "localHiresTargetPath"); check(globalHiresSourcePath, "globalHiresSourcePath"); check(localLowresTargetPath, "localLowresTargetPath"); check(webPath, "webPath"); @@ -53,7 +53,7 @@ public class TranscodeFFAStranStep extends JobStep { String sourceFileName = sourceMediaFile.getName(); String details = String.format("%s (%d bytes)", sourceFileName, sourceMediaFile.length()); try { - String sourceFile = sourceMediaFile.toString().replace(localHiresSourcePath, globalHiresSourcePath); + String sourceFile = sourceMediaFile.toString().replace(localHiresTargetPath, globalHiresSourcePath); IFFAStransAPI api = new FFAStransAPI(transcoderAddress, p -> { jobRuntime.incrementProgress(p); }); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/UploadRecordingToNexioStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/UploadRecordingToNexioStep.java index 47cc941d..20796b80 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/UploadRecordingToNexioStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/UploadRecordingToNexioStep.java @@ -52,6 +52,7 @@ public class UploadRecordingToNexioStep extends JobStep { @StepEntry public Object[] execute(ArchiveItem archiveItem, String targetFileName, int nexioPort, String nexioUserName, String nexioPassword, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + marker = jobRuntime.getMarker(); manager = jobEngine.getItemManager(); setAndCheck(archiveItem, targetFileName, nexioPort, nexioUserName, nexioPassword); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java deleted file mode 100644 index 0886c95a..00000000 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java +++ /dev/null @@ -1,19 +0,0 @@ -package user.jobengine.server.steps; - -import org.apache.commons.lang.StringUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import user.commons.MediaCubeMarker; - -public class UserNotificationStep extends JobStep { - private static final Logger logger = LogManager.getLogger(); - - @StepEntry - public Object[] execute(String to, String notification) { - if (StringUtils.isNotBlank(to) && StringUtils.isNotBlank(notification)) - logger.info(new MediaCubeMarker(to), notification); - return null; - } - -} diff --git a/server/user.jobengine.executors/test-deploy-steps-to-bsh-bkup.bat b/server/user.jobengine.executors/test-deploy-steps-to-bsh-bkup.bat index 8ad41633..023f9814 100644 --- a/server/user.jobengine.executors/test-deploy-steps-to-bsh-bkup.bat +++ b/server/user.jobengine.executors/test-deploy-steps-to-bsh-bkup.bat @@ -4,8 +4,8 @@ SET REMOTE_HOST=10.10.1.29 SET REMOTE_SERVER_HOSTKEY=ssh-ed25519 256 ea:ab:67:70:79:63:2f:6a:34:81:48:e2:b9:dd:ca:d4 SET REMOTE_SERVER_ADDRESS=scp://root:password@%REMOTE_HOST% -SET LOCAL_STEPS_LOCATION=bin/user/jobengine/server/steps -SET REMOTE_STEPS_LOCATION=/opt/test-mediacube/configuration/executors +SET LOCAL_STEPS_LOCATION=bin/user +SET REMOTE_STEPS_LOCATION=/opt/test-mediacube/configuration/executors/user SET LOCAL_TEMPLATES_LOCATION=jobtemplates SET REMOTE_TEMPLATES_LOCATION=/opt/test-mediacube/configuration/jobtemplates diff --git a/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF b/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF index 02b6b369..f5903f80 100644 --- a/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF +++ b/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF @@ -19,7 +19,6 @@ DynamicImport-Package: * 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, @@ -32,7 +31,8 @@ Export-Package: user.commons, 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, diff --git a/server/user.jobengine.osgi.commons/src/user/commons/ffastrans/FFAStransAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/FFAStransAPI.java similarity index 83% rename from server/user.jobengine.osgi.commons/src/user/commons/ffastrans/FFAStransAPI.java rename to server/user.jobengine.osgi.commons/src/user/commons/transcoder/FFAStransAPI.java index 7d47d4d8..e4688763 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/ffastrans/FFAStransAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/FFAStransAPI.java @@ -1,4 +1,4 @@ -package user.commons.ffastrans; +package user.commons.transcoder; import java.util.List; @@ -17,38 +17,34 @@ import user.commons.nosql.NoSQLUtils; public class FFAStransAPI implements IFFAStransAPI { - public interface IProgressChangedListener { - void onProgressChanged(int progress); - } - - public static void main(String[] args) throws Exception { - - for (int i = 0; i < 1; i++) { - IFFAStransAPI api = new FFAStransAPI("http://10.10.1.74:65445/api/json/v1/", p -> { - System.out.println("Progress: " + p); - }); - - String inputFile = "\\\\10.10.254.74\\temp_isilon\\NEXIO\\HIRADO\\180201\\0700_hirado_CLN_-_CS.lxf"; - api.submit("MAM_proxy_copy", inputFile); - try { - api.monitor(1000); - } catch (Exception e) { - System.out.println(e.getMessage()); - } - // try { - // - // String outputFile = "\\\\10.10.1.74\\MAM-Proxy_output\\20180201-0700_hirado_TEST-_CS.mp4"; - // Path outputFilePath = Paths.get(outputFile); - // File file = outputFilePath.toFile(); - // if (!file.exists()) - // Thread.sleep(2000); - // Files.delete(outputFilePath); - // } catch (Exception e) { - // System.out.println(e.getMessage()); - // } - - } - } + // public static void main(String[] args) throws Exception { + // + // for (int i = 0; i < 1; i++) { + // IFFAStransAPI api = new FFAStransAPI("http://10.10.1.74:65445/api/json/v1/", p -> { + // System.out.println("Progress: " + p); + // }); + // + // String inputFile = "\\\\10.10.254.74\\temp_isilon\\NEXIO\\HIRADO\\180201\\0700_hirado_CLN_-_CS.lxf"; + // api.submit("MAM_proxy_copy", inputFile); + // try { + // api.monitor(1000); + // } catch (Exception e) { + // System.out.println(e.getMessage()); + // } + // // try { + // // + // // String outputFile = "\\\\10.10.1.74\\MAM-Proxy_output\\20180201-0700_hirado_TEST-_CS.mp4"; + // // Path outputFilePath = Paths.get(outputFile); + // // File file = outputFilePath.toFile(); + // // if (!file.exists()) + // // Thread.sleep(2000); + // // Files.delete(outputFilePath); + // // } catch (Exception e) { + // // System.out.println(e.getMessage()); + // // } + // + // } + // } private ResteasyWebTarget webTarget; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/ffastrans/IFFAStransAPI.java b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/IFFAStransAPI.java similarity index 87% rename from server/user.jobengine.osgi.commons/src/user/commons/ffastrans/IFFAStransAPI.java rename to server/user.jobengine.osgi.commons/src/user/commons/transcoder/IFFAStransAPI.java index 6c59e5b6..a42b1de1 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/ffastrans/IFFAStransAPI.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/IFFAStransAPI.java @@ -1,4 +1,4 @@ -package user.commons.ffastrans; +package user.commons.transcoder; import java.util.List; diff --git a/server/user.jobengine.osgi.commons/src/user/commons/transcoder/IProgressChangedListener.java b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/IProgressChangedListener.java new file mode 100644 index 00000000..395435fb --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/commons/transcoder/IProgressChangedListener.java @@ -0,0 +1,5 @@ +package user.commons.transcoder; + +public interface IProgressChangedListener { + void onProgressChanged(int progress); +} \ No newline at end of file diff --git a/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java b/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java index 0b5670ea..5956ab40 100644 --- a/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java +++ b/server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java @@ -1,11 +1,14 @@ package user.common.octopus.test; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; import java.io.FileInputStream; import java.lang.invoke.MethodHandles; import java.net.URL; +import java.net.URLClassLoader; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.SQLException; @@ -70,23 +73,23 @@ public class OctopusDataMinerTest { sut.execute(); } - @Test - public void integrationTestClear() { - // fixture - sut = new OctopusDataMiner1(); - // Exercise - sut.clear(); - } - - @Test - public void integrationTestWithClear() { - // fixture - sut = new OctopusDataMiner1(); - sut.clear(); + // @Test + // public void integrationTestClear() { + // // fixture + // sut = new OctopusDataMiner1(); + // // Exercise + // sut.clear(); + // } - // Exercise - sut.run(); - } + // @Test + // public void integrationTestWithClear() { + // // fixture + // sut = new OctopusDataMiner1(); + // sut.clear(); + // + // // Exercise + // sut.run(); + // } @Test public void run() { @@ -285,8 +288,11 @@ public class OctopusDataMinerTest { @Test public void test6() throws Exception { - BasicDBObject x = new BasicDBObject(); - x.remove("y"); + URL[] urls = new URL[] { new File("c:/_workspace/USER/MediaCube/server/user.jobengine.executors/bin/").toURI().toURL() }; + + URLClassLoader loader = URLClassLoader.newInstance(urls); + Class stepClass = loader.loadClass("user.jobengine.server.steps.FakeStep2"); + assertNotNull(stepClass); } @Test diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLoader.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLoader.java deleted file mode 100644 index 74110e6e..00000000 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLoader.java +++ /dev/null @@ -1,85 +0,0 @@ -package user.jobengine.server; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DynamicClassLoader extends ClassLoader { - private static final Logger logger = LogManager.getLogger(); - - public DynamicClassLoader(ClassLoader parent) { - super(parent); - } - - @Override - public Class loadClass(String name) { - Class result = null; - boolean load = false; - try { - String[] tags = name.split("\\."); - String fileName = tags[tags.length - 1] + ".class"; - - String filePath = null; - String path = null; - File file = null; - File directory = null; - - path = System.getProperty(JobEngine.STEPSROOT); - if (path != null && path.length() > 0) { - directory = new File(path); - filePath = directory.getCanonicalPath() + File.separator + fileName; - file = new File(filePath); - if (file.exists()) - load = true; - } - - if (!load) { - path = System.getProperty(JobEngine.STEPSALTERNATEROOT); - if (path != null && path.length() > 0) { - directory = new File(path); - filePath = directory.getCanonicalPath() + File.separator + fileName; - file = new File(filePath); - if (file.exists()) - load = true; - } - } - - if (load) { - String url = "file:" + filePath; - logger.trace("Trying load from: " + url); - - URL classUrl = new URL(url); - URLConnection connection = classUrl.openConnection(); - InputStream input = connection.getInputStream(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - int data = input.read(); - while (data != -1) { - buffer.write(data); - data = input.read(); - } - input.close(); - byte[] classData = buffer.toByteArray(); - result = defineClass(name, classData, 0, classData.length); - if (result != null) - logger.trace("Dynamic load successfull: " + result.getName()); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - if (result == null) { - try { - result = super.loadClass(name); - if (result != null) - logger.trace("Standard load successfull: " + result.getName()); - } catch (Exception e1) { - throw new RuntimeException(e1); - } - } - return result; - } -} diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLocator.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLocator.java new file mode 100644 index 00000000..0467c609 --- /dev/null +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLocator.java @@ -0,0 +1,34 @@ +package user.jobengine.server; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class DynamicClassLocator { + private static final Logger logger = LogManager.getLogger(); + + private static void addPath(List result, String property) { + try { + String pathname = System.getProperty(property); + if (pathname != null && pathname.length() > 0) { + File rootDirectory = new File(pathname); + if (rootDirectory.exists()) + result.add(rootDirectory.toURI().toURL()); + } + } catch (Exception e) { + logger.catching(e); + } + } + + public static URL[] makeURLs() { + List result = new ArrayList<>(); + addPath(result, JobEngine.STEPSROOT); + addPath(result, JobEngine.STEPSALTERNATEROOT); + return result.toArray(new URL[result.size()]); + } + +} diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java index b99c1743..56e161c5 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java @@ -478,8 +478,6 @@ public class JobEngine implements IJobEngine { for (IJobStepExecutor executor : executorList) addStepExecutor(executor); } - loadUnregisteredExecutors(stepRoot); - loadUnregisteredExecutors(stepsAlternateRoot); } catch (Exception e) { logger.error("Error loading executors: " + e); } finally { @@ -566,37 +564,6 @@ public class JobEngine implements IJobEngine { 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 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 clazz = (Class) 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()); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java index 82b8fc22..c579b22a 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java @@ -1,5 +1,6 @@ package user.jobengine.server; +import java.net.URLClassLoader; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; @@ -131,10 +132,14 @@ public class JobStepExecutor implements IJobStepExecutor { 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) loader.loadClass(className); - if (stepClass == null) + //DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader()); + try { + URLClassLoader loader = URLClassLoader.newInstance(DynamicClassLocator.makeURLs(), getClass().getClassLoader()); + stepClass = (Class) loader.loadClass(className); + } catch (ClassNotFoundException e) { + logger.catching(e); throw new JobEngineException("System can't load JobStep implementation: " + className); + } // priorityQueue = new PriorityBlockingQueue(); //queue = new LinkedBlockingQueue(); queue = new PriorityBlockingQueue(); @@ -176,10 +181,11 @@ public class JobStepExecutor implements IJobStepExecutor { @SuppressWarnings("unchecked") @Override public Class getStepClass() { - if (stepClass != null) { - DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader()); - stepClass = (Class) loader.loadClass(stepClass.getCanonicalName()); - } + //TODO miért hozunk létre mindíg újat + // if (stepClass != null) { + // DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader()); + // stepClass = (Class) loader.loadClass(stepClass.getCanonicalName()); + // } return stepClass; }