Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich versuche über die Content Transport API Datenbankschemata einem Content Transport Feature hinzuzufügen. Dazu gehe ich grob gesagt folgendermaßen vor:
FeatureModel featureModel = agent.createFeatureModel(featureDescriptor);
TemplateStoreRoot templateStore = userService.getTemplateStore();
// rekursiv alle Schemata ermitteln
Listable<StoreElement> elements = templateStore.getSchemes().getChildren(Schema.class, true);
// Schemata zu Feature hinzufügen
for (StoreElement element: elements) {
featureModel.add(element);
}
Allerdings sind in dem so erzeugten Feature nach Erstellung keine Schemata enthalten. Alternativ probiert habe ich auch folgendes:
Listable<StoreElement> elements = templateStore.getSchemes().getChildren(Schemes.class, true);
Listable<StoreElement> elements = templateStore.getSchemes().getChildren(TableTemplate.class, true);
mit dem gleichen Ergebnis.
Interessanterweise liefert mir der Aufruf templateStore.getSchemes().getChildren(); (durch den nur die direkten Kindelemente ausgegeben werden) 0 zurück, obwohl es im TemplateStore unterhalb von "Schemata" einen Unterordner gibt, d.h. ich würde hier 1 erwarten.
Der oben aufgeführte Code funktioniert für andere StoreElement-Objekte, z.B. templateStore.getSectionTemplates(), ohne Probleme und wie erwartet. Bei den Section Templates sind auf der obersten Ebene auch Ordner vorhanden.
Software-Versionen
FirstSpirit:
5.1.410.67084
(Anmerkung: ein Update auf 5.1.415.67492 hat an dem Verhalten auch nichts geändert)
Java:
Oracle SDK 1.8.0_45
OS:
Mac OS X 10.10.4 bzw. Ubuntu Linux 12.04
Hat jemand eine Lösung für dieses Problem?
Vielen Dank & viele Grüße
Hendrik Geller
Hallo Hendrik,
könnte es eventuell ein Rechteproblem sein? Darf der User, mit dem Du den Aufruf tätigst, die Datenbankschemata lesen?
Ich kann das Verhalten auf meinem Testsystem (ebenfalls 5.1.410) leider nicht reproduzieren. Zunächst hatte ich in der Vorlagenverwaltung unter Datenbank-Schemata ein einziges Datenbankschema liegen.
Der Aufruf context.getUserService().getTemplateStore().getSchemes().getChildren().toList().size() liefert wie erwartet 1.
Der Auruf context.getUserService().getTemplateStore().getSchemes().getChildren().getFirst() liefert mir dann genau das eine Datenbankschema.
Testweise habe ich dann unterhalb von Datenbank-Schemata noch einen leeren Ordner angelegt. Dann bekomme ich beim ersten der beiden oberen Aufrufe wie erwartet 2 zurück.
Viele Grüße
Donato
Hallo Donato,
vielen Dank für Deine Nachricht. Das Problem hat sich inzwischen gelöst. Ich vermute, dass das Update der fs-server.jar von 5.1.410.67084 auf 5.1.415.67492 den Fehler behoben hat.
Viele Grüße
Hendrik