This article is a continuation thread from the article TestNG - test data from an XML file to use standard (J2SE), XML serialization of objects schemy for the preparation of test data. This article will treat a data entry type java.util.Date
  and enumerated type - enumeration. As a reminder in this If it's not about serialization of objects from java, but a manual preparation of XML files containing zserializowane objects that are zdeserializowane using a standard mechanism -
 java.beans.XMLDecoder   and will then be used as input for the unit tests. However, even when serializing an object from the levels of Java, which has a field of type java.util.Date
  and the second about the type of enumeration, we obtain the effect of far been disappointing, which certainly do not want to emulate. field enumeration of the type in general will not be saved. The box with the dates will be saved, but as the number of milliseconds since January 1, 1970. Surely this is not a convenient form for humans, Ana read, let alone to write. In any event,
 java.beans.XMLEncoder   zserializuje  java.util.Date  as follows: \u0026lt;void property="birthDate"> \u0026lt;object class="java.util.Date"> \u0026lt; ; long> 439254000000 \u0026lt;/ long> \u0026lt;/ object> \u0026lt;/ void>Not so ... that's pretty logical, because it is the only one not "condemned" the way to set the date which provides an interface
  java.util.Date. Normally (in Java), if I had to get the date from a string, I would have benefited from
  java.text.SimpleDateFormat. But how to use it in that this XML ... now I've included: \u0026lt;void id="sdf" class="java.text.SimpleDateFormat"> \u0026lt;string> yyyy-MM-dd \u0026lt;/ string> \u0026lt;void id="date0" method="parse"> ; \u0026lt;string> 1983-12-03 \u0026lt;/ string> \u0026lt;/ void> \u0026lt;/ void> ... \u0026lt;object class="pl.dwalczak.Osoba"> ... \u0026lt;void property="dataUrodzin"> \u0026lt;object idref="date0"/> \u0026lt;/ void> ... \u0026lt;/ Object>first part of the structure (a marker of
 void   id = "sdf" ), a declaration, which corresponds in Java:  java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat ("yyyy-MM -dd "); java.util.Date sdf.parse date0 = (" 1983-12-03 ");  She does not define any zserializowanego object, and only variables that can be used when defining zserializowanych obietków. Can be placed in the main element, or directly in zserializowanym object. The second part of the structure (the marker object
 ) defines an object of type  pl.dwalczak.Osoba , which sets the field  dataUrodzin  predefined variable  date0 . Returning to the enumerated type.
Suppose that the class has
 pl.dwalczak.Osoba   typOsoby  field of type  pl.dwalczak.TypOsoby  which is enumeracjom:  package pl.dwalczak; {public enum TypOsoby OsobaFizyczna, OsobaPrawna;}  then set the field  typOsoby  for  pl.dwalczak.Osoba  object might look like this: \u0026lt;void property="type"> \u0026lt;object class="com.dwalczak.TypOsoby" field="OsobaFizyczna"/> \u0026lt;/ void>Or this:
\u0026lt;void property="type"> ; \u0026lt;object class="com.dwalczak.TypOsoby" method="valueOf"> \u0026lt;string> OsobaPrawna \u0026lt;/ string> \u0026lt;/ object> \u0026lt;/ void>
Summary
While the problem of serializing a value of type The enumeration does not specifically reduce the attractiveness of the standard format of XML serialization of objects in J2SE, as a general format for recording test data manually because it would be in pretty decent shape. This is a problem with the date actually reduces the attractiveness, because the formula in the record of its "human" character is a little too long and complicated. Still, I think that the use of this format may be less time consuming than designing and writing your own code, it deserializującego objects.Resources Long-Term Persistence of JavaBeans Components: XML Schema
Malenkova Sergey's Blog - How to encode Type-Safe enums?
 
0 comments:
Post a Comment