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 java.util.concurrent.RejectedExecutionHandler;
020    import java.util.concurrent.TimeUnit;
021    import javax.xml.bind.annotation.XmlAccessType;
022    import javax.xml.bind.annotation.XmlAccessorType;
023    import javax.xml.bind.annotation.XmlAttribute;
024    import javax.xml.bind.annotation.XmlRootElement;
025    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
026    
027    import org.apache.camel.ThreadPoolRejectedPolicy;
028    import org.apache.camel.builder.xml.TimeUnitAdapter;
029    
030    /**
031     * Represents an XML <threadPoolProfile/> element
032     *
033     * @version 
034     */
035    @XmlRootElement(name = "threadPoolProfile")
036    @XmlAccessorType(XmlAccessType.FIELD)
037    public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<ThreadPoolProfileDefinition> {
038        @XmlAttribute
039        private Boolean defaultProfile;
040        @XmlAttribute
041        private String poolSize;
042        @XmlAttribute
043        private String maxPoolSize;
044        @XmlAttribute
045        private String keepAliveTime;
046        @XmlJavaTypeAdapter(TimeUnitAdapter.class)
047        private TimeUnit timeUnit;
048        @XmlAttribute
049        private String maxQueueSize;
050        @XmlAttribute
051        private ThreadPoolRejectedPolicy rejectedPolicy;
052    
053        public ThreadPoolProfileDefinition() {
054        }
055    
056        public ThreadPoolProfileDefinition poolSize(int poolSize) {
057            return poolSize("" + poolSize);
058        }
059    
060        public ThreadPoolProfileDefinition poolSize(String poolSize) {
061            setPoolSize(poolSize);
062            return this;
063        }
064    
065        public ThreadPoolProfileDefinition maxPoolSize(int maxPoolSize) {
066            return maxPoolSize("" + maxQueueSize);
067        }
068    
069        public ThreadPoolProfileDefinition maxPoolSize(String maxPoolSize) {
070            setMaxPoolSize("" + maxPoolSize);
071            return this;
072        }
073    
074        public ThreadPoolProfileDefinition keepAliveTime(long keepAliveTime) {
075            return keepAliveTime("" + keepAliveTime);
076        }
077    
078        public ThreadPoolProfileDefinition keepAliveTime(String keepAliveTime) {
079            setKeepAliveTime("" + keepAliveTime);
080            return this;
081        }
082    
083        public ThreadPoolProfileDefinition timeUnit(TimeUnit timeUnit) {
084            setTimeUnit(timeUnit);
085            return this;
086        }
087    
088        public ThreadPoolProfileDefinition maxQueueSize(int maxQueueSize) {
089            return maxQueueSize("" + maxQueueSize);
090        }
091    
092        public ThreadPoolProfileDefinition maxQueueSize(String maxQueueSize) {
093            setMaxQueueSize("" + maxQueueSize);
094            return this;
095        }
096    
097        public ThreadPoolProfileDefinition rejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) {
098            setRejectedPolicy(rejectedPolicy);
099            return this;
100        }
101    
102        public Boolean getDefaultProfile() {
103            return defaultProfile;
104        }
105    
106        public void setDefaultProfile(Boolean defaultProfile) {
107            this.defaultProfile = defaultProfile;
108        }
109    
110        public Boolean isDefaultProfile() {
111            return defaultProfile != null && defaultProfile;
112        }
113    
114        public String getPoolSize() {
115            return poolSize;
116        }
117    
118        public void setPoolSize(String poolSize) {
119            this.poolSize = poolSize;
120        }
121    
122        public String getMaxPoolSize() {
123            return maxPoolSize;
124        }
125    
126        public void setMaxPoolSize(String maxPoolSize) {
127            this.maxPoolSize = maxPoolSize;
128        }
129    
130        public String getKeepAliveTime() {
131            return keepAliveTime;
132        }
133    
134        public void setKeepAliveTime(String keepAliveTime) {
135            this.keepAliveTime = keepAliveTime;
136        }
137    
138        public String getMaxQueueSize() {
139            return maxQueueSize;
140        }
141    
142        public void setMaxQueueSize(String maxQueueSize) {
143            this.maxQueueSize = maxQueueSize;
144        }
145    
146        public TimeUnit getTimeUnit() {
147            return timeUnit;
148        }
149    
150        public void setTimeUnit(TimeUnit timeUnit) {
151            this.timeUnit = timeUnit;
152        }
153    
154        public ThreadPoolRejectedPolicy getRejectedPolicy() {
155            return rejectedPolicy;
156        }
157    
158        public RejectedExecutionHandler getRejectedExecutionHandler() {
159            if (rejectedPolicy != null) {
160                return rejectedPolicy.asRejectedExecutionHandler();
161            }
162            return null;
163        }
164    
165        public void setRejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) {
166            this.rejectedPolicy = rejectedPolicy;
167        }
168    
169    }