1 package org.codehaus.modello.plugins.xml;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.util.List;
26
27 import org.codehaus.modello.ModelloRuntimeException;
28 import org.codehaus.modello.core.ModelloCore;
29 import org.codehaus.modello.metadata.MetadataPlugin;
30 import org.codehaus.modello.model.Model;
31 import org.codehaus.modello.model.ModelClass;
32 import org.codehaus.modello.model.ModelField;
33 import org.codehaus.modello.model.Version;
34 import org.codehaus.modello.plugins.xml.metadata.XmlFieldMetadata;
35 import org.codehaus.modello.plugins.xml.metadata.XmlMetadataPlugin;
36 import org.codehaus.plexus.ContainerConfiguration;
37 import org.codehaus.plexus.PlexusConstants;
38 import org.codehaus.plexus.PlexusTestCase;
39
40
41
42
43 public class XmlModelloPluginTest extends PlexusTestCase {
44 public void testConfiguration() throws Exception {
45 Object object = lookup(MetadataPlugin.ROLE, "xml");
46
47 assertNotNull(object);
48
49 assertTrue(object instanceof XmlMetadataPlugin);
50 }
51
52 public void testXmlPlugin() throws Exception {
53 ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
54
55 Model model = modello.loadModel(getTestFile("src/test/resources/model.mdo"));
56
57 List<ModelClass> classes = model.getClasses(new Version("4.0.0"));
58
59 assertEquals(2, classes.size());
60
61 ModelClass clazz = (ModelClass) classes.get(0);
62
63 assertEquals("Model", clazz.getName());
64
65 assertEquals(3, clazz.getFields(new Version("4.0.0")).size());
66
67 ModelField extend = clazz.getField("extend", new Version("4.0.0"));
68
69 assertTrue(extend.hasMetadata(XmlFieldMetadata.ID));
70
71 XmlFieldMetadata xml = (XmlFieldMetadata) extend.getMetadata(XmlFieldMetadata.ID);
72
73 assertNotNull(xml);
74
75 assertFalse(xml.isAttribute());
76
77 extend = clazz.getField("extend", new Version("4.1.0"));
78
79 assertTrue(extend.hasMetadata(XmlFieldMetadata.ID));
80
81 xml = (XmlFieldMetadata) extend.getMetadata(XmlFieldMetadata.ID);
82
83 assertNotNull(xml);
84
85 assertTrue(xml.isAttribute());
86
87 ModelField parent = clazz.getField("parent", new Version("4.0.0"));
88
89 try {
90 parent.getMetadata("foo");
91
92 fail("Expected ModelloException");
93 } catch (ModelloRuntimeException ex) {
94
95 }
96
97 ModelField builder = clazz.getField("builder", new Version("4.0.0"));
98
99 assertTrue(builder.hasMetadata(XmlFieldMetadata.ID));
100
101 xml = (XmlFieldMetadata) builder.getMetadata(XmlFieldMetadata.ID);
102
103 assertNotNull(xml);
104
105 assertEquals("build", xml.getTagName());
106
107 assertTrue(xml.isTrim());
108 }
109
110 @Override
111 protected void customizeContainerConfiguration(ContainerConfiguration configuration) {
112 configuration.setAutoWiring(true);
113 configuration.setClassPathScanning(PlexusConstants.SCANNING_INDEX);
114 }
115 }