Search the FirstSpirit Knowledge Base
Hallo,
wir stellen gerade FirstSpirit auf den Isolated Modus um und die FS-Version 2023-01. Im Generierungsauftrag haben wir einen Task, der bisher im Legacy Mode auf die ACL DB zugegriffen hat und ohne Probleme funktionierte.
Codeausschnitt:
List<File> generated = new ArrayList<File>();
// get acl database
accessControllDb = ((LegacyAccessControlDbProvider) super.context).getAccessControlDb(false);
if (accessControllDb != null) {
if (!accessControllDb.isOpen()) {
accessControllDb.open();
}
// get all generated files
generated.addAll(accessControllDb.getFiles(null, this.deploymentStartTime.getTime()));
}
Das funktioniert im Isolated Mode nicht mehr, kennt jemand eine Workaround oder eine andere Lösung wie man an diese Daten, hauptsächlich geht es mir hier um die generierten Files (accessControllDb.getFiles(...)), herankommen kann?
Alternativ auch gerne andere Objekte die Infos (Referenznamen oder ID wären schon super) zu den generierten Elementen beinhalten.
Über die Klasse DeploymentUtils kommt man zwar an die Pfade der generierten Elemente, aber das genügt leider nicht.
Ich bin für jede Hilfe dankbar!
Beste Grüße
Dmitrij
Der LegacyAccessControlDbProvider ist nicht Teil der API und seit der Umstellung auf den Isolated-Modus auch nicht mehr im Runtime verfügbar. Ein Zugriff auf die generierten Dateien ist über die API-Methode GenerationAgent.html#getOutput() möglich.
Anbei noch der Stacktrace und der auftretende Fehler, wenn ich den bestehenden Code so laufen lasse:
ERROR 01.03.2023 15:15:51.978{dNR=} (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: com.commerzbank.firstspirit.basis2.deployment.scheduler.DeploymentException: java.lang.ClassCastException: class com.commerzbank.firstspirit.util.ScheduleContextAdapter cannot be cast to class de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider (com.commerzbank.firstspirit.util.ScheduleContextAdapter is in unnamed module of loader de.espirit.firstspirit.server.module.GlobalResourceLoader @78113191; de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider is in unnamed module of loader de.espirit.common.FactoryRegistry$LibrariesLoader @1a4013)
de.espirit.firstspirit.access.script.ExecutionException: com.commerzbank.firstspirit.basis2.deployment.scheduler.DeploymentException: java.lang.ClassCastException: class com.commerzbank.firstspirit.util.ScheduleContextAdapter cannot be cast to class de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider (com.commerzbank.firstspirit.util.ScheduleContextAdapter is in unnamed module of loader de.espirit.firstspirit.server.module.GlobalResourceLoader @78113191; de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider is in unnamed module of loader de.espirit.common.FactoryRegistry$LibrariesLoader @1a4013)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.AbstractDeploymentBase.execute(AbstractDeploymentBase.java:181)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.AbstractDeploymentBase.execute(AbstractDeploymentBase.java:50)
at com.commerzbank.firstspirit.util.AbstractTypedExecutable.execute(AbstractTypedExecutable.java:61)
at de.espirit.firstspirit.server.script.ClassCallerEngine$ContextLoaderExecutable.execute(ClassCallerEngine.java:112)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.lambda$execute$1(PermissionsScriptEngine.java:85)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:90)
at de.espirit.firstspirit.server.script.PermissionsScriptEngine$PermissionsExecutable.execute(PermissionsScriptEngine.java:85)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:111)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:162)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2764)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2747)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2673)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:629)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:493)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:60)
Caused by: com.commerzbank.firstspirit.basis2.deployment.scheduler.DeploymentException: java.lang.ClassCastException: class com.commerzbank.firstspirit.util.ScheduleContextAdapter cannot be cast to class de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider (com.commerzbank.firstspirit.util.ScheduleContextAdapter is in unnamed module of loader de.espirit.firstspirit.server.module.GlobalResourceLoader @78113191; de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider is in unnamed module of loader de.espirit.common.FactoryRegistry$LibrariesLoader @1a4013)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.PostGeneration.setDeploymentQueueFiles(PostGeneration.java:237)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.PostGeneration.execute(PostGeneration.java:152)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.AbstractDeploymentBase.execute(AbstractDeploymentBase.java:179)
... 21 more
Caused by: java.lang.ClassCastException: class com.commerzbank.firstspirit.util.ScheduleContextAdapter cannot be cast to class de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider (com.commerzbank.firstspirit.util.ScheduleContextAdapter is in unnamed module of loader de.espirit.firstspirit.server.module.GlobalResourceLoader @78113191; de.espirit.firstspirit.server.scheduler.LegacyAccessControlDbProvider is in unnamed module of loader de.espirit.common.FactoryRegistry$LibrariesLoader @1a4013)
at com.commerzbank.firstspirit.basis2.deployment.scheduler.PostGeneration.setDeploymentQueueFiles(PostGeneration.java:168)
... 23 more
Der LegacyAccessControlDbProvider ist nicht Teil der API und seit der Umstellung auf den Isolated-Modus auch nicht mehr im Runtime verfügbar. Ein Zugriff auf die generierten Dateien ist über die API-Methode GenerationAgent.html#getOutput() möglich.
Hallo,
vielen Dank für die Antwort. Das heißt, es gibt im Isolated Mode überhaupt keine Möglichkeit mehr die ACL DB abzufragen?
Danke und beste Grüße!
Dmitrij
Mir ist zumindest keine API für diesen Zweck bekannt.
Danke dir, der GenerationAgent hilft mir erst mal weiter.
Beste Grüße
Dmitrij