Clover coverage report - Code Coverage for tapestry-contrib release 4.0-beta-8
Coverage timestamp: Sat Sep 24 2005 11:56:21 EDT
file stats: LOC: 104   Methods: 4
NCLOC: 62   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
AbstractTableDataModel.java 0% 0% 0% 0%
coverage
 1    // Copyright 2004, 2005 The Apache Software Foundation
 2    //
 3    // Licensed under the Apache License, Version 2.0 (the "License");
 4    // you may not use this file except in compliance with the License.
 5    // You may obtain a copy of the License at
 6    //
 7    // http://www.apache.org/licenses/LICENSE-2.0
 8    //
 9    // Unless required by applicable law or agreed to in writing, software
 10    // distributed under the License is distributed on an "AS IS" BASIS,
 11    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    // See the License for the specific language governing permissions and
 13    // limitations under the License.
 14   
 15    package org.apache.tapestry.contrib.table.model.common;
 16   
 17    import java.lang.ref.WeakReference;
 18    import java.util.ArrayList;
 19    import java.util.Iterator;
 20    import java.util.List;
 21   
 22    import org.apache.tapestry.contrib.table.model.CTableDataModelEvent;
 23    import org.apache.tapestry.contrib.table.model.ITableDataModel;
 24    import org.apache.tapestry.contrib.table.model.ITableDataModelListener;
 25   
 26    /**
 27    * An implementation of the listener support in the ITableDataModel interface
 28    *
 29    * @author mindbridge
 30    */
 31    public abstract class AbstractTableDataModel implements ITableDataModel
 32    {
 33    private List m_arrListeners;
 34   
 35  0 public AbstractTableDataModel()
 36    {
 37  0 m_arrListeners = new ArrayList();
 38    }
 39   
 40    /**
 41    * Method fireTableDataModelEvent.
 42    * Fires a change event to all listeners
 43    * @param objEvent the event to pass to the listeners
 44    */
 45  0 protected void fireTableDataModelEvent(CTableDataModelEvent objEvent)
 46    {
 47  0 synchronized (m_arrListeners) {
 48  0 List arrEmptyReferences = null;
 49   
 50  0 for (Iterator it = m_arrListeners.iterator(); it.hasNext();)
 51    {
 52  0 WeakReference objRef = (WeakReference) it.next();
 53  0 ITableDataModelListener objListener =
 54    (ITableDataModelListener) objRef.get();
 55  0 if (objListener != null)
 56  0 objListener.tableDataChanged(objEvent);
 57    else {
 58  0 if (arrEmptyReferences == null)
 59  0 arrEmptyReferences = new ArrayList();
 60  0 arrEmptyReferences.add(objRef);
 61    }
 62    }
 63   
 64  0 if (arrEmptyReferences != null)
 65  0 m_arrListeners.removeAll(arrEmptyReferences);
 66    }
 67    }
 68   
 69    /**
 70    * @see org.apache.tapestry.contrib.table.model.ITableDataModel#addTableDataModelListener(ITableDataModelListener)
 71    */
 72  0 public void addTableDataModelListener(ITableDataModelListener objListener)
 73    {
 74  0 synchronized (m_arrListeners) {
 75  0 m_arrListeners.add(new WeakReference(objListener));
 76    }
 77    }
 78   
 79    /**
 80    * @see org.apache.tapestry.contrib.table.model.ITableDataModel#removeTableDataModelListener(ITableDataModelListener)
 81    */
 82  0 public void removeTableDataModelListener(ITableDataModelListener objListener)
 83    {
 84  0 synchronized (m_arrListeners) {
 85  0 List arrEmptyReferences = null;
 86   
 87  0 for (Iterator it = m_arrListeners.iterator(); it.hasNext();)
 88    {
 89  0 WeakReference objRef = (WeakReference) it.next();
 90  0 ITableDataModelListener objStoredListener =
 91    (ITableDataModelListener) objRef.get();
 92  0 if (objListener == objStoredListener || objStoredListener == null) {
 93  0 if (arrEmptyReferences == null)
 94  0 arrEmptyReferences = new ArrayList();
 95  0 arrEmptyReferences.add(objRef);
 96    }
 97    }
 98   
 99  0 if (arrEmptyReferences != null)
 100  0 m_arrListeners.removeAll(arrEmptyReferences);
 101    }
 102    }
 103   
 104    }