1 package org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.enums;
2
3 import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.AbstractSourceCodeAwareNodeProcessingTest;
4 import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.JavaDocRenderer;
5 import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.NoAuthorJavaDocRenderer;
6 import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.SomewhatNamedPerson;
7 import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.XsdAnnotationProcessor;
8 import org.junit.Assert;
9 import org.junit.Test;
10 import org.w3c.dom.Document;
11 import org.w3c.dom.Node;
12 import org.xmlunit.builder.DiffBuilder;
13 import org.xmlunit.diff.Diff;
14 import se.jguru.shared.algorithms.api.resources.PropertyResources;
15
16 import javax.xml.bind.JAXBContext;
17 import javax.xml.bind.Marshaller;
18 import java.io.StringWriter;
19 import java.util.ArrayList;
20 import java.util.Arrays;
21 import java.util.List;
22
23
24
25
26 public class XsdAnnotationProcessorAndEnumsTest extends AbstractSourceCodeAwareNodeProcessingTest
27 {
28
29
30 private JavaDocRenderer renderer = new NoAuthorJavaDocRenderer();
31
32 @Test
33 public void validateGeneratedXmlForEnums() throws Exception
34 {
35
36
37 final String expected = PropertyResources.readFully(
38 "testdata/schemageneration/javadoc/expectedRawExampleEnumHolder.xml" );
39 final ExampleEnumHolder exampleEnumHolder = new ExampleEnumHolder();
40 exampleEnumHolder.getCoins().addAll( Arrays.asList( AmericanCoin.values() ) );
41 exampleEnumHolder.getFoodPreferences().addAll( Arrays.asList( FoodPreference.values() ) );
42
43 final StringWriter out = new StringWriter();
44
45
46 final JAXBContext context = JAXBContext.newInstance( FoodPreference.class, ExampleEnumHolder.class );
47 final Marshaller marshaller = context.createMarshaller();
48 marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
49 marshaller.setProperty( Marshaller.JAXB_ENCODING, "UTF-8" );
50 marshaller.marshal( exampleEnumHolder, out );
51 out.close();
52
53
54 final Diff diff = DiffBuilder.compare( expected ).withTest(
55 out.toString() ).ignoreWhitespace().ignoreComments().build();
56 Assert.assertFalse( diff.hasDifferences() );
57
58 }
59
60 @Test
61 public void validateHandlingXmlElementWrapperDocumentation() throws Exception
62 {
63
64
65 final Document document = namespace2DocumentMap.get( SomewhatNamedPerson.NAMESPACE );
66 final Node rootNode = document.getFirstChild();
67
68 final XsdAnnotationProcessor unitUnderTest = new XsdAnnotationProcessor( docs, renderer );
69
70
71 process( rootNode, true, unitUnderTest );
72
73
74 final String processed = printDocument( document );
75 System.out.println( "Got: " + processed );
76
77
78
79
80
81 }
82
83
84
85
86 @SuppressWarnings( "unchecked" )
87 @Override
88 protected List<Class<?>> getJaxbAnnotatedClassesForJaxbContext()
89 {
90
91 final List<Class<?>> toReturn = new ArrayList<Class<?>>();
92 for ( Class<?> current : Arrays.asList( FoodPreference.class, ExampleEnumHolder.class, AmericanCoin.class ) )
93 {
94 toReturn.add( current );
95 }
96
97 return toReturn;
98 }
99 }