1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring.parsers.processors;
12
13 import org.mule.config.spring.parsers.PreProcessor;
14 import org.mule.config.spring.parsers.assembly.configuration.PropertyConfiguration;
15 import org.mule.config.spring.util.SpringXMLUtils;
16
17 import java.util.Arrays;
18 import java.util.HashSet;
19 import java.util.Set;
20
21 import org.w3c.dom.Attr;
22 import org.w3c.dom.Element;
23 import org.w3c.dom.NamedNodeMap;
24
25
26
27
28
29
30 public class BlockAttribute implements PreProcessor
31 {
32
33 private Set disallowed;
34
35 public BlockAttribute(String disallowed)
36 {
37 this(new String[]{disallowed});
38 }
39
40 public BlockAttribute(String[] disallowed)
41 {
42 this.disallowed = new HashSet(Arrays.asList(disallowed));
43 }
44
45 public void preProcess(PropertyConfiguration config, Element element)
46 {
47 NamedNodeMap attributes = element.getAttributes();
48 for (int i = 0; i < attributes.getLength(); i++)
49 {
50 String alias = SpringXMLUtils.attributeName((Attr) attributes.item(i));
51 String name = config.translateName(alias);
52 if (disallowed.contains(name))
53 {
54 throw new BlockAttributeException("Attribute " + alias + " is not allowed here.");
55 }
56 }
57 }
58
59 public static class BlockAttributeException extends IllegalStateException
60 {
61
62 private BlockAttributeException(String message)
63 {
64 super(message);
65 }
66
67 }
68
69 }