blob: b2e6ecafcdd0883f8b9896c95c08b775f63b6a46 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.impl;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext;
import org.apache.camel.spi.ExecutorServiceStrategy;
import org.apache.camel.spi.ThreadPoolProfile;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.concurrent.SynchronousExecutorService;
/**
* @deprecated use {@link org.apache.camel.spi.ExecutorServiceManager} instead, will be removed in a future Camel release
*/
@Deprecated
public class DefaultExecutorServiceStrategy extends ServiceSupport implements ExecutorServiceStrategy {
// delegate to ExecutorServiceManager
private final CamelContext camelContext;
public DefaultExecutorServiceStrategy(CamelContext camelContext) {
this.camelContext = camelContext;
}
public void registerThreadPoolProfile(ThreadPoolProfile profile) {
camelContext.getExecutorServiceManager().registerThreadPoolProfile(profile);
}
public ThreadPoolProfile getThreadPoolProfile(String id) {
return camelContext.getExecutorServiceManager().getThreadPoolProfile(id);
}
public ThreadPoolProfile getDefaultThreadPoolProfile() {
return camelContext.getExecutorServiceManager().getDefaultThreadPoolProfile();
}
public void setDefaultThreadPoolProfile(ThreadPoolProfile defaultThreadPoolProfile) {
camelContext.getExecutorServiceManager().setDefaultThreadPoolProfile(defaultThreadPoolProfile);
}
public String getThreadName(String name) {
return camelContext.getExecutorServiceManager().resolveThreadName(name);
}
public String getThreadNamePattern() {
return camelContext.getExecutorServiceManager().getThreadNamePattern();
}
public void setThreadNamePattern(String pattern) throws IllegalArgumentException {
camelContext.getExecutorServiceManager().setThreadNamePattern(pattern);
}
public ExecutorService lookup(Object source, String name, String executorServiceRef) {
ExecutorService answer = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ExecutorService.class);
if (answer == null) {
// try to see if we got a thread pool profile with that id
answer = newThreadPool(source, name, executorServiceRef);
}
return answer;
}
public ScheduledExecutorService lookupScheduled(Object source, String name, String executorServiceRef) {
ScheduledExecutorService answer = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
if (answer == null) {
ThreadPoolProfile profile = getThreadPoolProfile(executorServiceRef);
if (profile != null) {
Integer poolSize = profile.getPoolSize();
if (poolSize == null) {
poolSize = getDefaultThreadPoolProfile().getPoolSize();
}
answer = newScheduledThreadPool(source, name, poolSize);
}
}
return answer;
}
public ExecutorService newDefaultThreadPool(Object source, String name) {
return camelContext.getExecutorServiceManager().newDefaultThreadPool(source, name);
}
public ExecutorService newThreadPool(Object source, String name, String threadPoolProfileId) {
return camelContext.getExecutorServiceManager().newThreadPool(source, name, threadPoolProfileId);
}
public ExecutorService newCachedThreadPool(Object source, String name) {
return camelContext.getExecutorServiceManager().newCachedThreadPool(source, name);
}
public ScheduledExecutorService newScheduledThreadPool(Object source, String name, int poolSize) {
return camelContext.getExecutorServiceManager().newScheduledThreadPool(source, name, poolSize);
}
public ScheduledExecutorService newScheduledThreadPool(Object source, String name) {
return camelContext.getExecutorServiceManager().newDefaultScheduledThreadPool(source, name);
}
public ExecutorService newFixedThreadPool(Object source, String name, int poolSize) {
return camelContext.getExecutorServiceManager().newFixedThreadPool(source, name, poolSize);
}
public ExecutorService newSingleThreadExecutor(Object source, String name) {
return camelContext.getExecutorServiceManager().newSingleThreadExecutor(source, name);
}
public ExecutorService newSynchronousThreadPool(Object source, String name) {
return new SynchronousExecutorService();
}
public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize) {
return camelContext.getExecutorServiceManager().newThreadPool(source, name, corePoolSize, maxPoolSize);
}
public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize, int maxQueueSize) {
// use a profile with the settings
ThreadPoolProfile profile = new ThreadPoolProfile();
profile.setPoolSize(corePoolSize);
profile.setMaxPoolSize(maxPoolSize);
profile.setMaxQueueSize(maxQueueSize);
return camelContext.getExecutorServiceManager().newThreadPool(source, name, profile);
}
public ExecutorService newThreadPool(Object source, String name, int corePoolSize, int maxPoolSize,
long keepAliveTime, TimeUnit timeUnit, int maxQueueSize,
RejectedExecutionHandler rejectedExecutionHandler, boolean daemon) {
// use a profile with the settings
ThreadPoolProfile profile = new ThreadPoolProfile();
profile.setPoolSize(corePoolSize);
profile.setMaxPoolSize(maxPoolSize);
profile.setMaxQueueSize(maxQueueSize);
profile.setKeepAliveTime(keepAliveTime);
profile.setTimeUnit(timeUnit);
// must cast to ThreadPoolExecutor to be able to set the rejected execution handler
ThreadPoolExecutor answer = (ThreadPoolExecutor) camelContext.getExecutorServiceManager().newThreadPool(source, name, profile);
answer.setRejectedExecutionHandler(rejectedExecutionHandler);
return answer;
}
public void shutdown(ExecutorService executorService) {
camelContext.getExecutorServiceManager().shutdown(executorService);
}
public List<Runnable> shutdownNow(ExecutorService executorService) {
return camelContext.getExecutorServiceManager().shutdownNow(executorService);
}
protected void doStart() throws Exception {
// noop
}
protected void doStop() throws Exception {
// noop
}
}