Coverage Report - org.apache.commons.ognl.DefaultClassResolver
 
Classes in this File Line Coverage Branch Coverage Complexity
DefaultClassResolver
92%
13/14
100%
4/4
2.5
 
 1  
 package org.apache.commons.ognl;
 2  
 
 3  
 /*
 4  
  * Licensed to the Apache Software Foundation (ASF) under one
 5  
  * or more contributor license agreements.  See the NOTICE file
 6  
  * distributed with this work for additional information
 7  
  * regarding copyright ownership.  The ASF licenses this file
 8  
  * to you under the Apache License, Version 2.0 (the
 9  
  * "License"); you may not use this file except in compliance
 10  
  * with the License.  You may obtain a copy of the License at
 11  
  *
 12  
  *   http://www.apache.org/licenses/LICENSE-2.0
 13  
  *
 14  
  * Unless required by applicable law or agreed to in writing,
 15  
  * software distributed under the License is distributed on an
 16  
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 17  
  * KIND, either express or implied.  See the License for the
 18  
  * specific language governing permissions and limitations
 19  
  * under the License.
 20  
  */
 21  
 
 22  
 import java.util.HashMap;
 23  
 import java.util.Map;
 24  
 
 25  
 /**
 26  
  * Default class resolution. Uses ClassLoader.loadClass() to look up classes by name. It also looks in the "java.lang"
 27  
  * package
 28  
  * if the class named does not give a package specifier, allowing easier usage of these classes.
 29  
  *
 30  
  * @author Luke Blanshard (blanshlu@netscape.net)
 31  
  * @author Drew Davidson (drew@ognl.org)
 32  
  */
 33  1
 public class DefaultClassResolver
 34  
     implements ClassResolver
 35  
 {
 36  1
     private final Map<String, Class<?>> classes = new HashMap<String, Class<?>>( 101 );
 37  
 
 38  
     /**
 39  
      * Resolves a class for a given className
 40  
      *
 41  
      * @param className The name of the Class
 42  
      * @return The resulting Class object
 43  
      * @throws ClassNotFoundException If the class could not be found
 44  
      */
 45  
     public Class<?> classForName( String className )
 46  
         throws ClassNotFoundException
 47  
     {
 48  0
         return classForName( className, null );
 49  
     }
 50  
 
 51  
     /**
 52  
      * {@inheritDoc}
 53  
      */
 54  
     public Class<?> classForName( String className, Map<String, Object> unused )
 55  
         throws ClassNotFoundException
 56  
     {
 57  348
         Class<?> result = classes.get( className );
 58  
 
 59  348
         if ( result == null )
 60  
         {
 61  49
             ClassLoader classLoader = ClassLoader.getSystemClassLoader();
 62  
             try
 63  
             {
 64  49
                 result = classLoader.loadClass( className );
 65  
             }
 66  9
             catch ( ClassNotFoundException ex )
 67  
             {
 68  9
                 if ( className.indexOf( '.' ) == -1 )
 69  
                 {
 70  8
                     result = classLoader.loadClass( "java.lang." + className );
 71  8
                     classes.put( "java.lang." + className, result );
 72  
                 }
 73  40
             }
 74  49
             classes.put( className, result );
 75  
         }
 76  348
         return result;
 77  
     }
 78  
 }