EMMA Coverage Report (generated Tue Jan 14 02:29:45 CET 2014)
[all classes][org.jdtaus.core.container.ri.client]

COVERAGE SUMMARY FOR SOURCE FILE [ClassLoaderFactory.java]

nameclass, %method, %block, %line, %
ClassLoaderFactory.java100% (1/1)50%  (2/4)45%  (28/62)46%  (6.9/15)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ClassLoaderFactory100% (1/1)50%  (2/4)45%  (28/62)46%  (6.9/15)
ClassLoaderFactory (): void 0%   (0/1)0%   (0/3)0%   (0/1)
loadClass (Class, String): Class 0%   (0/1)0%   (0/20)0%   (0/5)
loadResources (Class, String): Enumeration 100% (1/1)47%  (9/19)60%  (3/5)
getClassLoader (Class): ClassLoader 100% (1/1)95%  (19/20)97%  (3.9/4)

1/*
2 *  jDTAUS Core RI Client Container
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
5 *
6 *  This library is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU Lesser General Public
8 *  License as published by the Free Software Foundation; either
9 *  version 2.1 of the License, or any later version.
10 *
11 *  This library is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 *  Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public
17 *  License along with this library; if not, write to the Free Software
18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.core.container.ri.client;
22 
23import java.io.IOException;
24import java.util.Enumeration;
25 
26/**
27 * Utility for loading classes.
28 *
29 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
30 * @version $JDTAUS: ClassLoaderFactory.java 8641 2012-09-27 06:45:17Z schulte $
31 */
32abstract class ClassLoaderFactory
33{
34 
35    /**
36     * Name of the system property controlling the use of the context
37     * classloader.
38     */
39    private static final String SYS_ENABLE_CONTEXT_CLASSLOADER =
40        "org.jdtaus.core.container.ClassLoaderFactory.enableContextClassloader";
41 
42    /**
43     * Loads a class.
44     * <p>This method tries to load the class named {@code className} using the
45     * current thread's context classloader, if that classloader is enabled and
46     * not {@code null}, or the classloader of the given class, if no context
47     * classloader is available or the context classloader is disabled. Use of
48     * the context classloader must be explicitly enabled by setting the system
49     * property {@code org.jdtaus.core.container.ClassLoaderFactory.enableContextClassloader}
50     * to {@code true}.</p>
51     *
52     * @param clazz The clazz whose classloader to use for loading classes, if
53     * no thread context classloader is available or if the thread context
54     * classloader is disabled.
55     * @param className The name of the class to load.
56     *
57     * @return The class with name {@code className}.
58     *
59     * @throws ClassNotFoundException if no class matching {@code className} was
60     * found.
61     * @throws NullPointerException if {@code clazz} or {@code className} is
62     * {@code null}.
63     */
64    static Class loadClass( final Class clazz,
65                            final String className )
66        throws ClassNotFoundException
67    {
68        if ( clazz == null )
69        {
70            throw new NullPointerException( "clazz" );
71        }
72        if ( className == null )
73        {
74            throw new NullPointerException( "className" );
75        }
76 
77        return Class.forName( className, true, getClassLoader( clazz ) );
78    }
79 
80    /**
81     * Loads resources.
82     * <p>This method tries to load resources matching {@code resourceName}
83     * using the current thread's context classloader, if that classloader is
84     * enabled and not {@code null}, or using the classloader of the given
85     * class, if the context classloader has been disabled. Use of the context
86     * classloader must be explicitly enabled by setting the system
87     * property {@code org.jdtaus.core.container.ClassLoaderFactory.enableContextClassloader}
88     * to {@code true}.</p>
89     *
90     * @param clazz The clazz whose classloader to use for loading classes, if
91     * no thread context classloader is available or if the thread context
92     * classloader is disabled.
93     * @param resourceName The name of the resources to load.
94     *
95     * @return All resources matching with name {@code resourceName}.
96     *
97     * @throws IOException if loading resources fails.
98     * @throws NullPointerException if {@code clazz} or {@code resourceName} is
99     * {@code null}.
100     */
101    static Enumeration loadResources( final Class clazz,
102                                      final String resourceName )
103        throws IOException
104    {
105        if ( clazz == null )
106        {
107            throw new NullPointerException( "clazz" );
108        }
109        if ( resourceName == null )
110        {
111            throw new NullPointerException( "resourceName" );
112        }
113 
114        return getClassLoader( clazz ).getResources( resourceName );
115    }
116 
117    private static ClassLoader getClassLoader( final Class clazz )
118    {
119        final ClassLoader classLoader;
120        if ( Boolean.getBoolean( SYS_ENABLE_CONTEXT_CLASSLOADER ) &&
121             Thread.currentThread().getContextClassLoader() != null )
122        {
123            classLoader = Thread.currentThread().getContextClassLoader();
124        }
125        else
126        {
127            classLoader = clazz.getClassLoader() != null
128                          ? clazz.getClassLoader()
129                          : ClassLoader.getSystemClassLoader();
130 
131        }
132 
133        return classLoader;
134    }
135 
136}

[all classes][org.jdtaus.core.container.ri.client]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov