Skip to content

Commit 5ddb79a

Browse files
Copilotslachiewicz
andcommitted
Add test case for Root class name in JDOM writer
Co-authored-by: slachiewicz <6705942+slachiewicz@users.noreply.github.com>
1 parent 6e3a152 commit 5ddb79a

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.codehaus.modello.plugin.jdom;
2+
3+
/*
4+
* Licensed to the Apache Software Foundation (ASF) under one
5+
* or more contributor license agreements. See the NOTICE file
6+
* distributed with this work for additional information
7+
* regarding copyright ownership. The ASF licenses this file
8+
* to you under the Apache License, Version 2.0 (the
9+
* "License"); you may not use this file except in compliance
10+
* with the License. You may obtain a copy of the License at
11+
*
12+
* http://www.apache.org/licenses/LICENSE-2.0
13+
*
14+
* Unless required by applicable law or agreed to in writing,
15+
* software distributed under the License is distributed on an
16+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17+
* KIND, either express or implied. See the License for the
18+
* specific language governing permissions and limitations
19+
* under the License.
20+
*/
21+
22+
import java.util.Map;
23+
24+
import org.codehaus.modello.AbstractModelloJavaGeneratorTest;
25+
import org.codehaus.modello.core.ModelloCore;
26+
import org.codehaus.modello.model.Model;
27+
28+
/**
29+
* Test for issue where "Root" cannot be used as a class name in JDOM writer.
30+
* The generated code would have a variable name conflict between the method parameter
31+
* and a local variable both named "root".
32+
*
33+
* @author Copilot
34+
*/
35+
public class RootClassnameJDOMGeneratorTest extends AbstractModelloJavaGeneratorTest {
36+
public RootClassnameJDOMGeneratorTest() {
37+
super("root-classname");
38+
}
39+
40+
public void testJavaGenerator() throws Throwable {
41+
ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
42+
43+
Model model = modello.loadModel(getXmlResourceReader("/root-classname.mdo"));
44+
45+
Map<String, Object> parameters = getModelloParameters("1.0.0");
46+
47+
modello.generate(model, "java", parameters);
48+
modello.generate(model, "jdom-writer", parameters);
49+
50+
addDependency("org.jdom", "jdom");
51+
compileGeneratedSources();
52+
53+
// If the code compiles successfully, the test passes
54+
// The compilation would fail if there was a variable name conflict
55+
}
56+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
~ Licensed to the Apache Software Foundation (ASF) under one
5+
~ or more contributor license agreements. See the NOTICE file
6+
~ distributed with this work for additional information
7+
~ regarding copyright ownership. The ASF licenses this file
8+
~ to you under the Apache License, Version 2.0 (the
9+
~ "License"); you may not use this file except in compliance
10+
~ with the License. You may obtain a copy of the License at
11+
~
12+
~ http://www.apache.org/licenses/LICENSE-2.0
13+
~
14+
~ Unless required by applicable law or agreed to in writing,
15+
~ software distributed under the License is distributed on an
16+
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17+
~ KIND, either express or implied. See the License for the
18+
~ specific language governing permissions and limitations
19+
~ under the License.
20+
-->
21+
22+
<model xmlns="http://codehaus-plexus.github.io/MODELLO/2.0.0"
23+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
24+
xsi:schemaLocation="http://codehaus-plexus.github.io/MODELLO/2.0.0 https://codehaus-plexus.github.io/modello/xsd/modello-2.0.0.xsd"
25+
xml.namespace="http://codehaus-plexus.github.io/ROOT-CLASSNAME/1.0.0">
26+
<id>root-classname</id>
27+
<name>RootClassname</name>
28+
<description>Test model for issue where Root cannot be used as a class name</description>
29+
<defaults>
30+
<default>
31+
<key>package</key>
32+
<value>org.codehaus.modello.generator.xml.rootclassname</value>
33+
</default>
34+
</defaults>
35+
<classes>
36+
<class rootElement="true" xml.tagName="root">
37+
<name>Root</name>
38+
<version>1.0.0+</version>
39+
<description>Root element class named Root to test variable naming conflict</description>
40+
<fields>
41+
<field>
42+
<name>name</name>
43+
<version>1.0.0+</version>
44+
<type>String</type>
45+
<description>Test field</description>
46+
</field>
47+
<field>
48+
<name>version</name>
49+
<version>1.0.0+</version>
50+
<type>String</type>
51+
<description>Another test field</description>
52+
</field>
53+
</fields>
54+
</class>
55+
</classes>
56+
</model>

0 commit comments

Comments
 (0)