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

COVERAGE SUMMARY FOR SOURCE FILE [DefaultBankfileProvider.java]

nameclass, %method, %block, %line, %
DefaultBankfileProvider.java100% (1/1)71%  (10/14)59%  (138/233)65%  (30.4/47)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DefaultBankfileProvider100% (1/1)71%  (10/14)59%  (138/233)65%  (30.4/47)
DefaultBankfileProvider (ClassLoader, String, String): void 0%   (0/1)0%   (0/12)0%   (0/5)
getLocale (): Locale 0%   (0/1)0%   (0/6)0%   (0/1)
getLogger (): Logger 0%   (0/1)0%   (0/6)0%   (0/1)
getPropertiesNotFoundMessage (Locale, String): String 0%   (0/1)0%   (0/12)0%   (0/1)
getClassLoader (): ClassLoader 100% (1/1)39%  (9/23)43%  (3/7)
assertValidProperties (): void 100% (1/1)44%  (11/25)60%  (3/5)
getBankfile (int): URL 100% (1/1)61%  (31/51)77%  (4.6/6)
<static initializer> 100% (1/1)80%  (12/15)80%  (0.8/1)
getProperties (): Properties 100% (1/1)83%  (40/48)90%  (9/10)
DefaultBankfileProvider (): void 100% (1/1)100% (3/3)100% (2/2)
getClasspathLocation (): String 100% (1/1)100% (10/10)100% (3/3)
getDefaultClasspathLocation (): String 100% (1/1)100% (6/6)100% (1/1)
getDefaultPropertiesResourceName (): String 100% (1/1)100% (6/6)100% (1/1)
getPropertiesResourceName (): String 100% (1/1)100% (10/10)100% (3/3)

