Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2012, Red Hat, Inc., and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * Licensed 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.jboss.weld.executor;
 
 import java.net.URL;
 
 
 public class ExecutorServicesFactory {
 
     public static final int DEFAULT_THREAD_POOL_SIZE = Runtime.getRuntime().availableProcessors();
    
Default keep-alive time in seconds
 
     public static final long DEFAULT_KEEP_ALIVE_TIME = 60;
     private static final String CONFIGURATION_FILE = "org.jboss.weld.executor.properties";
 
     private static final String THREAD_POOL_SIZE = "threadPoolSize";
     private static final String DEBUG = "threadPoolDebug";
     private static final String THREAD_POOL_TYPE = "threadPoolType";
     private static final String THREAD_POOL_KEEP_ALIVE_TIME = "threadPoolKeepAliveTime";
 
     private ExecutorServicesFactory() {
     }
 
     public static ExecutorServices create(ResourceLoader loader) {
         URL configuration = loader.getResource();
         Properties properties = null;
         if (configuration != null) {
             properties = loadProperties(configuration);
         }
 
         final int threadPoolSize = initIntValue(properties);
         final boolean debug = initBooleanValue(propertiesfalse);
 
         // do not create ExecutorServices by default if we do not have the "modifyThreadGroup" permission
         ThreadPoolType defaultType = Permissions.hasPermission(.) ? .
                 : .;
         final ThreadPoolType threadPoolType = initThreadPoolType(propertiesdefaultType);
         final long threadPoolKeepAliveTime = initLongValue(properties);
 
         if (debug) {
             return enableDebugMode(constructExecutorServices(threadPoolTypethreadPoolSizethreadPoolKeepAliveTime));
         } else {
             return constructExecutorServices(threadPoolTypethreadPoolSizethreadPoolKeepAliveTime);
         }
     }
 
     private static ExecutorServices constructExecutorServices(ThreadPoolType typeint threadPoolSizelong threadPoolKeepAliveTime) {
         switch (type) {
             case return null;
             case return new SingleThreadExecutorServices();
             case return new TimingOutFixedThreadPoolExecutorServices(threadPoolSizethreadPoolKeepAliveTime);
             defaultreturn new FixedThreadPoolExecutorServices(threadPoolSize);
         }
     }
 
     private static ExecutorServices enableDebugMode(ExecutorServices executor) {
         if (executor == null) {
             return executor;
         }
         return new ProfilingExecutorServices(executor);
     }
 
     private static Properties loadProperties(URL url) {
         Properties properties = new Properties();
         try {
             properties.load(url.openStream());
         } catch (IOException e) {
             throw new ResourceLoadingException(e);
         }
         return properties;
     }
 
     private static int initIntValue(Properties propertiesString propertyint defaultValue) {
         if (properties == null || properties.get(property) == null) {
             return defaultValue;
         }
         String value = properties.getProperty(property);
        try {
            return Integer.parseInt(value);
        } catch (NumberFormatException e) {
            throw ..invalidThreadPoolSize(value);
        }
    }
    private static long initLongValue(Properties propertiesString propertylong defaultValue) {
        if (properties == null || properties.get(property) == null) {
            return defaultValue;
        }
        String value = properties.getProperty(property);
        try {
            return Long.parseLong(value);
        } catch (NumberFormatException e) {
            throw ..invalidPropertyValue(propertyvalue);
        }
    }
    private static boolean initBooleanValue(Properties propertiesString propertyboolean defaultValue) {
        if (properties == null || properties.get(property) == null) {
            return defaultValue;
        }
        return Boolean.parseBoolean(properties.getProperty(property));
    }
    private static ThreadPoolType initThreadPoolType(Properties propertiesString propertyThreadPoolType defaultValue) {
        if (properties == null || properties.get(property) == null) {
            return defaultValue;
        }
        String value = properties.getProperty(property);
        try {
            return ThreadPoolType.valueOf(value);
        } catch (Exception e) {
            throw ..invalidThreadPoolType(value);
        }
    }

    

Author(s):
Martin Kouba
    public enum ThreadPoolType {
        FIXED, FIXED_TIMEOUT, NONE, SINGLE_THREAD ;
    }
New to GrepCode? Check out our FAQ X