[
https://issues.apache.org/jira/browse/SCXML-240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ate Douma updated SCXML-240:
----------------------------
Priority: Minor (was: Major)
> adding user-defined properties to the state model
> -------------------------------------------------
>
> Key: SCXML-240
> URL: https://issues.apache.org/jira/browse/SCXML-240
> Project: Commons SCXML
> Issue Type: Improvement
> Affects Versions: 2.0
> Reporter: Jacob Saoumi
> Priority: Minor
> Labels: patch
>
> Hello,
> I need to extend the state model to have user-defined properties. For example:
> <state id="xy" cs:type="myStateType"></state>
> The solution is to easy. Add the following methods to the
> org.apache.commons.scxml2.model.State class:
> /**
> * set a user-defined property with the given {@code name}
> *
> * @param name
> * the name of the user-defined propery
> * @param value
> * the value of the property
> */
> public final synchronized void setProperty(String name, String value)
> {
> if (this.extendProperties == null) {
> this.extendProperties = new HashMap<String, String>();
> }
> this.extendProperties.put(name, value);
> }
> /**
> *
> * @param name
> * the name of the user-defined propery
> * @return the value of the property with the given {@code name}
> */
> public final String getProperty(String name)
> {
> return extendProperties == null ? null : extendProperties.get(name);
> }
> /**
> *
> * @return a set of user-defined properties names
> */
> public final Set<String> getPropertyNames()
> {
> return extendProperties == null ? null : extendProperties.keySet();
> }
> /**
> *
> * @return the count of the user-defined properties
> */
> public final int getPropertyCount()
> {
> return extendProperties == null ? 0 : extendProperties.size();
> }
> and extend the readState method of the SCXMLReader to read this properties
> from xml:
> // reading user-defined properties
> int attrCount = reader.getAttributeCount();
> for (int i = 0; i < attrCount; i++) {
> QName attrName = reader.getAttributeName(i);
> String prefix = nullIfEmpty(attrName.getPrefix());
> String localPart = attrName.getLocalPart();
> if (prefix != null) {
> localPart = prefix + ":" + localPart;
> }
> if (ATTR_SRC.equals(localPart) || TTR_INITIAL.equals(localPart)
> || ATTR_ID.equals(localPart)) {
> continue;
> }
> state.setProperty(localPart, reader.getAttributeValue(i));
> }
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)