1/*
2 *  jDTAUS Banking RI Bankleitzahlenverzeichnis
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.blzdirectory;
22 
23import java.io.IOException;
24import java.net.URL;
25import java.util.Locale;
26import java.util.Properties;
27import org.jdtaus.core.container.ContainerFactory;
28import org.jdtaus.core.container.PropertyException;
29import org.jdtaus.core.logging.spi.Logger;
30 
31/**
32 * Default {@code BankfileProvider} implementation backed by a property file.
33 *
34 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
35 * @version $JDTAUS: DefaultBankfileProvider.java 8865 2014-01-10 17:13:42Z schulte $
36 *
37 * @see BankfileBankleitzahlenVerzeichnis
38 */
39public final class DefaultBankfileProvider extends AbstractPropertiesBankfileProvider
40{
41 
42    /** Class loader searched for resources. */
43    private ClassLoader classLoader;
44 
45    /** Location searched for resources. */
46    private String classpathLocation;
47 
48    /** Name of the properties resource. */
49    private String propertiesResourceName;
50 
51    /** Properties backing the instance. */
52    private Properties properties;
53 
54    /**
55     * Creates a new {@code ClasspathBankfileProvider} instance taking a class loader to search for resources,
56     * a location resources are searched at and the name of the properties resource backing the instance.
57     *
58     * @param classLoader Class loader to search for resources or {@code null}.
59     * @param classpathLocation Location to search resources at or {@code null}.
60     * @param propertiesResourceName Name of the properties resource backing the instance or {@code null}.
61     */
62    public DefaultBankfileProvider( final ClassLoader classLoader, final String classpathLocation,
63                                    final String propertiesResourceName )
64    {
65        super();
66        this.classLoader = classLoader;
67        this.classpathLocation = classpathLocation;
68        this.propertiesResourceName = propertiesResourceName;
69    }
70 
71    public URL getBankfile( final int index ) throws IOException
72    {
73        if ( index < 0 || index >= this.getBankfileCount() )
74        {
75            throw new IndexOutOfBoundsException( Integer.toString( index ) );
76        }
77 
78        final String resourceName = this.getClasspathLocation() + "/" + this.getBankfileLocation( index );
79        final URL resource = this.getClassLoader().getResource( resourceName );
80        assert resource != null : "Resource '" + resourceName + "' not found.";
81        return resource;
82    }
83 
84    /**
85     * Gets the class loader searched for resources.
86     * <p>This method returns either the current thread's context class loader or this classes class loader, if the
87     * current thread has no context class loader set. A custom class loader can be specified by using one of the
88     * constructors taking a class loader.</p>
89     *
90     * @return The class loader searched for resources.
91     */
92    public ClassLoader getClassLoader()
93    {
94        if ( this.classLoader == null )
95        {
96            if ( Thread.currentThread().getContextClassLoader() != null )
97            {
98                return Thread.currentThread().getContextClassLoader();
99            }
100 
101            this.classLoader = this.getClass().getClassLoader();
102            if ( this.classLoader == null )
103            {
104                this.classLoader = ClassLoader.getSystemClassLoader();
105            }
106        }
107 
108        return this.classLoader;
109    }
110 
111    /**
112     * Gets the classpath location searched for resources.
113     *
114     * @return The classpath location searched for resources.
115     */
116    public String getClasspathLocation()
117    {
118        if ( this.classpathLocation == null )
119        {
120            this.classpathLocation = this.getDefaultClasspathLocation();
121        }
122 
123        return this.classpathLocation;
124    }
125 
126    /**
127     * Gets the name of the properties resource backing the instance.
128     *
129     * @return The name of the properties resource backing the instance.
130     */
131    public String getPropertiesResourceName()
132    {
133        if ( this.propertiesResourceName == null )
134        {
135            this.propertiesResourceName = this.getDefaultPropertiesResourceName();
136        }
137 
138        return this.propertiesResourceName;
139    }
140 
141    /**
142     * Gets the properties backing the instance.
143     *
144     * @return The properties backing the instance.
145     *
146     * @throws IOException if loading the properties fails.
147     */
148    public Properties getProperties() throws IOException
149    {
150        if ( this.properties == null )
151        {
152            this.assertValidProperties();
153            final String propertiesLocation = this.getClasspathLocation() + "/" + this.getPropertiesResourceName();
154            final URL rsrc = this.getClassLoader().getResource( propertiesLocation );
155            final Properties p = new Properties();
156 
157            if ( rsrc != null )
158            {
159                p.load( rsrc.openStream() );
160            }
161            else
162            {
163                this.getLogger().info( this.getPropertiesNotFoundMessage( this.getLocale(), propertiesLocation ) );
164            }
165 
166            this.properties = p;
167        }
168 
169        return this.properties;
170    }
171 
172    /**
173     * Checks configured properties.
174     *
175     * @throws PropertyException if properties hold invalid values.
176     */
177    private void assertValidProperties()
178    {
179        if ( this.getClasspathLocation() == null )
180        {
181            throw new PropertyException( "classpathLocation", this.getClasspathLocation() );
182        }
183        if ( this.getPropertiesResourceName() == null || this.getPropertiesResourceName().length() <= 0 )
184        {
185            throw new PropertyException( "propertiesResourceName", this.getPropertiesResourceName() );
186        }
187    }
188 
189    //--Constructors------------------------------------------------------------
190 
191// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausConstructors
192    // This section is managed by jdtaus-container-mojo.
193 
194    /** Standard implementation constructor <code>org.jdtaus.banking.ri.blzdirectory.DefaultBankfileProvider</code>. */
195    public DefaultBankfileProvider()
196    {
197        super();
198    }
199 
200// </editor-fold>//GEN-END:jdtausConstructors
201 
202    //------------------------------------------------------------Constructors--
203    //--Dependencies------------------------------------------------------------
204 
205// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausDependencies
206    // This section is managed by jdtaus-container-mojo.
207 
208    /**
209     * Gets the configured <code>Logger</code> implementation.
210     *
211     * @return The configured <code>Logger</code> implementation.
212     */
213    private Logger getLogger()
214    {
215        return (Logger) ContainerFactory.getContainer().
216            getDependency( this, "Logger" );
217 
218    }
219 
220    /**
221     * Gets the configured <code>Locale</code> implementation.
222     *
223     * @return The configured <code>Locale</code> implementation.
224     */
225    private Locale getLocale()
226    {
227        return (Locale) ContainerFactory.getContainer().
228            getDependency( this, "Locale" );
229 
230    }
231 
232// </editor-fold>//GEN-END:jdtausDependencies
233 
234    //------------------------------------------------------------Dependencies--
235    //--Properties--------------------------------------------------------------
236 
237// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausProperties
238    // This section is managed by jdtaus-container-mojo.
239 
240    /**
241     * Gets the value of property <code>defaultPropertiesResourceName</code>.
242     *
243     * @return Default resource name of the classpath properties resource backing the implementation.
244     */
245    private java.lang.String getDefaultPropertiesResourceName()
246    {
247        return (java.lang.String) ContainerFactory.getContainer().
248            getProperty( this, "defaultPropertiesResourceName" );
249 
250    }
251 
252    /**
253     * Gets the value of property <code>defaultClasspathLocation</code>.
254     *
255     * @return Default classpath location of the resources backing the implementation.
256     */
257    private java.lang.String getDefaultClasspathLocation()
258    {
259        return (java.lang.String) ContainerFactory.getContainer().
260            getProperty( this, "defaultClasspathLocation" );
261 
262    }
263 
264// </editor-fold>//GEN-END:jdtausProperties
265 
266    //--------------------------------------------------------------Properties--
267    //--Messages----------------------------------------------------------------
268 
269// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausMessages
270    // This section is managed by jdtaus-container-mojo.
271 
272    /**
273     * Gets the text of message <code>propertiesNotFound</code>.
274     * <blockquote><pre>Properties Ressource ''{0}'' nicht gefunden - keine Bereitstellung von Klassenpfad-Bankleitzahlen-Dateien.</pre></blockquote>
275     * <blockquote><pre>Properties resource ''{0}'' not found - not providing classpath bankcode files.</pre></blockquote>
276     *
277     * @param locale The locale of the message instance to return.
278     * @param location format parameter.
279     *
280     * @return the text of message <code>propertiesNotFound</code>.
281     */
282    private String getPropertiesNotFoundMessage( final Locale locale,
283            final java.lang.String location )
284    {
285        return ContainerFactory.getContainer().
286            getMessage( this, "propertiesNotFound", locale,
287                new Object[]
288                {
289                    location
290                });
291 
292    }
293 
294// </editor-fold>//GEN-END:jdtausMessages
295 
296    //----------------------------------------------------------------Messages--
297}

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