/*
* Copyright (C) 2004, 2005 Joe Walnes.
* Copyright (C) 2006, 2007, 2008 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 09. May 2004 by Joe Walnes
*/
package com.thoughtworks.acceptance;
import com.thoughtworks.acceptance.objects.StandardObject;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.reflection.ObjectAccessException;
import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider;
import com.thoughtworks.xstream.core.JVM;
public class FinalFieldsTest extends AbstractAcceptanceTest {
static class ThingWithFinalField extends StandardObject {
final int number = 9;
}
public void testSerializeFinalFieldsIfSupported() {
xstream = new XStream(new JVM().bestReflectionProvider());
xstream.alias("thing", ThingWithFinalField.class);
assertBothWays(new ThingWithFinalField(),
"<thing>\n" +
" <number>9</number>\n" +
"</thing>");
}
public void testExceptionThrownUponSerializationIfNotSupport() {
xstream = new XStream(new PureJavaReflectionProvider());
xstream.alias("thing", ThingWithFinalField.class);
try {
xstream.toXML(new ThingWithFinalField());
if (!JVM.is15()) {
fail("Expected exception");
}
} catch (ObjectAccessException expectedException) {
assertEquals("Invalid final field " + ThingWithFinalField.class.getName() + ".number",
expectedException.getMessage());
}
}
}