1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package org.nuiton.eugene.models.object.reader;
24
25 import org.apache.commons.digester3.Digester;
26 import org.codehaus.plexus.component.annotations.Component;
27 import org.nuiton.eugene.ModelHelper;
28 import org.nuiton.eugene.ModelReader;
29 import org.nuiton.eugene.Template;
30 import org.nuiton.eugene.models.object.ObjectModel;
31 import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
32 import org.xml.sax.SAXException;
33
34 import java.io.File;
35 import java.io.IOException;
36
37
38
39
40
41
42
43 @Component(role = ModelReader.class, hint = "xmlobjectmodel")
44 public class XmlObjectModelReader extends AbstractObjectModelReader {
45
46 protected Digester digester;
47
48 @Override
49 public String getInputType() {
50 return ModelHelper.ModelInputType.XML.getAlias();
51 }
52
53 @Override
54 protected void beforeReadFile(File... files) {
55 super.beforeReadFile(files);
56 digester = new Digester();
57 digester.addRuleSet(new DigesterObjectModelRuleSet());
58 }
59
60 @Override
61 protected void readFileToModel(File file, ObjectModel model) throws IOException {
62 try {
63 digester.push(model);
64 digester.parse(file);
65 } catch (SAXException e) {
66 throw new IOException("Unable to parse ObjectModel input file : " + file, e);
67 }
68 }
69
70 }