kalbacher
I'm new here

API Access und data.getFormData() Aufruf

Hallo,

irgendie steh ich gerade auf dem Schlauch. Kann jemand anhand das folgenden Codeschnippsel sagen, warum beim Aufrufen von data.getFormData(); nichts passiert und direct in den finally Zweig gesprungen wird?

Danke

public class TestSync {

     public static void main(String... args)

                throws MaximumNumberOfSessionsExceededException, IOException,

                AuthenticationException {

            Connection con = ConnectionManager.getConnection("SERVER", 8000,ConnectionManager.HTTP_MODE, "USER", "PASSWORT");

            Content2 cont =null;

            try {

                con.connect();

    

                Project pr = con.getProjectByName("Mithras Energy");

                UserService us = pr.getUserService();

                Language lang = pr.getMasterLanguage();

    

                ContentStoreRoot rt = (ContentStoreRoot) us.getStore(Store.Type.CONTENTSTORE, false);

                cont = rt.getContent2ByName("pressreleases");

                List<? extends Entity>currendData =cont.getData();

               

                for (Entity press:currendData) {

                     Dataset data =  cont.getDataset(press);

                     FormData formData = data.getFormData();

                 }

                    

            }catch (Exception e)

            {

                e.printStackTrace();

            }finally

            {

                con.disconnect();

            }

        }

}

0 Kudos
19 Replies
Peter_Jodeleit
Crownpeak employee

Kann jemand anhand das folgenden Codeschnippsel sagen, warum beim Aufrufen von data.getFormData(); nichts passiert und direct in den finally Zweig gesprungen wird?

Weil es die letzte Anweisung im "try"-Block ist?

Peter
0 Kudos

An sich hätten wir erwartet, dass entweder die FormData zurückgegeben wird oder bei einer aufgetretenden Exception in den catch-Zweig gesprungen wird... Wir fragen uns daher immer noch, was die Ursache für das beschriebene Verhalten sein könnte.

0 Kudos

Die Methode main ist als void definiert, kann also nichts zurückliefern.

Peter
0 Kudos

Ich glaube wir reden aneinander vorbei.

Es geht um den Aufruf:

FormData formData = data.getFormData();

Anstatt das FormData Object zu bekommen, springt die Anweisung in den finally Zweig.

0 Kudos
gockel
Crownpeak employee

Wie stellen Sie denn fest, dass das FormData nicht zurückgeliefert wird, wenn danach gar keine Operationen mehr auf dem Objekt durchgeführt werden. ????

0 Kudos

Das Beispiel wurde in einer minimalen Version angegeben, um unser Problem zu skizzieren. Ursprünglich hatten wir nach der entsprechenden Zeile natürlich noch Anweisungen, um auf das FormData-Objekt zuzugreifen (Zugriff auf das FormField-Objekt). Dabei war das Verhalten auch wie oben beschrieben. Das beschriebene Problem muss also eine andere Ursache haben.

0 Kudos
gockel
Crownpeak employee

Das beschriebene Problem muss also eine andere Ursache haben.

Das glaube ich ja ehrlich gesagt nicht. Rufen Sie die main-Methode vielleicht aus einer Umgebung auf, in der Sie System.err. umgeleitet haben und sehen den Fehler vielleicht nicht?

Geben Sie die Variable "formData" doch bitte mal aus in der folgenden Zeile.

= Ergänzung (Hinweis von Herrn Jodeleit) =

Wenn ein Fehler auftritt der nicht "Exception" ist, z.B. OutOfMemoryError, dann würde diese ja nur im System.err landen, was aber wieder zu oben genannter Frage führt.

0 Kudos

Alle Anweisungen, die nach dem Aufruf

FormData formData = data.getFormData();


erfolgen, werden leider nicht erreicht, da direkt in den finally-Zweig gesprungen wird. Alle System.out-Aufrufe vor dem getFormData-Call landen sehr wohl in der Konsole. Es erfolgt also keine Umleitung.

0 Kudos

posten  Sie doch bitte mal den Code hinter/unter FormData formData = data.getFormData();

0 Kudos