Guten Abend zusammen,
ich habe einen Webservice, der bestimmte Seiten updaten soll.
Dazu soll aus der Seite das Index-Element "stPublicationTypes" ausgelesen und für jeden einzelnen Index, ein Wert aus der Datenquellen Spalte namens "stPublicationstypId"
So sieht mein Code aus, der mit noch Probleme bereitet:
FormField<?> dataValue = section.getFormData().get(masterLanguage, "stPublicationTypes");
if (dataValue != null) {
LOGGER.debug("found template " + sectionTemplateReferenceName + ", stPublicationTypes = " + dataValue);
Index index = (Index) dataValue.get();
DataAccessSession dataAccessSession = index.createSession(SpecialistsBroker);
for (Index.Record record : index) {
String myIdentifier = record.getIdentifier();
Dataset ds = (Dataset) dataAccessSession.getData(myIdentifier);
FormData formData2 = ds.getFormData();
Integer publikationsTypId = (Integer) formData2.get(null, "stPublicationstypId").get();
if (publicationTypeIdList.contains(publikationsTypId)) {
foundPubIdInPage = true;
}
}
Das FormField ist vom Typ de.espirit.firstspirit.store.access.DataWrappingFormData$EditorValueWrappingFormField
dataValue.get() gibt mir IndexImpl$BoundRecord.
Soweit funktioniert noch alles.
Ich versuche jetzt über eine DataAcessSession auf die Datenquelle zuzugreifen. Aber hier scheiter ich am SpecialistsBroker. z.10
Woher bekomme ich den? Ist das überhaupt die richtige Vorgehensweise?
Ich habe viele Beispiele gesehen, wo einfach ein context übergeben wird, allerdings rufe ich diesen Webservice nicht von FirstSpirit aus auf, deswegen kann ich keinen Context übergeben.
Kann ich mir einen Context selbst erzeugen? Bis jetzt habe ich in der Dokumentation immer nur Interfaces als Context gesehen, also nichts, was ich initialisieren könnte...
In einem anderen Beispiel aus dem Forum habe ich gesehen, dass sich jemand über die Connection zu FirstSpirit einen SpecialistBroker geholt hat:
SpecialistsBroker spbroker = getConnection().getBroker();
Allerdings erhalte ich dann folgende Exception:
java.lang.IllegalStateException: No specialist found for 'de.espirit.firstspirit.agency.PluginsAgent$1@991513cd'! [source: de.espirit.firstspirit.agency.ConnectionDelegatingSpecialistsBroker@1b70203f]
at de.espirit.firstspirit.agency.AbstractSpecialistsBroker.requireSpecialist(AbstractSpecialistsBroker.java:14)
at de.espirit.firstspirit.access.BaseContextImpl.requireSpecialist(BaseContextImpl.java:99)
at de.espirit.firstspirit.client.plugin.dataaccess.DataAccessSessions.getDataAccess(DataAccessSessions.java:97)
at de.espirit.firstspirit.client.plugin.dataaccess.DataAccessSessions.createSession(DataAccessSessions.java:49)
at de.espirit.firstspirit.access.store.templatestore.gom.lists.GomIndexSourceImpl.createSession(GomIndexSourceImpl.java:133)
at de.espirit.firstspirit.client.access.editor.lists.IndexImpl.createSession(IndexImpl.java:190)
at de.blb.researchportal.firstspirit.StartUpdateGeneration.analyzePage(StartUpdateGeneration.java:221)
Ich verstehe, die Exception so, dass ich einen falschen Typ von SpecialistBroker benutze. Ich brauche einen PluginsAgent? Wobei ich sowas in den Docs nicht gefunden habe.
Wie erzeuge ich mir denn den richtigen SpecialistBroker für diese Aufgabe?
Ich hoffe mir kann jemand weiterhelfen.
Vielen Dank
Hermann