aVogt
Returning Creator

Linksliste (CMS_INPUT_LINKLIST) in Tabellenvorlage setzen, java.lang.UnsupportedOperationException

Hallo,

ich will über einen Auftrag eine Linkliste (CMS_INPUT_LINKLIST) in einer Tabellenvorlage füllen/leeren. Bisher hat das geklappt. nun bekomme ich eine
     java.lang.UnsupportedOperationException
die ich nicht zuordnen kann.

Der Auszug befindet sich in einer Klasse, und die in einem Modul. In der Klasse hab ich nichts geänderte.


Die Methoden this.debug ist eigenes Logging

Im Anhang die Logausgaben des Scripts sowie der Stacktrace.


hier mein Script:

// zuerst die Tabellenvorlage und daten des Datensatz holen
ContentStoreRoot cs = (ContentStoreRoot) us.getStore(de.espirit.firstspirit.access.store.Store.Type.forName("CONTENTSTORE"), false);

this.debug("contentSourceName: " + contentSourceName);
Content2 contentSource = this.cs.getContent2ByName(contentSourceName);
this.debug("contentSource: " + contentSource);
Session session = contentSource.getSchema().getSession();
this.debug("session: " + session);
Data hb_entityData = contentSource.getDataObject(dbRow);
this.debug("hb_entityData: " + hb_entityData);


//nun die Linkliste holen und leeren
LinkListEditorValue linklist_mev = (LinkListEditorValue) hb_entityData.get("st_vdlink").getEditor();
NotifyingList linklistvalue_mev = (NotifyingList) linklist_mev.get(lang);
int old_mev = linklistvalue_mev.size();
linklistvalue_mev.clear();
this.debug("bisherige Anzahl MEV: " + old_mev + "/neu: " + linklistvalue_mev.size());

//speichern und freigeben
this.debug("Listen speichern speichern ...");
linklist_mev.set(lang, linklistvalue_mev);
this.debug("\tmev gesetzt");
contentSource.setDataObject(dbRow, hb_entityData);
this.debug("\tdataObject gesetzt");

this.debug("\tspeichern");
session.commit();
this.debug("freigeben: " + release);
if(release) {
    session.release(dbRow);
    session.commit();
}

                
                
Der Fehler tritt bei
    session.commit()
auf.

An was kann es liegen, dass der fehler auftritt?

0 Kudos
5 Replies
Peter_Jodeleit
Crownpeak employee

Interessant wären die Versions-Informationen (hat funktioniert mit Version x, funktioniert nicht mehr seit Version y).

Fachliche Erläuterung des Fehlers: Die verwendete Session zieht den Stand von einem Zeitpunkt Tx an - auf so einer Session (die ja nicht dem 'aktuellem' Stand arbeitet) sind keine verändernden Operationen möglich.

Ich vermute, das der benutzte UserService (Variable "us") eine Revisions-Information gesetzt hat (Rückgabewert von "us.getRevision()" kontrollieren, wird dann " != null" sein).

Peter
0 Kudos

Hab nun was gefunden, hab doch was geändert, aber nicht am Script selber ...

Ich habe das Script als Aktionsvorlage angelegt. Diese habe ich dann in einen Auftrag eingefügt (referenziert). Der Auftrag soll regelmäßig ausgeführt werden (1x am Tag).
Da in dem Auftrag sonst keine Generierung durchgeführt wird, lasse ich vor dem Script eine einzelne Seite generieren (dies musste ich auch bei anderen "nur-Script-Aufträgen" auch machen - auf Hinweis aus einem anderen Projekt in Zusammenarbeit mit e-Spirit).

Der o.g. Fehler tritt nun auf, wenn eine Seite vorher generiert wurde!

Nehme ich die Generierung heraus und führe den Auftrag manuell aus funktioniert das Script!

Muss ich wirklich etwas generieren?
Mir scheint es fast so, da der Auftrag sonst nicht ausgeführt wird

0 Kudos
gockel
Crownpeak employee

Nein es muss nichts generiert werden vorher.

Durch die Generierung wird der UserService, wie von pjodeleit beschrieben auf eine spezifische Revision gesetzt.

0 Kudos

Genau so ist es. Generierungen laufen immer auf einem "eingfrorenem" Stand (Freigaben während der Generierung sollen die gerade laufende Generierung nicht beeinflussen).

Aufträge die nur aus einem Skript bestehen sind doch ok, wieso sollte man davor eine Generierung machen müssen?

Peter
0 Kudos

Hmm, da war ich wohl auf dem falschen Weg :smileyconfused:

0 Kudos