Package com.acciente.induction.init

Source Code of com.acciente.induction.init.ClassLoaderInitializer

/*
* Copyright 2008-2011 Acciente, LLC
*
* Acciente, LLC 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 com.acciente.induction.init;

import com.acciente.commons.loader.JavaCompiledClassDefLoader;
import com.acciente.commons.loader.ReloadingClassLoader;
import com.acciente.induction.init.config.Config;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* Internal.
* This is helper class that focuses on setting up the primary classloader used
* by the dispatcher servlet.
*
* @created Mar 15, 2008
*
* @author Adinath Raveendra Raj
*/
public class ClassLoaderInitializer
{
   public static ClassLoader getClassLoader( Config.JavaClassPath oJavaClassPathConfig, ClassLoader oParentClassLoader )
      throws ClassNotFoundException
   {
      Log oLog;

      oLog = LogFactory.getLog( ClassLoaderInitializer.class );

      if ( oJavaClassPathConfig.getDirList().size() == 0 )
      {
         return oParentClassLoader;
      }
      else
      {
         ReloadingClassLoader oClassLoader = new ReloadingClassLoader( oParentClassLoader );

         // we will ignore any dependencies for classes in any of the following packages
         oClassLoader.addIgnoredClassNamePrefix( "java." );
         oClassLoader.addIgnoredClassNamePrefix( "javax." );
         oClassLoader.addIgnoredClassNamePrefix( "com.acciente." );

         // if there is a classpath defined setup a reloading classloader to handle the specified directories
         for ( int i = 0; i < oJavaClassPathConfig.getDirList().size(); i++ )
         {
            if ( oJavaClassPathConfig.getDirList().get( i ) instanceof Config.JavaClassPath.CompiledDir )
            {
               Config.JavaClassPath.CompiledDir oCompiledDir = ( Config.JavaClassPath.CompiledDir ) oJavaClassPathConfig.getDirList().get( i );

               oLog.info( "configuring reloading classloader for compiled classes in: " + oCompiledDir.getDir() );

               // set up a compiled class definition loader
               JavaCompiledClassDefLoader oJavaCompiledClassDefLoader = new JavaCompiledClassDefLoader();
               oJavaCompiledClassDefLoader.setCompiledDirectory( oCompiledDir.getDir() );
               oJavaCompiledClassDefLoader.setPackageNamePrefix( oCompiledDir.getPackageNamePrefix() );

               // add the class def loader to the search list
               oClassLoader.addClassDefLoader( oJavaCompiledClassDefLoader );
            }
         }

         return oClassLoader;
      }
   }
}

// EOF
TOP

Related Classes of com.acciente.induction.init.ClassLoaderInitializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.