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

COVERAGE SUMMARY FOR SOURCE FILE [IllegalTransactionException.java]

nameclass, %method, %block, %line, %
IllegalTransactionException.java100% (1/1)70%  (7/10)68%  (244/359)68%  (49.6/73)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class IllegalTransactionException100% (1/1)70%  (7/10)68%  (244/359)68%  (49.6/73)
addMessages (Messages): void 0%   (0/1)0%   (0/22)0%   (0/5)
addMessages (String, Messages): void 0%   (0/1)0%   (0/30)0%   (0/7)
getMessages (): Message [] 0%   (0/1)0%   (0/33)0%   (0/6)
getMessages (String): Message [] 100% (1/1)54%  (14/26)66%  (2.6/4)
addMessage (String, Message): void 100% (1/1)73%  (27/37)80%  (8/10)
internalString (): String 100% (1/1)95%  (141/149)93%  (26/28)
IllegalTransactionException (): void 100% (1/1)100% (8/8)100% (3/3)
addMessage (Message): void 100% (1/1)100% (5/5)100% (2/2)
getPropertyNames (): String [] 100% (1/1)100% (36/36)100% (7/7)
toString (): String 100% (1/1)100% (13/13)100% (1/1)

1/*
2 *  jDTAUS Banking SPI
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.dtaus.spi;
22 
23import java.util.ArrayList;
24import java.util.HashMap;
25import java.util.Iterator;
26import java.util.LinkedList;
27import java.util.List;
28import java.util.Locale;
29import java.util.Map;
30import org.jdtaus.banking.dtaus.Transaction;
31import org.jdtaus.core.text.Message;
32import org.jdtaus.core.text.Messages;
33 
34/**
35 * Gets thrown whenever an illegal transaction is passed to a method expecting a legal transaction.
36 * <p>Example: Throwing an {@code IllegalTransactionException}<br/><blockquote>
37 * <pre>
38 * IllegalTransactionException e = new IllegalTransactionException();
39 * e.addMessage(message);
40 * e.addMessage(Transaction.PROP_<i>XYZ</i>, message);
41 * throw e;</pre></blockquote></p>
42 *
43 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
44 * @version $JDTAUS: IllegalTransactionException.java 8661 2012-09-27 11:29:58Z schulte $
45 */
46public class IllegalTransactionException
47    extends org.jdtaus.banking.dtaus.IllegalTransactionException
48{
49 
50    /** Serial version UID for backwards compatibility with 1.0.x classes. */
51    private static final long serialVersionUID = -81649021330912822L;
52 
53    /** Creates a new {@code IllegalTransactionException} instance. */
54    public IllegalTransactionException()
55    {
56        super();
57    }
58 
59    /** Key to the list of messages not bound to any particular property. */
60    private static final String PROP_UNSPECIFIED = "org.jdtaus.banking.dtaus.Transaction";
61 
62    /**
63     * The messages describing the exception.
64     * @serial
65     */
66    private Map messages = new HashMap();
67 
68    /**
69     * Adds a message to the instance.
70     *
71     * @param message The message to add to the instance.
72     *
73     * @throws NullPointerException if {@code message} is {@code null}.
74     */
75    public void addMessage( final Message message )
76    {
77        this.addMessage( PROP_UNSPECIFIED, message );
78    }
79 
80    /**
81     * Adds messages to the instance.
82     *
83     * @param messages The messages to add to the instance.
84     *
85     * @throws NullPointerException if {@code messages} is {@code null}.
86     */
87    public final void addMessages( final Messages messages )
88    {
89        if ( messages == null )
90        {
91            throw new NullPointerException( "messages" );
92        }
93 
94        for ( int i = messages.size() - 1; i >= 0; i-- )
95        {
96            this.addMessage( messages.getMessage( i ) );
97        }
98    }
99 
100    /**
101     * Adds a message for a property to the instance.
102     *
103     * @param propertyName The name of a property {@code message} is bound to.
104     * @param message The message to add to the instance.
105     *
106     * @throws NullPointerException if either {@code message} or {@code propertyName} is {@code null}.
107     */
108    public void addMessage( final String propertyName, final Message message )
109    {
110        if ( propertyName == null )
111        {
112            throw new NullPointerException( "propertyName" );
113        }
114        if ( message == null )
115        {
116            throw new NullPointerException( "message" );
117        }
118 
119        List msgs = (List) this.messages.get( propertyName );
120        if ( msgs == null )
121        {
122            msgs = new LinkedList();
123            this.messages.put( propertyName, msgs );
124        }
125 
126        msgs.add( message );
127    }
128 
129    /**
130     * Adds messages bound to a property to the instance.
131     *
132     * @param propertyName The name of a property {@code messages} are bound to.
133     * @param messages The messages to add to the instance.
134     *
135     * @throws NullPointerException if either {@code messages} or {@code propertyName} is {@code null}.
136     */
137    public final void addMessages( final String propertyName, final Messages messages )
138    {
139        if ( propertyName == null )
140        {
141            throw new NullPointerException( "propertyName" );
142        }
143        if ( messages == null )
144        {
145            throw new NullPointerException( "messages" );
146        }
147 
148        for ( int i = messages.size() - 1; i >= 0; i-- )
149        {
150            this.addMessage( propertyName, messages.getMessage( i ) );
151        }
152    }
153 
154    /**
155     * Gets all messages describing the exception.
156     *
157     * @return An array of messages describing the exception or an empty array if the instance does not hold any
158     * messages.
159     */
160    public Message[] getMessages()
161    {
162        final List col = new LinkedList();
163        for ( Iterator it = this.messages.keySet().iterator(); it.hasNext(); )
164        {
165            final String propertyName = (String) it.next();
166            col.addAll( (List) this.messages.get( propertyName ) );
167        }
168 
169        return (Message[]) col.toArray( new Message[ col.size() ] );
170    }
171 
172    /**
173     * Gets messages bound to a property removing these messages from the instance.
174     *
175     * @param propertyName the name of a property to return any messages for.
176     *
177     * @return All messages bound to a property with name {@code propertyName} or an empty array if the instance does
178     * not hold messages for a property with name {@code propertyName}.
179     *
180     * @throws NullPointerException if {@code propertyName} is {@code null}.
181     */
182    public Message[] getMessages( final String propertyName )
183    {
184        if ( propertyName == null )
185        {
186            throw new NullPointerException( "propertyName" );
187        }
188 
189        final List msgs = (List) this.messages.remove( propertyName );
190        return msgs == null ? new Message[ 0 ] : (Message[]) msgs.toArray( new Message[ msgs.size() ] );
191    }
192 
193    /**
194     * Gets the names of all properties for which the exception holds messages.
195     *
196     * @return An array of the names of all properties for which the exception holds messages or an empty array if the
197     * exception does not hold any message bound to a property.
198     */
199    public String[] getPropertyNames()
200    {
201        final List names = new ArrayList( this.messages.size() );
202        for ( Iterator it = this.messages.keySet().iterator(); it.hasNext(); )
203        {
204            final String name = (String) it.next();
205            if ( !PROP_UNSPECIFIED.equals( name ) )
206            {
207                names.add( name );
208            }
209        }
210 
211        return (String[]) names.toArray( new String[ names.size() ] );
212    }
213 
214    /**
215     * Creates a string representing the messages of the instance.
216     *
217     * @return A string representing the messages of the instance.
218     */
219    private String internalString()
220    {
221        final StringBuffer buf = new StringBuffer( 200 ).append( '{' );
222        final String[] propertyNames = this.getPropertyNames();
223        final List unspecifiedMsgs = (List) this.messages.get( PROP_UNSPECIFIED );
224 
225        for ( int i = 0; i < propertyNames.length; i++ )
226        {
227            buf.append( propertyNames[i] ).append( "={" );
228 
229            int j = 0;
230            final List msgs = (List) this.messages.get( propertyNames[i] );
231            for ( Iterator it = msgs.iterator(); it.hasNext(); j++ )
232            {
233                final Message msg = (Message) it.next();
234                buf.append( "[" ).append( j ).append( "]=" ).append( msg.getText( Locale.getDefault() ) );
235                if ( it.hasNext() )
236                {
237                    buf.append( ", " );
238                }
239            }
240 
241            buf.append( '}' );
242 
243            if ( i + i < propertyNames.length )
244            {
245                buf.append( ", " );
246            }
247        }
248 
249        if ( unspecifiedMsgs != null && !unspecifiedMsgs.isEmpty() )
250        {
251            if ( propertyNames.length > 0 )
252            {
253                buf.append( ", " );
254            }
255 
256            buf.append( PROP_UNSPECIFIED ).append( "={" );
257 
258            int i = 0;
259            for ( Iterator it = unspecifiedMsgs.iterator(); it.hasNext(); i++ )
260            {
261                final Message msg = (Message) it.next();
262                buf.append( "[" ).append( i ).append( "]=" ).append( msg.getText( Locale.getDefault() ) );
263                if ( it.hasNext() )
264                {
265                    buf.append( ", " );
266                }
267            }
268 
269            buf.append( '}' );
270        }
271 
272        buf.append( '}' );
273        return buf.toString();
274    }
275 
276    /**
277     * Returns a string representation of the object.
278     *
279     * @return A string representation of the object.
280     */
281    public String toString()
282    {
283        return super.toString() + '\n' + this.internalString();
284    }
285 
286}

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