EMMA Coverage Report (generated Tue Dec 09 03:51:57 CET 2014)
[all classes][org.jdtaus.banking.ri.currencydir]

COVERAGE SUMMARY FOR SOURCE FILE [DefaultJaxpCurrenciesProvider.java]

nameclass, %method, %block, %line, %
DefaultJaxpCurrenciesProvider.java100% (1/1)67%  (6/9)62%  (65/105)57%  (17/30)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DefaultJaxpCurrenciesProvider100% (1/1)67%  (6/9)62%  (65/105)57%  (17/30)
DefaultJaxpCurrenciesProvider (ClassLoader): void 0%   (0/1)0%   (0/5)0%   (0/2)
DefaultJaxpCurrenciesProvider (String): void 0%   (0/1)0%   (0/5)0%   (0/2)
DefaultJaxpCurrenciesProvider (String, ClassLoader): void 0%   (0/1)0%   (0/9)0%   (0/4)
getClassLoader (): ClassLoader 100% (1/1)39%  (9/23)43%  (3/7)
assertValidProperties (): void 100% (1/1)53%  (8/15)67%  (2/3)
DefaultJaxpCurrenciesProvider (): void 100% (1/1)100% (3/3)100% (2/2)
getDefaultResourceName (): String 100% (1/1)100% (6/6)100% (1/1)
getResourceName (): String 100% (1/1)100% (10/10)100% (3/3)
getResources (): URL [] 100% (1/1)100% (29/29)100% (6/6)

1/*
2 *  jDTAUS Banking RI CurrencyDirectory
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.banking.ri.currencydir;
22 
23import java.io.IOException;
24import java.net.URL;
25import java.util.Collection;
26import java.util.Enumeration;
27import java.util.LinkedList;
28import org.jdtaus.core.container.ContainerFactory;
29import org.jdtaus.core.container.PropertyException;
30 
31/**
32 * Default {@code JaxpCurrenciesProvider} implementation.
33 * <p>This implementation provides resources by searching the classpath. Property {@code resourceName} holds the name of
34 * the resources to search and defaults to {@code META-INF/jdtaus/currencies.xml}.</p>
35 *
36 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
37 * @version $JDTAUS: DefaultJaxpCurrenciesProvider.java 8661 2012-09-27 11:29:58Z schulte $
38 *
39 * @see JaxpCurrencyDirectory
40 */
41public class DefaultJaxpCurrenciesProvider implements JaxpCurrenciesProvider
42{
43 
44    /** Class loader searched for resources. */
45    private ClassLoader classLoader;
46 
47    /** Name of the classpath resource to search. */
48    private String resourceName;
49 
50    /**
51     * Creates a new {@code ClasspathCurrenciesProvider} instance taking the name of the classpath resources to search.
52     *
53     * @param resourceName Name of the classpath resources to search.
54     */
55    public DefaultJaxpCurrenciesProvider( final String resourceName )
56    {
57        this( resourceName, null );
58    }
59 
60    /**
61     * Creates a new {@code ClasspathCurrenciesProvider} instance taking the class loader to search for resources.
62     *
63     * @param classLoader the class loader to search for resources.
64     */
65    public DefaultJaxpCurrenciesProvider( final ClassLoader classLoader )
66    {
67        this( null, classLoader );
68    }
69 
70    /**
71     * Creates a new {@code ClasspathCurrenciesProvider} instance taking the name of the classpath resources to search
72     * and the class loader to search for resources.
73     *
74     * @param resourceName Name of the classpath resources to search.
75     * @param classLoader The class loader to search for resources.
76     */
77    public DefaultJaxpCurrenciesProvider( final String resourceName, final ClassLoader classLoader )
78    {
79        this.resourceName = resourceName;
80        this.classLoader = classLoader;
81    }
82 
83    /**
84     * Gets the name of the classpath resource to search.
85     *
86     * @return The name of the classpath resource to search.
87     */
88    public String getResourceName()
89    {
90        if ( this.resourceName == null )
91        {
92            this.resourceName = this.getDefaultResourceName();
93        }
94 
95        return this.resourceName;
96    }
97 
98    /**
99     * Gets the class loader searched for resources.
100     * <p>This method returns either the current thread's context class loader or this classes class loader, if the
101     * current thread has no context class loader set. A custom class loader can be specified by using one of
102     * the constructors taking a class loader.</p>
103     *
104     * @return The class loader to search for resources.
105     */
106    public ClassLoader getClassLoader()
107    {
108        if ( this.classLoader == null )
109        {
110            if ( Thread.currentThread().getContextClassLoader() != null )
111            {
112                return Thread.currentThread().getContextClassLoader();
113            }
114 
115            this.classLoader = this.getClass().getClassLoader();
116            if ( this.classLoader == null )
117            {
118                this.classLoader = ClassLoader.getSystemClassLoader();
119            }
120        }
121 
122        return this.classLoader;
123    }
124 
125    public URL[] getResources() throws IOException
126    {
127        this.assertValidProperties();
128        final Collection col = new LinkedList();
129        final Enumeration en = this.getClassLoader().getResources( this.getResourceName() );
130 
131        while ( en.hasMoreElements() )
132        {
133            col.add( en.nextElement() );
134        }
135 
136        return (URL[]) col.toArray( new URL[ col.size() ] );
137    }
138 
139    /**
140     * Checks configured properties.
141     *
142     * @throws PropertyException if properties hold invalid values.
143     */
144    private void assertValidProperties()
145    {
146        if ( this.getResourceName() == null || this.getResourceName().length() <= 0 )
147        {
148            throw new PropertyException( "resourceName", this.getResourceName() );
149        }
150    }
151 
152    //--Constructors------------------------------------------------------------
153 
154// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausConstructors
155    // This section is managed by jdtaus-container-mojo.
156 
157    /** Standard implementation constructor <code>org.jdtaus.banking.ri.currencydir.DefaultJaxpCurrenciesProvider</code>. */
158    public DefaultJaxpCurrenciesProvider()
159    {
160        super();
161    }
162 
163// </editor-fold>//GEN-END:jdtausConstructors
164 
165    //------------------------------------------------------------Constructors--
166    //--Properties--------------------------------------------------------------
167 
168// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausProperties
169    // This section is managed by jdtaus-container-mojo.
170 
171    /**
172     * Gets the value of property <code>defaultResourceName</code>.
173     *
174     * @return Default name of the resources to provide.
175     */
176    private java.lang.String getDefaultResourceName()
177    {
178        return (java.lang.String) ContainerFactory.getContainer().
179            getProperty( this, "defaultResourceName" );
180 
181    }
182 
183// </editor-fold>//GEN-END:jdtausProperties
184 
185    //--------------------------------------------------------------Properties--
186}

[all classes][org.jdtaus.banking.ri.currencydir]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov