001    /*
002     * Copyright 1999-2001,2004 The Apache Software Foundation.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     * 
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */ 
016    
017    package org.apache.commons.workflow.core;
018    
019    
020    import org.apache.commons.workflow.Context;
021    import org.apache.commons.workflow.Descriptor;
022    import org.apache.commons.workflow.StepException;
023    import org.apache.commons.workflow.base.DescriptorStep;
024    
025    
026    /**
027     * <p>For each associated <code>Descriptor</code>, remove the corresponding
028     * Java object from our Context, in the order that descriptors are
029     * listed.</p>
030     *
031     * @version $Revision: 155475 $ $Date: 2005-02-26 13:31:11 +0000 (Sat, 26 Feb 2005) $
032     * @author Craig R. McClanahan
033     */
034    
035    public class RemoveStep extends DescriptorStep {
036    
037    
038        // ----------------------------------------------------------= Constructors
039    
040    
041        /**
042         * Construct a default instance of this Step.
043         */
044        public RemoveStep() {
045    
046            super();
047    
048        }
049    
050    
051        /**
052         * Construct an instance of this Step with the specified identifier.
053         *
054         * @param id Step identifier
055         */
056        public RemoveStep(String id) {
057    
058            super();
059            setId(id);
060    
061        }
062    
063    
064        /**
065         * Construct an instance of this Step with the specified identifier
066         * and associated Descriptor.
067         *
068         * @param id Step identifier
069         * @param descriptor Initial descriptor
070         */
071        public RemoveStep(String id, Descriptor descriptor) {
072    
073            super();
074            setId(id);
075            addDescriptor(descriptor);
076    
077        }
078    
079    
080        // --------------------------------------------------------- Public Methods
081    
082    
083        /**
084         * Perform the executable actions related to this Step, in the context of
085         * the specified Context.
086         *
087         * @param context The Context that is tracking our execution state
088         *
089         * @exception StepException if a processing error has occurred
090         */
091        public void execute(Context context) throws StepException {
092    
093            // Process all associated descriptors
094            Descriptor descriptors[] = findDescriptors();
095            for (int i = 0; i < descriptors.length; i++) {
096                descriptors[i].remove(context);
097            }
098    
099        }
100    
101    
102    }