Coverage Report - org.apache.maven.wagon.events.TransferEventSupport
 
Classes in this File Line Coverage Branch Coverage Complexity
TransferEventSupport
100 %
26/26
92 %
13/14
1,778
 
 1  
 package org.apache.maven.wagon.events;
 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.ArrayList;
 23  
 import java.util.List;
 24  
 
 25  
 /**
 26  
  * The class allows registration and removal of event listeners of type
 27  
  * TransferListener and dispatch of those events to those listeners
 28  
  *
 29  
  * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
 30  
  * @version $Id: TransferEventSupport.java 1212692 2011-12-09 23:38:53Z olamy $
 31  
  */
 32  50
 public final class TransferEventSupport
 33  
 {
 34  
 
 35  
     /**
 36  
      * registered listeners
 37  
      */
 38  50
     private final List<TransferListener> listeners = new ArrayList<TransferListener>();
 39  
 
 40  
     /**
 41  
      * Adds the listener to the collection of listeners
 42  
      * who will be notified when any transfer event occurs
 43  
      * in this <code>Wagon</code> object.
 44  
      * <br/>
 45  
      * If listener is <code>null</code>, no exception is thrown and no action is performed
 46  
      *
 47  
      * @param listener the transfer listener
 48  
      * @see #removeTransferListener(org.apache.maven.wagon.events.TransferListener)
 49  
      * @see TransferListener
 50  
      */
 51  
     public synchronized void addTransferListener( final TransferListener listener )
 52  
     {
 53  40
         if ( listener != null )
 54  
         {
 55  40
             listeners.add( listener );
 56  
         }
 57  40
     }
 58  
 
 59  
     /**
 60  
      * Removes the transfer listener from the collection of listeners so
 61  
      * it no longer receives transfer events.
 62  
      * <br/>
 63  
      * If listener is <code>null</code> or specified listener was not added
 64  
      * to this <code>TransferEventSupport</code> object
 65  
      * no exception is thrown and no action is performed
 66  
      *
 67  
      * @param listener the transfer listener
 68  
      * @see #addTransferListener(TransferListener)
 69  
      */
 70  
     public synchronized void removeTransferListener( final TransferListener listener )
 71  
     {
 72  3
         listeners.remove( listener );
 73  3
     }
 74  
 
 75  
     /**
 76  
      * Returns whether the specified instance of transfer
 77  
      * listener was added to the collection of listeners
 78  
      * who will be notified when an transfer event occurs
 79  
      *
 80  
      * @param listener the transfer listener
 81  
      * @return <code>true<code>
 82  
      *         if given listener was added to the collection of listeners
 83  
      *         <code>false</code> otherwise
 84  
      * @see org.apache.maven.wagon.events.TransferEvent
 85  
      * @see #addTransferListener(TransferListener)
 86  
      */
 87  
     public synchronized boolean hasTransferListener( final TransferListener listener )
 88  
     {
 89  9
         return listeners.contains( listener );
 90  
     }
 91  
 
 92  
 
 93  
     /**
 94  
      * Dispatches the given <code>TransferEvent</code>
 95  
      * to all registered listeners (calls method {@link TransferListener#transferStarted(TransferEvent)} on all of
 96  
      * them}. The Event should be of type {@link TransferEvent#TRANSFER_COMPLETED}
 97  
      *
 98  
      * @param transferEvent the TransferEvent which will be dispatched to listeners
 99  
      */
 100  
     public synchronized void fireTransferStarted( final TransferEvent transferEvent )
 101  
     {
 102  13
         for ( TransferListener listener : listeners )
 103  
         {
 104  7
             listener.transferStarted( transferEvent );
 105  
         }
 106  13
     }
 107  
 
 108  
     /**
 109  
      * Dispatches the given <code>TransferEvent</code>
 110  
      * to all registered listeners (calls method {@link TransferListener#transferProgress(TransferEvent, byte[], int)}
 111  
      * on all of them). The Event should be of type {@link TransferEvent#TRANSFER_PROGRESS}.
 112  
      *
 113  
      * @param transferEvent the TransferEvent which will be dispatched to listeners
 114  
      * @param buffer        the buffer containing the additional content
 115  
      * @param length        the length of the content in the buffer
 116  
      */
 117  
     public synchronized void fireTransferProgress( final TransferEvent transferEvent, byte[] buffer, int length )
 118  
     {
 119  13
         for ( TransferListener listener : listeners )
 120  
         {
 121  9
             listener.transferProgress( transferEvent, buffer, length );
 122  
 
 123  
         }
 124  13
     }
 125  
 
 126  
     /**
 127  
      * Dispatches the given <code>TransferEvent</code>
 128  
      * to all registered listeners (calls method {@link TransferListener#transferCompleted(TransferEvent)} on all of
 129  
      * them}. The Event should be of type {@link TransferEvent#TRANSFER_COMPLETED}
 130  
      *
 131  
      * @param transferEvent the TransferEvent which will be dispatched to listeners
 132  
      */
 133  
     public synchronized void fireTransferCompleted( final TransferEvent transferEvent )
 134  
     {
 135  10
         for ( TransferListener listener : listeners )
 136  
         {
 137  4
             listener.transferCompleted( transferEvent );
 138  
 
 139  
         }
 140  10
     }
 141  
 
 142  
     /**
 143  
      * Dispatches the given <code>TransferEvent</code>
 144  
      * to all registered listeners (calls method {@link TransferListener#transferError(TransferEvent)}  on all of them.
 145  
      * The Event should be of type {@link TransferEvent#TRANSFER_ERROR} and it is expected that
 146  
      * {@link TransferEvent#getException()} } method will return not null value
 147  
      *
 148  
      * @param transferEvent the TransferEvent which will be dispatched to listeners
 149  
      */
 150  
     public synchronized void fireTransferError( final TransferEvent transferEvent )
 151  
     {
 152  11
         for ( TransferListener listener : listeners )
 153  
         {
 154  11
             listener.transferError( transferEvent );
 155  
 
 156  
         }
 157  11
     }
 158  
 
 159  
     /**
 160  
      * Dispatches the given debug message
 161  
      * to all registered listeners (calls method {@link TransferListener#debug(String)} on all of them.
 162  
      *
 163  
      * @param message the debug message which will be dispatched to listeners
 164  
      */
 165  
     public synchronized void fireDebug( final String message )
 166  
     {
 167  
 
 168  9
         for ( TransferListener listener : listeners )
 169  
         {
 170  8
             listener.debug( message );
 171  
 
 172  
         }
 173  9
     }
 174  
 
 175  
     /**
 176  
      * Dispatches the given <code>TransferEvent</code>
 177  
      * to all registered listeners (calls method {@link TransferListener#transferInitiated(TransferEvent)} on all of
 178  
      * them. The Event should be of type {@link TransferEvent#TRANSFER_INITIATED}.
 179  
      *
 180  
      * @param transferEvent the TransferEvent which will be dispatched to listeners
 181  
      */
 182  
     public synchronized void fireTransferInitiated( final TransferEvent transferEvent )
 183  
     {
 184  23
         for ( TransferListener listener : listeners )
 185  
         {
 186  11
             listener.transferInitiated( transferEvent );
 187  
         }
 188  23
     }
 189  
 }