mschomacker
I'm new here

Executable/Modul: Gespeicherte URLs im gesamten Site-Store zurücksetzen

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

2 Replies
mschomacker
I'm new here

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.