Hi Geoff, Geoff Groos wrote:
> Thanks Jörg, > > I created an account but have run into some http:500s and what-not from > jira while creating my account. I'll create the issue when I get all this > stuff sorted out. > > The second question I have, semi-related, is how would you guys suggest > doing generational (ie cross-model-version) testing? > > What I'd like to do is have tests like this: > > public static class TestFixture{ > > public static class MyModel{ //v1 > Public int x; > Public int y; > } > > //And attempt to deserialize (using our moderately customized xstream > serializer) it as > > public static class MyModel{ //v2 > Public int x; > Public int y; > Publix int z; > } > > //in something like this > @Test > public void > when_we_added_an_extra_int_field_for_feature_1234_we_didnt_break_anything_because_our_deserialization_flow_is_so_nifty() { > //setup > OurSerializerThatDelegatesToXStream serializer = > testHarness.provideSerializer(); > > //act > String serialized = serializer.serialize(makeVersion1OfMyModel()); > MyModel myModelV2 = serializer.deserialize(serialized); > > //assert > assertThat(myModelV2.z).followsProperDomainLogic(); > } > } > > But of course Javac is going to complain about 2 'MyClass'es. > > Any suggestions? Why don't you simply take the XML representation of model 1 and deserialize it into model 2? Why do you still need to generate the XML representation of model 1? > I was thinking about trying using 2 different canonical names (so MyClass1 > and MyClass2), and then add an entry to the aliasMap as part of the setup > logic to tell XStream that MyClass1 is-a MyClass2. > > But since that doesn’t involve nearly enough overly complex code, the > other thing I was thinking of doing is copy-pasting class files around and > then manually loading via some stupidly sophisticated mechanism. With a > couple extra ant targets I could probably even make this bearable. The strategy to handle newer versions of a class depends on the type of modification. There's no general rule. See http://xstream.codehaus.org/faq.html#Serialization_newer_class_versions for some ideas. Cheers, Jörg --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email