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.camel.model;
018    
019    import javax.xml.bind.annotation.XmlAccessType;
020    import javax.xml.bind.annotation.XmlAccessorType;
021    import javax.xml.bind.annotation.XmlAttribute;
022    import javax.xml.bind.annotation.XmlRootElement;
023    import javax.xml.bind.annotation.XmlTransient;
024    
025    import org.apache.camel.ExchangePattern;
026    import org.apache.camel.Processor;
027    import org.apache.camel.processor.ExchangePatternProcessor;
028    import org.apache.camel.spi.RouteContext;
029    
030    /**
031     * Represents an XML <setExchangePattern/> element
032     *
033     * @version 
034     */
035    @XmlRootElement(name = "setExchangePattern")
036    @XmlAccessorType(XmlAccessType.FIELD)
037    public class SetExchangePatternDefinition extends NoOutputDefinition<SetExchangePatternDefinition> {
038        @XmlAttribute(required = true)
039        private ExchangePattern pattern;
040        @XmlTransient
041        private ExchangePatternProcessor processor;
042        
043        public SetExchangePatternDefinition() {
044        }
045    
046        public SetExchangePatternDefinition(ExchangePattern pattern) {
047            this.pattern = pattern;
048        }
049    
050        public SetExchangePatternDefinition pattern(ExchangePattern pattern) {
051            setPattern(pattern);
052            return this;
053        }
054    
055        public ExchangePattern getPattern() {
056            return pattern;
057        }
058    
059        public void setPattern(ExchangePattern pattern) {
060            this.pattern = pattern;
061        }
062    
063        @Override
064        public String getShortName() {
065            return "setExchangePattern";
066        }
067    
068        @Override
069        public String toString() {
070            return "setExchangePattern[pattern: " + pattern + "]";
071        }
072    
073        @Override
074        public String getLabel() {
075            return "setExchangePattern[" + pattern + "]";
076        }
077       
078        @Override
079        public Processor createProcessor(RouteContext routeContext) {
080            if (processor == null) {
081                processor = new ExchangePatternProcessor(getPattern());
082            }
083            return processor;
084        }
085    
086    }