1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package net.sf.aspect4log.conf;
18
19 import java.lang.reflect.InvocationTargetException;
20 import java.util.ArrayList;
21 import java.util.List;
22
23 import javax.xml.bind.annotation.XmlAccessType;
24 import javax.xml.bind.annotation.XmlAccessorType;
25 import javax.xml.bind.annotation.XmlAnyElement;
26 import javax.xml.bind.annotation.XmlAttribute;
27 import javax.xml.bind.annotation.XmlElement;
28 import javax.xml.bind.annotation.XmlRootElement;
29 import javax.xml.bind.annotation.XmlTransient;
30
31 import net.sf.aspect4log.text.CustomisableMessageBuilderFactory;
32 import net.sf.aspect4log.text.MessageBuilderFactory;
33
34 import org.apache.commons.beanutils.BeanUtils;
35 import org.w3c.dom.DOMException;
36 import org.w3c.dom.Element;
37
38
39
40
41
42
43
44 @XmlRootElement(name="aspect4logConfiguration")
45 @XmlAccessorType(XmlAccessType.PROPERTY)
46 public class LogFormatConfiguration {
47
48 private MessageBuilderFactory messageBuilderFactory = new CustomisableMessageBuilderFactory();
49
50 @XmlTransient
51 public void setMessageBuilderFactory(MessageBuilderFactory messageBuilderFactory) {
52 this.messageBuilderFactory = messageBuilderFactory;
53 }
54
55 public MessageBuilderFactory getMessageBuilderFactory() {
56 return messageBuilderFactory;
57 }
58
59 @XmlElement
60 public void setMessageBuilderFactoryConfiguration(MessageBuilderFactoryConfiguration messageBuilderFactoryConfiguration) throws InstantiationException, IllegalAccessException, InvocationTargetException, DOMException {
61 messageBuilderFactory = messageBuilderFactoryConfiguration.getClazz().newInstance();
62 for (Element element : messageBuilderFactoryConfiguration.getProperties()) {
63 BeanUtils.setProperty(messageBuilderFactory, element.getTagName(), element.getTextContent());
64 }
65 }
66 }
67
68 @XmlAccessorType(XmlAccessType.FIELD)
69 class MessageBuilderFactoryConfiguration {
70 @XmlAnyElement
71 private final List<Element> properties = new ArrayList<Element>();
72
73 @XmlAttribute(name = "class")
74 private Class<? extends MessageBuilderFactory> clazz;
75
76 protected List<Element> getProperties() {
77 return properties;
78 }
79
80 protected Class<? extends MessageBuilderFactory> getClazz() {
81 return clazz;
82 }
83
84 }