dmitrij_huellma
Occasional Observer

Zugriff auf ACL DB im Isolated Mode

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
Windmüller
Crownpeak employee

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.

View solution in original post

0 Kudos
5 Replies
dmitrij_huellma
Occasional Observer

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

0 Kudos
Windmüller
Crownpeak employee

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.

0 Kudos

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

0 Kudos

Mir ist zumindest keine API für diesen Zweck bekannt.

0 Kudos

Danke dir, der GenerationAgent hilft mir erst mal weiter.

Beste Grüße

Dmitrij

0 Kudos