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 */
017package org.apache.camel.model;
018
019import java.util.concurrent.RejectedExecutionHandler;
020import java.util.concurrent.TimeUnit;
021import javax.xml.bind.annotation.XmlAccessType;
022import javax.xml.bind.annotation.XmlAccessorType;
023import javax.xml.bind.annotation.XmlAttribute;
024import javax.xml.bind.annotation.XmlRootElement;
025import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
026
027import org.apache.camel.ThreadPoolRejectedPolicy;
028import 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)
037public 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    @Override
057    public String getLabel() {
058        return "ThreadPoolProfile " + getId();
059    }
060
061    public ThreadPoolProfileDefinition poolSize(int poolSize) {
062        return poolSize("" + poolSize);
063    }
064
065    public ThreadPoolProfileDefinition poolSize(String poolSize) {
066        setPoolSize(poolSize);
067        return this;
068    }
069
070    public ThreadPoolProfileDefinition maxPoolSize(int maxPoolSize) {
071        return maxPoolSize("" + maxQueueSize);
072    }
073
074    public ThreadPoolProfileDefinition maxPoolSize(String maxPoolSize) {
075        setMaxPoolSize("" + maxPoolSize);
076        return this;
077    }
078
079    public ThreadPoolProfileDefinition keepAliveTime(long keepAliveTime) {
080        return keepAliveTime("" + keepAliveTime);
081    }
082
083    public ThreadPoolProfileDefinition keepAliveTime(String keepAliveTime) {
084        setKeepAliveTime("" + keepAliveTime);
085        return this;
086    }
087
088    public ThreadPoolProfileDefinition timeUnit(TimeUnit timeUnit) {
089        setTimeUnit(timeUnit);
090        return this;
091    }
092
093    public ThreadPoolProfileDefinition maxQueueSize(int maxQueueSize) {
094        return maxQueueSize("" + maxQueueSize);
095    }
096
097    public ThreadPoolProfileDefinition maxQueueSize(String maxQueueSize) {
098        setMaxQueueSize("" + maxQueueSize);
099        return this;
100    }
101
102    public ThreadPoolProfileDefinition rejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) {
103        setRejectedPolicy(rejectedPolicy);
104        return this;
105    }
106
107    public Boolean getDefaultProfile() {
108        return defaultProfile;
109    }
110
111    public void setDefaultProfile(Boolean defaultProfile) {
112        this.defaultProfile = defaultProfile;
113    }
114
115    public Boolean isDefaultProfile() {
116        return defaultProfile != null && defaultProfile;
117    }
118
119    public String getPoolSize() {
120        return poolSize;
121    }
122
123    public void setPoolSize(String poolSize) {
124        this.poolSize = poolSize;
125    }
126
127    public String getMaxPoolSize() {
128        return maxPoolSize;
129    }
130
131    public void setMaxPoolSize(String maxPoolSize) {
132        this.maxPoolSize = maxPoolSize;
133    }
134
135    public String getKeepAliveTime() {
136        return keepAliveTime;
137    }
138
139    public void setKeepAliveTime(String keepAliveTime) {
140        this.keepAliveTime = keepAliveTime;
141    }
142
143    public String getMaxQueueSize() {
144        return maxQueueSize;
145    }
146
147    public void setMaxQueueSize(String maxQueueSize) {
148        this.maxQueueSize = maxQueueSize;
149    }
150
151    public TimeUnit getTimeUnit() {
152        return timeUnit;
153    }
154
155    public void setTimeUnit(TimeUnit timeUnit) {
156        this.timeUnit = timeUnit;
157    }
158
159    public ThreadPoolRejectedPolicy getRejectedPolicy() {
160        return rejectedPolicy;
161    }
162
163    public RejectedExecutionHandler getRejectedExecutionHandler() {
164        if (rejectedPolicy != null) {
165            return rejectedPolicy.asRejectedExecutionHandler();
166        }
167        return null;
168    }
169
170    public void setRejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) {
171        this.rejectedPolicy = rejectedPolicy;
172    }
173
174}