hgeller
I'm new here

Hinzufügen von Datenbankschemata in Content Transport Feature per API

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

0 Kudos
2 Replies
marro
Crownpeak employee

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

0 Kudos