commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ate Douma (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (SCXML-240) adding user-defined properties to the state model
Date Sun, 10 Dec 2017 21:46:00 GMT

     [ https://issues.apache.org/jira/browse/SCXML-240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ate Douma updated SCXML-240:
----------------------------
    Fix Version/s:     (was: 2.0)

> 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
>              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)

Mime
View raw message