Ich habe da ein Problem in einem Server Script.
Ich möchte gerne über diesen Weg ein bestimmtes Media-Verzeichnis mit allen darin liegenden Media-Elementen freigeben.
Angefangen habe ich mit dem unten aufgeführten Script "media_freigabe", in dem ich versuche Verzeichnisse und Medien im MediaStore freizugeben.
Leider klappt das nicht, es kommt die unten aufgeführte Fehlermeldung.
Für media_freigabe ist unter Eigenschaften eine eigene Connection konfiguriert worden mit entprechenden Rechten.
An der Connection oder den Rechten kann es also eigentlich nicht liegen, da die Aktion ausgeführt wird, wenn ich dort den Sitestore anspreche.
Hierbei lassen sich die Elemente locken.
Auch eine Abfrage für ein bestimmtes Verzeichnis im MediaStore (z.B. Refenrenzname = "presse"), p = child.getReferenceName(); und dann if ("presse".equals(p)), hat nicht geklappt.
Vielen Dank und Grüße
Petra Hewera-Harz
Script zur Freigabe im MediaStore für Verzeichnisse und Medien "media_freigabe":
//!Beanshell
import java.util.*;
import java.lang.Long;
import de.espirit.firstspirit.access.ReferenceEntry;
import de.espirit.firstspirit.storage.*;
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.project.*;
import de.espirit.firstspirit.agency.StoreAgent;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.store.Store.Type;
import de.espirit.firstspirit.access.store.mediastore.*;
connection.getProjectById(context.getProject().getId()).getUserService();
storeAgent = context.requestSpecialist(StoreAgent.TYPE);
mediaStore = (MediaStoreRoot)storeAgent.getStore(Type.MEDIASTORE);
List<StoreElement> children = mediaStore.getChildren(StoreElement.class, true).toList();
for (StoreElement child : children) {
ordner = child.getParent();
child.setLock(true);
child.release(false);
ordner.setLock(true);
ordner.release(false);
}
Fehlermeldung zum Script "media_freigabe":
INFO 25.11.2013 13:04:06.870 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'media_freigabe' - schedule entry 'Publizierung barmenia.de - manuell' (id=32116)
INFO 25.11.2013 13:04:06.872 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=8529769402629195111, user=Hewera-Harz, userID=2854, type=DUMMY) created
INFO 25.11.2013 13:04:06.872 (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): skript connection created: 8529769402629195111, user=Hewera-Harz
INFO 25.11.2013 13:04:06.873 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): new session (ID=4146234305482954207, user=Hewera-Harz, userID=2854, type=DUMMY) created
INFO 25.11.2013 13:04:06.894 (de.espirit.firstspirit.store.access.AccessStoreBuilder): MEDIASTORE loaded in 2ms
INFO 25.11.2013 13:04:23.851 (de.espirit.firstspirit.store.access.AccessStoreBuilder): MEDIASTORE loaded in 36ms
ERROR 25.11.2013 13:04:23.893 (de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor): error during script execution : de.espirit.firstspirit.access.script.ExecutionException: Method Invocation child.setLock : at Line: 31 : in file: inline evaluation of: ``__execute() { //!Beanshell import java.util.*; import java.lang.Long; import d . . . '' : child .setLock ( true )
Target exception: java.lang.UnsupportedOperationException: de.espirit.firstspirit.store.access.LanguageInfoImpl.setLock()
at line 31
de.espirit.firstspirit.access.script.ExecutionException: Method Invocation child.setLock : at Line: 31 : in file: inline evaluation of: ``__execute() { //!Beanshell import java.util.*; import java.lang.Long; import d . . . '' : child .setLock ( true )
Target exception: java.lang.UnsupportedOperationException: de.espirit.firstspirit.store.access.LanguageInfoImpl.setLock()
at line 31
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:108)
at de.espirit.firstspirit.common.ScriptUtil.execute(ScriptUtil.java:97)
at de.espirit.firstspirit.server.scheduler.ScriptTaskExecutor.run(ScriptTaskExecutor.java:134)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2174)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2157)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2085)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:37)
Caused by: java.lang.UnsupportedOperationException: de.espirit.firstspirit.store.access.LanguageInfoImpl.setLock()
at de.espirit.firstspirit.store.access.AbstractStoreElement.setLock(AbstractStoreElement.java:1117)
at de.espirit.firstspirit.store.access.AbstractStoreElement.setLock(AbstractStoreElement.java:1109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bsh.Reflect.invokeMethod(Reflect.java:146)
at bsh.Reflect.invokeObjectMethod(Reflect.java:79)
at bsh.Name.invokeMethod(Name.java:858)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BSHBlock.eval(BSHBlock.java:46)
at bsh.BSHEnhancedForStatement.eval(BSHEnhancedForStatement.java:80)
at bsh.BSHBlock.evalBlock(BSHBlock.java:130)
at bsh.BSHBlock.eval(BSHBlock.java:80)
at bsh.BshMethod.invokeImpl(BshMethod.java:362)
at bsh.BshMethod.invoke(BshMethod.java:258)
at bsh.BshMethod.invoke(BshMethod.java:161)
at bsh.PreparsedScript.invoke(PreparsedScript.java:65)
at de.espirit.firstspirit.server.script.BeanshellScriptEngine$BeanshellExecutable.execute(BeanshellScriptEngine.java:99)
... 16 more
INFO 25.11.2013 13:04:23.895 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): Session terminated (ID=4146234305482954207, user=Hewera-Harz (Petra Hewera-Harz)(dummy)), number of sessions now 16
INFO 25.11.2013 13:04:23.895 (de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl): close dummy session (ID=8529769402629195111, user=Hewera-Harz)
INFO 25.11.2013 13:04:23.895 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'media_freigabe' - schedule entry 'Publizierung barmenia.de - manuell' (id=32116)
Test-Script für Freigabe im SiteStore (funktioniert einwandfrei):
//!Beanshell
import java.util.*;
import java.lang.Long;
import de.espirit.firstspirit.access.ReferenceEntry;
import de.espirit.firstspirit.storage.*;
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.project.*;
import de.espirit.firstspirit.agency.StoreAgent;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.store.Store.Type;
import de.espirit.firstspirit.access.store.sitestore.*;
connection.getProjectById(context.getProject().getId()).getUserService();
storeAgent = context.requestSpecialist(StoreAgent.TYPE);
siteStore = (SiteStoreRoot)storeAgent.getStore(Type.SITESTORE);
List<StoreElement> children = siteStore.getChildren(StoreElement.class, true).toList();
for (StoreElement child : children) {
if (child instanceof PageRef) {
ordner = child.getParent();
child.setLock(true);
child.release(false);
ordner.setLock(true);
ordner.release(false);
}
}