Search the FirstSpirit Knowledge Base
Hallo Community,
ich möchte in einem Executable alle gespeicherten URLs des Site-Stores (alle Elemente) zurücksetzen. Das Executable ist als Skript-Aktion in einem Auftrag eingebunden und wird vor den Generierungs-Tasks ausgeführt. Hier ein Auszug aus dem Quellcode:
public class ResetStoredUrlsExecutable implements Executable {
@Override
public Object execute(Map parameters) throws ExecutionException {
Object contextParam = parameters.get("context");
...
ScheduleContext context = (ScheduleContext) contextParam;
SiteStoreRoot siteStore = (SiteStoreRoot) context.requestSpecialist(StoreAgent.TYPE).getStore(Store.Type.SITESTORE, false);
GlobalStoreRoot globalStore = (GlobalStoreRoot) context.requestSpecialist(StoreAgent.TYPE).getStore(Store.Type.GLOBALSTORE, false);
URLProperties urlProperties = globalStore.getChildren(URLProperties.class).getFirst();
urlProperties.setLock(true, false);
int resettedUrlsCount = urlProperties.resetStoredUrls(siteStore);
context.logInfo(resettedUrlsCount + " stored URL(s) resetted of SiteStoreRoot!");
urlProperties.setLock(false, false);
}
}
Leider wirkt sich der Reset nicht aus, d.h. die gespeicherten URLs werden nicht zurückgesetzt. Wenn ich diesen Code in einer Bean-Shell ausführe, funktioniert er.
Hat jemand von euch eine Idee, an was das liegen könnte?
Schon jetzt vielen herzlichen Dank für eure Unterstützung.
Viele Grüße aus Nürnberg,
Michi
Hallo zusammen,
die Notwendigkeit für das oben erwähnte Java-Executable ist aufgrund eines Tipps des Help-Desks entfallen. Vor dem Generierungs-Task fügten wir einen Skrip-Task mit folgendem Inhalt ein:
import java.util.HashMap;
HashMap params = new HashMap();
params.put("removedeleted", "true");
params.put("usewelcomefilenames", "false");
context.setProperty("#urlCreatorSettings", params);
Hierdurch wird sichergestellt, dass die "stored URLs" von gelöschten Seitenreferenzen im Rahmen der anstehenden Generierung zurückgesetzt werden. Infolgessen werden etwaige URL-Konflikte verhindert (eine gelöschte Seitenreferenz verhindert nicht mehr die Vergabe des Dateinamens "index.html" im Falle einer neu angelegten Seitenreferenz im gleichen Verzeichnis).
Weitere Infos finden sich in der ODFS-Hilfe: .../help/odfs/Weiterführende-Themen/Generierung/Advanced-URLs/Konfiguration/#text_bild_1
Falls irgendjemand, außer mir, auch mal wieder das Problem mit gespeicherten Urls haben sollte, wenn man folgenden Code verwendet geht es:
urlProperties.setLock(true, false);
int resettedUrlsCount = urlProperties.resetStoredUrls(siteStore);
context.logInfo(resettedUrlsCount + " stored URL(s) resetted of SiteStoreRoot!");
urlProperties.save("Urls reset");
urlProperties.setLock(false, false);
Die UrlProperties sind ein StoreElement und müssen gespeichert werden, damit die Änderungen ziehen.