View Javadoc
1   package org.codehaus.modello.plugin.converters;
2   
3   /*
4    * Copyright (c) 2006, Codehaus.org
5    *
6    * Permission is hereby granted, free of charge, to any person obtaining a copy of
7    * this software and associated documentation files (the "Software"), to deal in
8    * the Software without restriction, including without limitation the rights to
9    * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10   * of the Software, and to permit persons to whom the Software is furnished to do
11   * so, subject to the following conditions:
12   *
13   * The above copyright notice and this permission notice shall be included in all
14   * copies or substantial portions of the Software.
15   *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22   * SOFTWARE.
23   */
24  
25  import java.io.Reader;
26  import java.util.Properties;
27  
28  import org.codehaus.modello.AbstractModelloJavaGeneratorTest;
29  import org.codehaus.modello.ModelloException;
30  import org.codehaus.modello.ModelloParameterConstants;
31  import org.codehaus.modello.core.ModelloCore;
32  import org.codehaus.modello.model.Model;
33  
34  /**
35   */
36  public class ConverterGeneratorTest extends AbstractModelloJavaGeneratorTest {
37      public ConverterGeneratorTest() {
38          super("converters");
39      }
40  
41      public void testConverterGenerator() throws Throwable {
42          generateConverterClasses(getXmlResourceReader("/models/maven.mdo"), "3.0.0", "4.0.0");
43  
44          generateConverterClasses(getXmlResourceReader("/features.mdo"), "1.0.0", "1.1.0");
45  
46          addDependency("org.codehaus.woodstox", "stax2-api");
47          addDependency("com.fasterxml.woodstox", "woodstox-core");
48  
49          compileGeneratedSources();
50  
51          verifyCompiledGeneratedSources("ConvertersVerifier");
52      }
53  
54      private void generateConverterClasses(Reader modelReader, String fromVersion, String toVersion) throws Throwable {
55          ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
56  
57          Model model = modello.loadModel(modelReader);
58  
59          Properties parameters = new Properties();
60          parameters.setProperty(
61                  ModelloParameterConstants.OUTPUT_DIRECTORY, getOutputDirectory().getAbsolutePath());
62          parameters.setProperty(ModelloParameterConstants.ALL_VERSIONS, fromVersion + "," + toVersion);
63  
64          generateClasses(parameters, modello, model, fromVersion, toVersion, "java");
65          generateClasses(parameters, modello, model, fromVersion, toVersion, "stax-reader");
66          generateClasses(parameters, modello, model, fromVersion, toVersion, "stax-writer");
67          generateClasses(parameters, modello, model, fromVersion, toVersion, "converters");
68      }
69  
70      private void generateClasses(
71              Properties parameters,
72              ModelloCore modello,
73              Model model,
74              String fromVersion,
75              String toVersion,
76              String outputType)
77              throws ModelloException {
78          parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(false));
79          parameters.setProperty(ModelloParameterConstants.VERSION, toVersion);
80          modello.generate(model, outputType, parameters);
81  
82          parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(true));
83          parameters.setProperty(ModelloParameterConstants.VERSION, fromVersion);
84          modello.generate(model, outputType, parameters);
85  
86          parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(true));
87          parameters.setProperty(ModelloParameterConstants.VERSION, toVersion);
88          modello.generate(model, outputType, parameters);
89      }
90  }