Search the FirstSpirit Knowledge Base
Hallo!
Ich sehe gerade den Wald vor lauter Bäumen nicht. Ich versuche mittels eines kleinen Beanshell-Scriptes die History einer Seite auszulesen um den letzten freigebenden Redakteur auszulesen.
Hier mal der Anfang des Scriptes:
//!Beanshell
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.storage.Revision;
import de.espirit.firstspirit.storage.RevisionFilter;
import de.espirit.firstspirit.storage.HistoryProvider;
import java.text.SimpleDateFormat;
import de.espirit.or.web.SessionManager;
import de.espirit.or.schema.Entity;
import de.espirit.or.schema.KeyValue;
import java.util.*;
import de.espirit.firstspirit.common.gui.CMSDialog;
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.UserService;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.store.contentstore.Content2;
import de.espirit.firstspirit.access.store.contentstore.ContentStoreRoot;
import de.espirit.firstspirit.access.store.templatestore.Schema;
import de.espirit.or.Session;
import de.espirit.or.query.Equal;
import de.espirit.or.query.Or;
import de.espirit.or.query.Select;
Calendar firstRelease = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
UserService us = p.getProject().getUserService();
ContentStoreRoot cs = us.getStore(Store.Type.CONTENTSTORE, true);
Content2 contentSource = cs.getContent2ByName("autor");
Schema schemaTable = contentSource.getSchema();
Session orSession = schemaTable.getSession(true);
Select select = orSession.createSelect("Autor");
In der vorletzten Zeile passiert dann der Fehler, wenn ich mir die Vorschau einer Seite angucke. Aber auch beim Deployment taucht der Fehler auf.
Called from method: __execute
Target exception: java.lang.ClassCastException: Cannot cast de.espirit.or.impl.SessionImpl to de.espirit.or.Session
Wieso das und wie kann ich das umgehen? In FS4.2 ging das noch und in FS5 scheinbar nicht mehr? Wo ist mein Fehler?
Danke im Voraus!
Hallo Marcus,
versuche doch bitte mal, im Script die Typisierung der Variable wegzulassen. Ich meine mich zu erinnern, dass es hier in Beanshell ab und an Probleme damit gibt.
Beste Grüße
Stefan
Damit komme ich, erstaunlicherweise weiter. Obwohl das in FS 5.1.209 nicht ging. Da hatte ich extra testweise die Typisierungen eingebaut.
Nun etwas weiter im Script:
revisionHistoryIterator = p.getPage().getHistory(new Date(), HistoryProvider.EVER_SINCE, HistoryProvider.ALL_REVISIONS, RevisionFilter.RELEASE_FILTER).iterator();
if (revisionHistoryIterator.hasNext()) {
revision = revisionHistoryIterator.next();
editor = revision.getEditor().toString();
editor = editor.substring(0,editor.indexOf(" "));
equal = new Equal("Anmeldenummer", editor);
cons = new Or();
cons.add(equal);
select.setConstraint(cons);
keys = orSession.fetchKeys(select);
..........................
Jetzt scheitert er an der Zeile Zeile mit dem setConstraint. Er gibt keinen Fehler aus, wirft keine Exception, nix. Das Script steigt einfach an der Stelle aus.
In cons steht folgendes drin: Or [(EQUAL, Anmeldenummer: 987)]
Vor dem setConstraint sieht das select folgendermaßen aus:
<QUERY entityType="Autor">
</QUERY>
Idee???