wir migrieren gerade von FS 5.1 (5.1.605.72781 ) auf FS 5.2 (5.2.424.74231) und dabei ist aufgefallen, dass eines unserer Skripte nicht mehr funktioniert. Wir befüllen in dem Vorlagenskript eine FS_LIST vom Typ "INLINE/SECTIONTEMPLATES", wobei in dem Section Template jeweils ein FS_DATASET gefüllt wird. Die FS_LIST wird dem Skript als Parameter von der Absatzvorlage übergeben.
Ich habe mir die Klasse der übergebenen FS_LIST ausgeben lassen, in der funktionierenden Version ist sie vom Typ "de.espirit.firstspirit.client.access.editor.FormDataListImpl" und in der nicht-funktionierenden Version ist sie vom Typ "de.espirit.firstspirit.generate.values.FormDataListConverter$CopyOnModificationList". Ich finde in der Doku leider nichts zu dieser Klasse und ein Typecast hatte auch nicht funktioniert.
Ich erhalte nachfolgenden Fehler bei der Generierung, die Zeilennummern stimmen aber nicht überein, da ich hier zusätzliche Kommentare eingefügt habe. Ich habe den kompletten Stacktrace als Anlage angehängt.
"Method Invocation liste.add : at Line: 43 : in file: inline evaluation of: ``__execute() { //!Beanshell import de.espirit.firstspirit.access.store.templatest . . . '' : liste .add ( idProvFormData )
//!Beanshell
import de.espirit.firstspirit.access.store.templatestore.*;
import de.espirit.firstspirit.access.Language;
import de.espirit.or.query.Select;
import de.espirit.or.query.Equal;
import de.espirit.or.EntityList;
import de.espirit.or.schema.Entity;
import de.espirit.firstspirit.access.editor.value.SectionFormsProducer;
import de.espirit.firstspirit.access.editor.value.DatasetContainer;
import de.espirit.firstspirit.access.editor.value.DatasetContainer.Factory;
Language masterlanguage = context.getProject().getMasterLanguage();
us = context.getUserService();
cs = us.getStore(de.espirit.firstspirit.access.store.Store.Type.CONTENTSTORE,false);
//Get variables from context
//Liste mit FS-IDs von Kontakten aus einer Datenquelle zur Befüllung von FS_DATASET
List id = context.getVariableValue("id");
//FS-List vom Typ INLINE/SECTIONTEMPLATES
liste = context.getVariableValue("liste");
formDataProducer = (SectionFormsProducer)liste.getProducer();
//Section Template "Mitarbeitervisitenkarten"
SectionTemplate templ = context.getUserService().getTemplateStore().getTemplateById(new Long(162));
//Generate Vcards for all employees
Iterator it = id.iterator();
while(it.hasNext()){
idInt = it.next();
idProvFormData = formDataProducer.create(templ);
//Select Employee from Database
session = us.getTemplateStore().getSchemes().getSchemaByName("Kontaktdaten").getSession();
Select select = session.createSelect("Kontakte-Gesamt");
Equal equal = new Equal("fs_id", idInt);
select.setConstraint(equal);
EntityList vcardResult = session.executeQuery(select);
Entity searchedEntity = vcardResult.get(0);
//Set and add Employee
content2 = cs.getContent2ByName("kontakte");
tableTemplate = content2.getTemplate();
container = Factory.create(searchedEntity, tableTemplate, masterlanguage);
//tt_ansprechpartner ist die Eingabekomponente vom Typ FS_DATASET in dem Section Template
idProvFormData.get(masterlanguage, "tt_ansprechpartner").set(container);
//Hier wird der Fehler geworfen - " Method Invocation liste.add...liste.add( idProvFormData )...Target exception: java.lang.UnsupportedOperationException
liste.add(idProvFormData);
}
//Return the list as result
result.setValue(liste);