1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.scxml2.model;
18
19 import org.apache.commons.logging.LogFactory;
20
21 import org.apache.commons.logging.Log;
22
23
24
25
26
27
28
29 public class CustomAction {
30
31
32
33
34
35 private static final String ERR_NO_NAMESPACE =
36 "Cannot define a custom SCXML action with a null or empty namespace";
37
38
39
40
41 private static final String NAMESPACE_SCXML =
42 "http://www.w3.org/2005/07/scxml";
43
44
45
46
47
48 private static final String ERR_RESERVED_NAMESPACE =
49 "Cannot define a custom SCXML action within the SCXML namespace '"
50 + NAMESPACE_SCXML + "'";
51
52
53
54
55
56 private static final String ERR_NO_LOCAL_NAME =
57 "Cannot define a custom SCXML action with a null or empty local name";
58
59
60
61
62
63 private static final String ERR_NOT_AN_ACTION =
64 "Custom SCXML action does not extend Action superclass";
65
66
67
68
69 private String namespaceURI;
70
71
72
73
74 private String localName;
75
76
77
78
79 private Class<? extends Action> actionClass;
80
81
82
83
84
85
86
87
88
89
90
91 public CustomAction(final String namespaceURI, final String localName,
92 final Class<? extends Action> actionClass) {
93 Log log = LogFactory.getLog(CustomAction.class);
94 if (namespaceURI == null || namespaceURI.trim().length() == 0) {
95 log.error(ERR_NO_NAMESPACE);
96 throw new IllegalArgumentException(ERR_NO_NAMESPACE);
97 }
98 if (namespaceURI.trim().equalsIgnoreCase(NAMESPACE_SCXML)) {
99 log.error(ERR_RESERVED_NAMESPACE);
100 throw new IllegalArgumentException(ERR_RESERVED_NAMESPACE);
101 }
102 if (localName == null || localName.trim().length() == 0) {
103 log.error(ERR_NO_LOCAL_NAME);
104 throw new IllegalArgumentException(ERR_NO_LOCAL_NAME);
105 }
106 if (actionClass == null || !Action.class.isAssignableFrom(actionClass)) {
107 log.error(ERR_NOT_AN_ACTION);
108 throw new IllegalArgumentException(ERR_NOT_AN_ACTION);
109 }
110 this.namespaceURI = namespaceURI;
111 this.localName = localName;
112 this.actionClass = actionClass;
113 }
114
115
116
117
118
119
120 public Class<? extends Action> getActionClass() {
121 return actionClass;
122 }
123
124
125
126
127
128
129 public String getLocalName() {
130 return localName;
131 }
132
133
134
135
136
137
138 public String getNamespaceURI() {
139 return namespaceURI;
140 }
141 }
142