Freigabe von Media-Elementen und Media-Ordnern über Server Script
Author: Hewera-Harz
Publication Date: 11/25/2013 13:20
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);
}
}
Tags: automatische_freigabe, freigabe, media_elemente, media_ordner, mediastore, server-script, server_script
-
Author: Hewera-Harz - 11/25/2013 14:30
Klasse das klappt jetzt schon mal.
Zu meiner Zusatzfrage:
Wenn ich nur einen bestimmten Ordner und seine Media-Elemente freigeben will?
Danke und Grüße
Petra Hewera-Harz
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
1 commentaire