001    /*
002     * Copyright © 2008, 2009 Pedro Agulló Soliveres.
003     * 
004     * This file is part of DirectJNgine.
005     *
006     * DirectJNgine is free software: you can redistribute it and/or modify
007     * it under the terms of the GNU General Public License as published by
008     * the Free Software Foundation, either version 3 of the License.
009     *
010     * Commercial use is permitted to the extent that the code/component(s)
011     * do NOT become part of another Open Source or Commercially developed
012     * licensed development library or toolkit without explicit permission.
013     *
014     * DirectJNgine is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017     * GNU General Public License for more details.
018     *
019     * You should have received a copy of the GNU General Public License
020     * along with DirectJNgine.  If not, see <http://www.gnu.org/licenses/>.
021     * 
022     * This software uses the ExtJs library (http://extjs.com), which is 
023     * distributed under the GPL v3 license (see http://extjs.com/license).
024     */
025    
026    package com.softwarementors.extjs.djn.servlet;
027    
028    import java.util.List;
029    
030    import com.softwarementors.extjs.djn.DirectJNgineException;
031    import com.softwarementors.extjs.djn.StringUtils;
032    import com.softwarementors.extjs.djn.gson.GsonBuilderConfigurator;
033    
034    public class ServletConfigurationException extends DirectJNgineException {
035      private ServletConfigurationException( String message ) {
036        super(message);
037        
038        assert !StringUtils.isEmpty(message);
039      }
040    
041      private ServletConfigurationException( String message, Throwable cause ) {
042        super(message, cause);
043        
044        assert !StringUtils.isEmpty(message);
045        assert cause != null;
046      }
047    
048      public static ServletConfigurationException forMissingRequiredConfigurationParameter(List<String> missingParameters) {
049        assert missingParameters != null;    
050        assert !missingParameters.isEmpty();
051        
052        String parameterNames = StringUtils.concatWithSeparator(missingParameters, ", ");
053        return new ServletConfigurationException( "The following servlet configuration parameters are missing: " + parameterNames + ". Please, check your servlet configuration in web.xml." );
054      }
055    
056      public static ServletConfigurationException forClassNotFound(String className, ClassNotFoundException cause) {
057        assert cause != null;
058        
059        return new ServletConfigurationException( "Unable to find class '" + className + "'", cause );
060      }
061    
062      public static ServletConfigurationException forGsonBuilderConfiguratorMustImplementGsonBuilderConfiguratorInterface(
063          String configuratorClassName) {
064        return new ServletConfigurationException( "The specified gson configurator class, '" + configuratorClassName + "', must implement the '" + GsonBuilderConfigurator.class + "' interface");
065      }
066    
067      public static ServletConfigurationException forRegistryConfiguratorMustImplementGsonBuilderConfiguratorInterface(
068          String registryConfiguratorClassName) {
069        return new ServletConfigurationException( "The specified registry configurator class, '" + registryConfiguratorClassName + "', must implement the '" + RegistryConfigurator.class + "' interface");
070      }
071      
072      public static ServletConfigurationException forParameterMustBeAnIntegerGreaterOrEqualToValue(String parameterName,
073          int result, int minValue) {
074        assert !StringUtils.isEmpty(parameterName);
075        
076        return new ServletConfigurationException( "Parameter, '" + parameterName + "' must be greater than or equal to '" + minValue + "'. It was '" + result + "'.");
077      }
078    
079      public static ServletConfigurationException forParameterMustBeAValidInteger(String parameterName, String resultString) {
080        assert !StringUtils.isEmpty(parameterName);
081        assert !StringUtils.isEmpty(resultString);
082        
083        return new ServletConfigurationException( "Parameter, '" + parameterName + "' must be a valid integer. It was '" +resultString + "'.");
084      }
085    
086      public static ServletConfigurationException forMaxThreadPoolSizeMustBeEqualOrGreaterThanMinThreadPoolSize(
087          int batchRequestsMinThreadsPoolSize, int batchRequestsMaxThreadsPoolSize) {
088        return new ServletConfigurationException( "The maximum batch request pool ('" + DirectJNgineServlet.GlobalParameters.BATCH_REQUESTS_MAX_THREADS_POOOL_SIZE +"') size was " + batchRequestsMaxThreadsPoolSize + 
089            ". It must be greater or equal to the minimum request pool size ('" + DirectJNgineServlet.GlobalParameters.BATCH_REQUESTS_MIN_THREADS_POOOL_SIZE +"'), which was " + batchRequestsMinThreadsPoolSize);
090      }
091    
092    }