package org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc; import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.location.FieldLocation; import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.schemaenhancement.XmlNameAnnotatedClassWithFieldAccess; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import java.lang.reflect.Field; import java.util.Map; import java.util.TreeMap; /** * @author <a href="mailto:lj@jguru.se">Lennart Jörelid</a>, jGuru Europe AB */ public class FieldLocationTest { private Class<XmlNameAnnotatedClassWithFieldAccess> theClass; private Map<String, Field> fieldName2MethodMap; @Before public void setupSharedState() { fieldName2MethodMap = new TreeMap<String, Field>(); theClass = XmlNameAnnotatedClassWithFieldAccess.class; for(Field current : theClass.getDeclaredFields()) { final String currentName = current.getName(); fieldName2MethodMap.put(currentName, current); } } @Test public void validateFieldLocationWithXmlName() throws Exception { // Assemble final String packageName = theClass.getPackage().getName(); final String classXmlName = theClass.getAnnotation(XmlType.class).name(); // @XmlType(name = "AnnotatedXmlNameAnnotatedClassWithFieldAccessTypeName") final Field integerField = fieldName2MethodMap.get("integerField"); final Field stringField = fieldName2MethodMap.get("stringField"); final String integerFieldXmlName = integerField.getAnnotation(XmlAttribute.class).name(); final String stringFieldXmlName = stringField.getAnnotation(XmlElement.class).name(); final String expectedIntegerFieldPath = packageName + "." + classXmlName + "#" + integerFieldXmlName; final String expectedStringFieldPath = packageName + "." + classXmlName + "#" + stringFieldXmlName; final String expectedIntegerFieldToString = packageName + "." + classXmlName + " (from: " + theClass.getSimpleName() + ")#" + integerFieldXmlName + " (from: " + integerField.getName() + ")"; // Act final FieldLocation integerFieldLocation = new FieldLocation( packageName, theClass.getSimpleName(), classXmlName, integerField.getName(), integerFieldXmlName); final FieldLocation stringFieldLocation = new FieldLocation( packageName, theClass.getSimpleName(), classXmlName, stringField.getName(), stringFieldXmlName); // Assert Assert.assertEquals(expectedIntegerFieldPath, integerFieldLocation.getPath()); Assert.assertEquals(expectedStringFieldPath, stringFieldLocation.getPath()); Assert.assertEquals(expectedIntegerFieldToString, integerFieldLocation.toString()); Assert.assertEquals(integerFieldXmlName, integerFieldLocation.getMemberName()); } }