SCALE_MAX

50 views
Skip to first unread message

Michael Ganß

unread,
Apr 24, 2015, 10:16:57 AM4/24/15
to immobilienscou...@googlegroups.com
In der Sandbox erhalte ich momentan bei Attachment/GETALL einen Wert "SCALE_MAX" als PictureScaleType zurück, der nicht im Schema definiert ist und deshalb einen Fehler bei der Deserialisierung verursacht.

Rob Bors

unread,
Apr 28, 2015, 11:15:13 AM4/28/15
to immobilienscou...@googlegroups.com
Hi Michael,
wir haben in der Tat einen neuen PictureScaleType hinzugefügt. Das Hinzufügen von neuen Werten/Features im Schema sollte nicht zu Fehlern führen, wenn man nicht laufend gegen das Schema validiert, wovon wir auch abraten. Es ist völlig ok, bei der Implementierung der APIs gegen das Schema zu validieren und daraus Klassen zu generieren. Wenn man damit durch ist, sollte man beim Senden der API-Requests nicht gegen das Schema validieren, sonst wurde jede Schemaänderung deine Anwendung kaputtmachen.
Wir bereiten einen Umbau vor, mit der wir das Schema versionieren können, so dass Schemaänderungen gar keine Probleme mehr verursachen, dass dauert aber noch und bis dahin rate ich dir, von einer Validierung im Livebetrieb abzusehen.

Michael Ganß

unread,
Apr 28, 2015, 12:29:12 PM4/28/15
to immobilienscou...@googlegroups.com
Das ist kein Validierungsproblem (jedenfalls nicht wie du meinst). Erstens wird zu keinem Zeitpunkt während des Sendens oder Empfangens direkt gegen das XML Schema validiert, sondern ein Serialisierer de/serialisiert XML von/zu Klassen, die aus dem Schema generiert wurden. Beim Senden ist das XML dann in jedem Fall schemakonform bzgl. des Schemas, aus dem die Klassen generiert wurden (es sei denn, der Serialisierer oder der Klassengenerator sind buggy oder die Sprache kann eine bestimmte XML Schema Semantik nicht abbilden, z.B. beim Wertebereich eines Typs). Beim Empfangen ist der Deserialisierer versionstolerant, d.h. er ignoriert überflüssige Attribute und Elemente und stört sich nicht an fehlenden Attributen oder Elementen.

Problematisch wird es nur wie in diesem Fall, wenn ein Element oder Attribut Daten enthält, die nicht zum Typ der generierten Klasse passen. In diesem speziellen Fall ist der Typ ein enum (eine Aufzählung diskreter Werte) und da kommt jetzt auf einmal ein Wert, den es nicht gibt. Ähnlich wäre es, wenn ein Element, das im Schema als Zahl definiert ist, auf einmal einen beliebigen String ("Hallo") enthalten würde.

Wie hattest du dir das vorgestellt, was clientseitig in solchen Fällen passieren soll?

Rob Bors

unread,
Apr 29, 2015, 5:38:19 AM4/29/15
to immobilienscou...@googlegroups.com
Hi Micha,
danke für die ausführliche Antwort, habe sie am zuständigen Team weitergeleitet, sie haben den neuen Scale-Wert vorerst wieder auskommentiert.

Michael Ganß

unread,
Apr 29, 2015, 12:51:50 PM4/29/15
to immobilienscou...@googlegroups.com
Alles klar. Ich finde es super, dass ihr jetzt eine Versionierungsstrategie einführen wollt, das wird eine Menge Probleme lösen bzw. sie gar nicht erst entstehen lassen.
Reply all
Reply to author
Forward
0 new messages