From: Vásáry Dániel Date: Fri, 8 May 2020 11:09:04 +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=6e2a18f83fd6eaeaa6658d89078530d63d7ee508;p=mediacube.git git-tfs-id: [tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31818 --- diff --git a/server/-configuration/mediacube-dev-user.properties b/server/-configuration/mediacube-dev-user.properties index bb284ab3..2c0621ca 100644 --- a/server/-configuration/mediacube-dev-user.properties +++ b/server/-configuration/mediacube-dev-user.properties @@ -1,23 +1,17 @@ -#A user.dir mindig a test projekt mappaja, a relativ hivatkozasok ehhez kepest ertendok. -#JobEngine -jobengine.loglevel=INFO -jobengine.jobsteps.root=../user.jobengine.osgi.server/resources/executors -jobengine.jobtemplates.root=../user.jobengine.osgi.server/resources/templates -jobengine.jobsteps.alternate.root=../user.jobengine.executors/bin/user/jobengine/server/steps +jobengine.jobsteps.root=../user.jobengine.executors/bin +jobengine.jobsteps.config=../user.jobengine.executors/config/config-worker.xml +jobengine.jobtemplates.root=../user.jobengine.executors/jobtemplates + +jetty.home=../-configuration/jetty +jetty.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 + +log4j.configurationFile=../-configuration/log4j2.xml + jobengine.db.url=jdbc:db2://10.228.198.1:50000/mediaarc:retrieveMessagesFromServerOnGetMessage=true; jobengine.db.user=db2admin jobengine.db.password=password -jobengine.octopus.api.address=http://10.10.1.11/api/v1 -jobengine.octopus.api.user=mam -jobengine.octopus.api.password=napocska jobengine.nosql.db.url=jdbc:db2://10.228.198.1:50000/mccache:retrieveMessagesFromServerOnGetMessage=true; jobengine.nosql.db.user=db2admin jobengine.nosql.db.password=password -jobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB; -jobengine.nexio.db.user=sa -jobengine.nexio.db.password=resolve -#System -jetty.home=../user.jobengine.osgi.rest/ -jetty.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 -log4j.configuration=../-configuration/log4j.properties -log4j.configurationFile=../-configuration/log4j2.xml \ No newline at end of file + +jobengine.master.server=http://localhost:8888 \ No newline at end of file diff --git a/server/-configuration/run-mediacube-server-hirtv.launch b/server/-configuration/run-mediacube-server-hirtv.launch index 2d0bc066..18fa4600 100644 --- a/server/-configuration/run-mediacube-server-hirtv.launch +++ b/server/-configuration/run-mediacube-server-hirtv.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/run-mediacube-server-user.launch b/server/-configuration/run-mediacube-server-user.launch index 263f1dc8..c15aaebf 100644 --- a/server/-configuration/run-mediacube-server-user.launch +++ b/server/-configuration/run-mediacube-server-user.launch @@ -19,7 +19,7 @@ - + diff --git a/server/-configuration/test-debug-mediacube-main-7777.launch b/server/-configuration/test-debug-mediacube-main-7777.launch deleted file mode 100644 index df478a21..00000000 --- a/server/-configuration/test-debug-mediacube-main-7777.launch +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java index b18139a3..dd444539 100644 --- a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java @@ -61,11 +61,11 @@ public class Support { System.setProperty("jobengine.octopus.stories.name", "stories181217"); System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders181217"); - System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); - System.setProperty("jobengine.nosql.db.user", "db2admin"); - System.setProperty("jobengine.nosql.db.password", "password"); + // System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + // System.setProperty("jobengine.nosql.db.user", "db2admin"); + // System.setProperty("jobengine.nosql.db.password", "password"); System.setProperty("nexio.host", "10.10.1.55"); - System.setProperty(ItemManager.DBURL, "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); System.setProperty(ItemManager.DBUSERNAME, "db2admin"); System.setProperty(ItemManager.DBPASSWORD, "password"); System.setProperty(LogUtils.LOGLEVEL, "INFO"); @@ -260,14 +260,16 @@ public class Support { @Test public void test2() throws Exception { - Item i = manager.createItem("Generic", "Trigger teszt", "itemdesc1", "itemhouseid1"); - Media m = manager.createMedia("Generic", "mediatitle1", "mediadesc1", "mediahouseid1"); + Item i = manager.createItem("Generic", "Trigger teszt2", "itemdesc2", "itemhouseid2"); + Media m = manager.createMedia("Generic", "mediatitle2", "mediadesc2", "mediahouseid2"); i.appendMedia(m); - MediaFile mf = manager.createMediaFile("filename1", manager.getFileType("High-res"), manager.getSystemStore(false), m); + MediaFile mf = manager.createMediaFile("filename2", manager.getFileType("High-res"), manager.getSystemStore(false), m); m.appendMediaFile(mf); manager.mergeItemStructure(i); System.out.println("itemid=" + i.getId() + " AND mediaid=" + m.getId() + " AND mediafileid=" + mf.getId()); + + manager.remove(i); } @Test diff --git a/server/user.jobengine.executors/config/config-worker.xml b/server/user.jobengine.executors/config/config-worker.xml new file mode 100644 index 00000000..5764b63e --- /dev/null +++ b/server/user.jobengine.executors/config/config-worker.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java index 4908da30..4ca332cf 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportMORPHEUSMissingMaterialsStep.java @@ -118,7 +118,10 @@ public class ImportMORPHEUSMissingMaterialsStep extends JobStep { // dbObject.put(MorpheusStrings.REASON, reason); String fileName = materialID + MXF_EXT; - if (Files.exists(Paths.get(targetPath, fileName))) { + + Path targetFilePath = Paths.get(targetPath, fileName); + boolean exists = Files.exists(targetFilePath); + if (exists && targetFilePath.toFile().length() > 0) { logger.warn(jobRuntime.getMarker(), "Az '{}' anyag már be van töltve.", materialID); dbObject.put(MorpheusStrings.STATUS, MorpheusStrings.STATUS_SKIPPED); } else { diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java index 031f81f9..ad6b5136 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MediaToolStep.java @@ -28,7 +28,7 @@ public class MediaToolStep extends JobStep { long frames = mi.getFrames(); if (frames > 0) { mediaCubeMedia.setLength(frames); - mediaCubeMedia.modify(); + getManager().modify(mediaCubeMedia); } } catch (Exception e) { logger.catching(e); diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java index 16492856..94190c63 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/MetadataTransformStep.java @@ -96,7 +96,15 @@ public class MetadataTransformStep extends JobStep { jobRuntime.incrementProgress(50); String mediaType = getCreateType(archiveItem); mediaCubeMedia = createMedia(archiveItem, mediaCubeItem, mediaType); - itemManager.mergeItemStructure(mediaCubeItem); + //ha itemid 0 akkor merge, egyebkent media insert + + if (mediaCubeItem.getId() == 0) + itemManager.mergeItemStructure(mediaCubeItem); + else { + mediaCubeMedia.setItemId(mediaCubeItem.getId()); + mediaCubeMedia.add(); + } + } catch (Exception e) { logger.catching(e); String fileName = new File(archiveItem.getMediaFile()).getName(); diff --git a/server/user.jobengine.osgi.server/deploy.launch b/server/user.jobengine.osgi.server/build-server-module.launch similarity index 100% rename from server/user.jobengine.osgi.server/deploy.launch rename to server/user.jobengine.osgi.server/build-server-module.launch 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 index 0467c609..370a2586 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLocator.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/DynamicClassLocator.java @@ -1,7 +1,8 @@ package user.jobengine.server; -import java.io.File; import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; @@ -15,9 +16,10 @@ public class DynamicClassLocator { 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()); + + Path path = Paths.get(pathname); + if (path.toFile().exists()) + result.add(path.toUri().toURL()); } } catch (Exception e) { logger.catching(e); @@ -27,7 +29,6 @@ public class DynamicClassLocator { 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/ExecutorConfigParser.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/ExecutorConfigParser.java index 921c79d6..cdc82b6e 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/ExecutorConfigParser.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/ExecutorConfigParser.java @@ -19,13 +19,17 @@ public class ExecutorConfigParser { this.stream = stream; } - @SuppressWarnings("unchecked") public List parse() throws Exception { + return parse(this.getClass().getClassLoader()); + } + + @SuppressWarnings("unchecked") + public List parse(ClassLoader classLoader) throws Exception { List result = null; try { Digester digester = new Digester(); - digester.setClassLoader(this.getClass().getClassLoader()); + digester.setClassLoader(classLoader); digester.addObjectCreate(EXECUTORS, ArrayList.class); digester.addObjectCreate(EXECUTOR, JobStepExecutor.class); digester.addCallMethod(EXECUTOR, "create", 3, new Class[] { String.class, int.class, boolean.class }); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java index ca139059..752bba97 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java @@ -53,6 +53,8 @@ public interface IJobEngine { IJobRuntime getJobById(long jobId); + IJobRuntime getJobForRemote(String className) throws Exception; + Map getJobs(); IProgram getProgram(String name); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobStepExecutor.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobStepExecutor.java index 2ebe3314..ac4a6c58 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobStepExecutor.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobStepExecutor.java @@ -29,6 +29,8 @@ public interface IJobStepExecutor { */ Class getStepClass(); + boolean isRemoteEnabled(); + void revoke(IJobRuntime jobRuntime); /** @@ -41,6 +43,8 @@ public interface IJobStepExecutor { */ void startup(IJobEngine jobEngine) throws Exception; + IJobRuntime steelJob() throws InterruptedException; + /** * Folyamat elhelyez�se a v�grehajt� v�rakoz�si sor�ba. * 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 e4c26b1c..9eb30de7 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 @@ -1,9 +1,11 @@ + package user.jobengine.server; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Paths; import java.sql.Timestamp; import java.time.LocalDate; import java.util.ArrayList; @@ -146,7 +148,7 @@ public class JobEngine implements IJobEngine { private static final Logger logger = LogManager.getLogger(); public static final String TEMPLATEROOT = "jobengine.jobtemplates.root"; public static final String STEPSROOT = "jobengine.jobsteps.root"; - public static final String STEPSALTERNATEROOT = "jobengine.jobsteps.alternate.root"; + public static final String STEPSCONFIG = "jobengine.jobsteps.config"; private static final String SCHEDULEDEXECUTION_DISABLED = "jobengine.scheduledexecution.disabled"; private static final String EXECUTORCONFIGFILE = "config.xml"; @@ -184,7 +186,7 @@ public class JobEngine implements IJobEngine { private List jobChangedListenerList = new CopyOnWriteArrayList<>(); private Map remoteWorkers; - private String masterServerAddress = System.getProperty("jobengine.master.server", "false"); + private String masterServerAddress = System.getProperty("jobengine.master.server", ""); /** * A MAM motor példányosítása. Ennek során létrejönnek a várakozási sorok, az ütemező szál, az üzenet kezelő szál. @@ -421,6 +423,17 @@ public class JobEngine implements IJobEngine { return submittedJobs.get(jobId); } + @Override + public IJobRuntime getJobForRemote(String className) throws Exception { + if (!executors.containsKey(className)) + throw new Exception("Unregistered executor request: " + className); + + IJobStepExecutor executor = executors.get(className); + if (!executor.isRemoteEnabled()) + throw new Exception("Job is not registered for remote workers: " + className); + return executor.steelJob(); + } + @Override public Map getJobs() { return submittedJobs; @@ -448,13 +461,12 @@ public class JobEngine implements IJobEngine { Response response = null; try { response = target.request().get(); - if (response.getEntity() != null) { - - } + if (response.getEntity() instanceof IJobRuntime) + result = (IJobRuntime) response.getEntity(); } catch (Exception e) { logger.error(e.getMessage()); } finally { - logger.debug("Keep alive response: {}", response.getStatus()); + logger.debug("Response status: {}", response.getStatus()); if (response != null) response.close(); } @@ -519,7 +531,7 @@ public class JobEngine implements IJobEngine { @Override public boolean isWorker() { - return Boolean.parseBoolean(masterServerAddress); + return masterServerAddress.length() > 0; } private void jobCleanup(IJobRuntime jobRuntime) { @@ -538,14 +550,13 @@ public class JobEngine implements IJobEngine { executors.clear(); InputStream stream = null; try { - // String configFile = - // DirectoryUtils.checkEndSlash(System.getProperty(STEPROOT)) + - // EXECUTORCONFIGFILE; String stepRoot = DirectoryUtils.normalize(System.getProperty(STEPSROOT), File.separator); - String stepsAlternateRoot = DirectoryUtils.normalize(System.getProperty(STEPSALTERNATEROOT), File.separator); - String configFile = DirectoryUtils.combine(stepRoot, EXECUTORCONFIGFILE, true, true); - logger.info("Loading executors based on configuration: " + configFile); - stream = new FileInputStream(configFile); + String stepsConfig = DirectoryUtils.normalize(System.getProperty(STEPSCONFIG), File.separator); + if (stepsConfig == null || !Paths.get(stepsConfig).toFile().exists()) + stepsConfig = DirectoryUtils.combine(stepRoot, EXECUTORCONFIGFILE, true, true); + + logger.info("Loading executors based on configuration: " + stepsConfig); + stream = new FileInputStream(stepsConfig); ExecutorConfigParser parser = new ExecutorConfigParser(stream); List executorList = parser.parse(); @@ -605,10 +616,15 @@ public class JobEngine implements IJobEngine { store.setProtocol(RemoteStoreProtocol.LOCAL); store.setUri(DirectoryUtils.normalize(System.getProperty(TEMPLATEROOT), File.separator)); store.setFileFilter("*.xml"); + + // String userDirectory = System.getProperty("user.dir"); + // + // Path path = Paths.get(userDirectory + "\\" + System.getProperty(TEMPLATEROOT, "")); + // boolean exists = path.toFile().exists(); String templateRoot = store.toString(true); logger.info("Template root is: " + templateRoot); - File f = new File(templateRoot); - System.out.println(f.getAbsolutePath()); + // File f = new File(templateRoot); + // System.out.println(f.getAbsolutePath()); List files = store.getRemoteFiles(); for (RemoteFile file : files) { diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStatusChangedEvent.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStatusChangedEvent.java index 3681336b..6cfffb72 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStatusChangedEvent.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobStatusChangedEvent.java @@ -4,14 +4,13 @@ import java.util.EventObject; import user.commons.JobStatus; - /** - * Folyamat státusz változás eseményfigyelõ implementáció. + * Folyamat statusz valtozas esemenyfigyelo implementacio. */ public class JobStatusChangedEvent extends EventObject { - private final JobStatus status; private static final long serialVersionUID = 6467056911182084042L; + private final JobStatus status; public JobStatusChangedEvent(Object source, JobStatus status) { super(source); 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 14531c7e..b992c3d3 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 @@ -19,10 +19,10 @@ import user.commons.JobStatus; import user.jobengine.server.messages.JobStepCompletedMessage; import user.jobengine.server.messages.JobStepSkippedMessage; import user.jobengine.server.steps.IJobStep; -import user.jobengine.zk.util.SessionUtil; public class JobStepExecutor implements IJobStepExecutor { private class Worker extends Thread { + private static final int WAIT_FOR_REMOTE = 30000; private volatile boolean shutdown = false; @Override @@ -37,10 +37,21 @@ public class JobStepExecutor implements IJobStepExecutor { while (true) { try { if (jobEngine.isWorker()) { - jobRuntime = jobEngine.getRemoteJob(className); - jobRuntime.setDescription(PROCESSING_REMOTLY); + //a worker is csak azokat akarja vegrehajtani + if (isRemote) { + Object o = jobEngine.getRemoteJob(className); + + if (o == null) { + Thread.sleep(1000); + continue; + } + jobRuntime = (IJobRuntime) o; + + jobRuntime.setDescription(PROCESSING_REMOTLY); + } } else { - jobRuntime = queue.poll(SessionUtil.getMediaCubeConfig().getJobQueuePollInterval(), TimeUnit.MILLISECONDS); + //SessionUtil.getMediaCubeConfig().getJobQueuePollInterval() + jobRuntime = queue.poll(10, TimeUnit.MILLISECONDS); if (jobRuntime == null && shutdown) { logger.trace("Shutting down"); break; @@ -55,7 +66,7 @@ public class JobStepExecutor implements IJobStepExecutor { long submitted = jobRuntime.getSubmitted().getTime(); long current = System.currentTimeMillis(); - boolean timeout = current - submitted > 3000; + boolean timeout = current - submitted > WAIT_FOR_REMOTE; if (isRemote) { if (timeout) { logger.info("Remote JobStep timed out, processing locally."); @@ -71,9 +82,6 @@ public class JobStepExecutor implements IJobStepExecutor { jobRuntime.setDescription(PROCESSING_LOCALLY); } - if (jobRuntime == null) - continue; - //processing locally Object[] inputs = jobEngine.getInputsFromStack(jobRuntime); Object[] outputs = null; @@ -235,6 +243,11 @@ public class JobStepExecutor implements IJobStepExecutor { return stepClass; } + @Override + public boolean isRemoteEnabled() { + return isRemote; + } + @Override public void revoke(IJobRuntime jobRuntime) { //synchronized(queue){ @@ -266,6 +279,11 @@ public class JobStepExecutor implements IJobStepExecutor { } } + @Override + public IJobRuntime steelJob() throws InterruptedException { + return queue.poll(5, TimeUnit.MILLISECONDS); + } + @Override public void submit(IJobRuntime jobRuntime) { queue.put(jobRuntime); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java index 2dd76466..fb87296c 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java @@ -399,7 +399,8 @@ public class SearchModel extends AsyncBaseModel { if (sourceStoreUri != null && sourceStoreUri.isStream()) { - String base = store.isSystem() ? sourceStoreUri.toString(false) : sourceStoreUri.toString(true); + String noProtocolUri = sourceStoreUri.toString(true); + String base = noProtocolUri.startsWith("/") ? noProtocolUri : sourceStoreUri.toString(false); if (!base.endsWith("/")) base += "/"; String relative = mf.getRelativePath().replace("\\", "/"); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/LDAPUserHandler.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/LDAPUserHandler.java index 93c0b278..2a03c099 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/LDAPUserHandler.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/zk/util/LDAPUserHandler.java @@ -3,7 +3,6 @@ package user.jobengine.zk.util; import java.lang.invoke.MethodHandles; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.Hashtable; import java.util.LinkedHashSet; import java.util.List; @@ -43,7 +42,6 @@ public class LDAPUserHandler { private static final String AD_ADMIN_MAP = "ad_admin_map"; private static final String AD_SUBMITTER_MAP = "ad_submitter_map"; private static final String AD_EDITOR_MAP = "ad_editor_map"; - private static MediaCubeAuthentication mediaCubeAuthentication; public static void main(String[] args) throws Exception { // Properties cfg = new Properties(); @@ -58,13 +56,15 @@ public class LDAPUserHandler { // LDAPHandler h = new LDAPHandler("echotest", "aA123456+", cfg); // LDAPHandler h = new LDAPHandler("stibor.adm", "Qwer1234", cfg); - LDAPUserHandler h = new LDAPUserHandler("nagy.ilona", "k0rianDER", mediaCubeAuthentication); + LDAPUserHandler h = new LDAPUserHandler("nagy.ilona", "k0rianDER", null); UserPrincipal user = h.getUserPrincipal(); System.out.println(user); // List allGroups = h.getAllGroups(); } + private MediaCubeAuthentication mediaCubeAuthentication; + // private Properties cfg = null; private String account; private String password; @@ -83,7 +83,12 @@ public class LDAPUserHandler { // String groupMap = cfg.getProperty(property); if (property == null) return false; - List remains = ListUtils.intersect(Arrays.asList(property.toString().split(",")), memberOf); + + // maradvany? + //List remains = ListUtils.intersect(Arrays.asList(property.toString().split(",")), memberOf); + + List remains = ListUtils.intersect(property, memberOf); + return (remains.size() > 0); } diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/JobengineIT.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/JobengineIT.java index faa3ed0d..b3b59398 100644 --- a/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/JobengineIT.java +++ b/server/user.jobengine.osgi.server/test/user/jobengine/server/IT/JobengineIT.java @@ -1,5 +1,7 @@ package user.jobengine.server.IT; +import static org.junit.Assert.assertEquals; + import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -15,6 +17,7 @@ import org.junit.Test; import user.commons.JobStatus; import user.jobengine.db.IItemManager; import user.jobengine.db.ItemManager; +import user.jobengine.db.ItemManagerData.SignalType; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; import user.jobengine.server.IJobStatusChangedListener; @@ -81,19 +84,21 @@ public class JobengineIT { jobEngine.startup(); jobEngine.bindItemManagerService(manager); Map parameters = new HashMap<>(); - //parameters.put("itemID", 100); - IJobRuntime runtime = jobEngine.submit("fake.xml", "Fake", parameters); - runtime.addEventListener(new IJobStatusChangedListener() { - @Override - public void statusChanged(JobStatusChangedEvent event) { - if (JobStatus.FINISHED.equals(event.getStatus())) - sync.suspend(); - + parameters.put("itemID", 100); + IJobRuntime runtime = jobEngine.submit(null, e -> { + if (JobStatus.FINISHED.equals(e.getStatus()) || JobStatus.SUSPENDED.equals(e.getStatus())) + sync.suspend(); + }, "fake.xml", "Fake", parameters); + jobEngine.addJobChangedEventListener(e -> { + if (e.getSignalType().equals(SignalType.UPDATE)) { + System.out.println(e.getJob().getProgress()); } }); sync.waitSuspend(); sync.resume(); jobEngine.shutdown(); + + assertEquals(JobStatus.FINISHED, runtime.getStatus()); } /*** @@ -163,6 +168,37 @@ public class JobengineIT { jobEngine.shutdown(); } + /*** + * Tavoli teszt folyamat kiszolgalas + * + * @throws Exception + */ + @Test + public void remote() throws Exception { + final ThreadSynchronizer sync = new ThreadSynchronizer(); + final IJobEngine jobEngine = new JobEngine(); + jobEngine.startup(); + jobEngine.bindItemManagerService(manager); + /* + Map parameters = new HashMap<>(); + parameters.put("itemID", 100); + IJobRuntime runtime = jobEngine.submit(null, e -> { + if (JobStatus.FINISHED.equals(e.getStatus()) || JobStatus.SUSPENDED.equals(e.getStatus())) + sync.suspend(); + }, "fake.xml", "Fake", parameters); + jobEngine.addJobChangedEventListener(e -> { + if (e.getSignalType().equals(SignalType.UPDATE)) { + System.out.println(e.getJob().getProgress()); + } + }); + */ + sync.waitSuspend(); + sync.resume(); + jobEngine.shutdown(); + + //assertEquals(JobStatus.FINISHED, runtime.getStatus()); + } + /*** * NEXIO adatok szinkronizalo folyamat futtatasa * diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusterService.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusterService.java index bf252521..3ba06f8e 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusterService.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusterService.java @@ -3,8 +3,10 @@ package user.jobengine.osgi.mediacube; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.logging.log4j.LogManager; @@ -23,6 +25,23 @@ public class ClusterService { logger.debug("Created"); } + @GET + @Path("/getjob") + @Produces({ MediaType.APPLICATION_JSON }) + public Response getJob(@QueryParam("className") String className) { + Response result = null; + try { + //IJobRuntime job = jobEngine.getJobForRemote(className); + ClusteredJob j = new ClusteredJob(); + j.setId(100); + j.setName("Jobname"); + result = Response.ok().entity(j).build(); + } catch (Exception e) { + result = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e.getMessage()).build(); + } + return result; + } + @GET @Path("/keepalive") public Response keepAlive(@Context HttpServletRequest request, @QueryParam("responseRoot") String responseRoot) { diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusteredJob.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusteredJob.java new file mode 100644 index 00000000..85f20671 --- /dev/null +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/mediacube/ClusteredJob.java @@ -0,0 +1,23 @@ +package user.jobengine.osgi.mediacube; + +public class ClusteredJob { + private long id; + private String name; + + public long getId() { + return id; + } + + public String getName() { + return name; + } + + public void setId(long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + +}