    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *     http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.scxml.model;
    018
    019    import java.io.Serializable;
    020    import java.util.ArrayList;
    021    import java.util.HashMap;
    022    import java.util.List;
    023    import java.util.Map;
    024
    025    import org.apache.commons.scxml.PathResolver;
    026
    027    /**
    028     * The class in this SCXML object model that corresponds to the
    029     * <invoke> SCXML element.
    030     *
    031     */
    032    public class Invoke implements NamespacePrefixesHolder, PathResolverHolder,
    033            Serializable {
    034
    035        /**
    036         * Serial version UID.
    037         */
    038        private static final long serialVersionUID = 1L;
    039
    040        /**
    041         * The type of target to be invoked.
    042         */
    043        private String targettype;
    044
    045        /**
    046         * The source URL for the external service.
    047         */
    048        private String src;
    049
    050        /**
    051         * The expression that evaluates to the source URL for the
    052         * external service.
    053         */
    054        private String srcexpr;
    055
    056        /**
    057         * The Map of the params to be sent to the invoked process.
    058         *
    059         * Remove with deprecated getParams() in 1.0
    060         */
    061        private Map params;
    062
    063        /**
    064         * The List of the params to be sent to the invoked process.
    065         */
    066        private List paramsList;
    067
    068        /**
    069         * The <finalize> child, may be null.
    070         */
    071        private Finalize finalize;
    072
    073        /**
    074         * {@link PathResolver} for resolving the "src" or "srcexpr" result.
    075         */
    076        private PathResolver pathResolver;
    077
    078        /**
    079         * The current XML namespaces in the SCXML document for this action node,
    080         * preserved for deferred XPath evaluation.
    081         */
    082        private Map namespaces;
    083
    084        /**
    085         * Default no-args constructor for Digester.
    086         */
    087        public Invoke() {
    088            params = new HashMap();
    089            paramsList = new ArrayList();
    090        }
    091
    092        /**
    093         * Get the target type for this <invoke> element.
    094         *
    095         * @return String Returns the targettype.
    096         */
    097        public final String getTargettype() {
    098            return targettype;
    099        }
    100
    101        /**
    102         * Set the target type for this <invoke> element.
    103         *
    104         * @param targettype The targettype to set.
    105         */
    106        public final void setTargettype(final String targettype) {
    107            this.targettype = targettype;
    108        }
    109
    110        /**
    111         * Get the URL for the external service.
    112         *
    113         * @return String The URL.
    114         */
    115        public final String getSrc() {
    116            return src;
    117        }
    118
    119        /**
    120         * Set the URL for the external service.
    121         *
    122         * @param src The source URL.
    123         */
    124        public final void setSrc(final String src) {
    125            this.src = src;
    126        }
    127
    128        /**
    129         * Get the expression that evaluates to the source URL for the
    130         * external service.
    131         *
    132         * @return String The source expression.
    133         */
    134        public final String getSrcexpr() {
    135            return srcexpr;
    136        }
    137
    138        /**
    139         * Set the expression that evaluates to the source URL for the
    140         * external service.
    141         *
    142         * @param srcexpr The source expression.
    143         */
    144        public final void setSrcexpr(final String srcexpr) {
    145            this.srcexpr = srcexpr;
    146        }
    147
    148        /**
    149         * Get the params Map.
    150         *
    151         * @return Map The params map.
    152         * @deprecated Remove in v1.0, use params() instead
    153         */
    154        public final Map getParams() {
    155            return params;
    156        }
    157
    158        /**
    159         * Get the list of {@link Param}s.
    160         *
    161         * @return List The params list.
    162         */
    163        public final List params() {
    164            return paramsList;
    165        }
    166
    167        /**
    168         * Add this param to this invoke.
    169         *
    170         * @param param The invoke parameter.
    171         */
    172        public final void addParam(final Param param) {
    173            params.put(param.getName(), param.getExpr());
    174            paramsList.add(param);
    175        }
    176
    177        /**
    178         * Get the Finalize for this Invoke.
    179         *
    180         * @return Finalize The Finalize for this Invoke.
    181         */
    182        public final Finalize getFinalize() {
    183            return finalize;
    184        }
    185
    186        /**
    187         * Set the Finalize for this Invoke.
    188         *
    189         * @param finalize The Finalize for this Invoke.
    190         */
    191        public final void setFinalize(final Finalize finalize) {
    192            this.finalize = finalize;
    193        }
    194
    195        /**
    196         * Get the {@link PathResolver}.
    197         *
    198         * @return Returns the pathResolver.
    199         */
    200        public PathResolver getPathResolver() {
    201            return pathResolver;
    202        }
    203
    204        /**
    205         * Set the {@link PathResolver}.
    206         *
    207         * @param pathResolver The pathResolver to set.
    208         */
    209        public void setPathResolver(final PathResolver pathResolver) {
    210            this.pathResolver = pathResolver;
    211        }
    212
    213        /**
    214         * Get the XML namespaces at this action node in the SCXML document.
    215         *
    216         * @return Returns the map of namespaces.
    217         */
    218        public final Map getNamespaces() {
    219            return namespaces;
    220        }
    221
    222        /**
    223         * Set the XML namespaces at this action node in the SCXML document.
    224         *
    225         * @param namespaces The document namespaces.
    226         */
    227        public final void setNamespaces(final Map namespaces) {
    228            this.namespaces = namespaces;
    229        }
    230
    231    }
    232