EMMA Coverage Report (generated Wed Jun 08 12:10:57 KST 2005)
[all classes][org.apache.mina.util]

COVERAGE SUMMARY FOR SOURCE FILE [BlockingSet.java]

nameclass, %method, %block, %line, %
BlockingSet.java100% (1/1)80%  (4/5)93%  (51/55)93%  (14/15)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class BlockingSet100% (1/1)80%  (4/5)93%  (51/55)93%  (14/15)
remove (Object): boolean 0%   (0/1)0%   (0/4)0%   (0/1)
BlockingSet (): void 100% (1/1)100% (6/6)100% (2/2)
add (Object): boolean 100% (1/1)100% (13/13)100% (4/4)
iterator (): Iterator 100% (1/1)100% (3/3)100% (1/1)
waitForNewItem (): void 100% (1/1)100% (29/29)100% (7/7)

1/*
2 *   @(#) $Id: BlockingSet.java 151503 2005-02-05 15:32:32Z trustin $
3 *
4 *   Copyright 2004 The Apache Software Foundation
5 *
6 *   Licensed under the Apache License, Version 2.0 (the "License");
7 *   you may not use this file except in compliance with the License.
8 *   You may obtain a copy of the License at
9 *
10 *       http://www.apache.org/licenses/LICENSE-2.0
11 *
12 *   Unless required by applicable law or agreed to in writing, software
13 *   distributed under the License is distributed on an "AS IS" BASIS,
14 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 *   See the License for the specific language governing permissions and
16 *   limitations under the License.
17 *
18 */
19package org.apache.mina.util;
20 
21import java.util.HashSet;
22import java.util.Iterator;
23 
24/**
25 * A {@link HashSet} that can wait until it is not empty.
26 * 
27 * @author Trustin Lee (trustin@apache.org)
28 * @version $Rev: 151503 $, $Date: 2005-02-06 00:32:32 +0900 $
29 */
30public class BlockingSet extends HashSet
31{
32    private static final long serialVersionUID = 3258134669538309941L;
33 
34        private int waiters = 0;
35 
36    public synchronized boolean add( Object o )
37    {
38        boolean ret = super.add( o );
39        if( ret && waiters > 0 )
40            notify();
41        return ret;
42    }
43 
44    public Iterator iterator()
45    {
46        return super.iterator();
47    }
48 
49    public synchronized boolean remove( Object o )
50    {
51        return super.remove( o );
52    }
53 
54    public synchronized void waitForNewItem() throws InterruptedException
55    {
56        waiters++;
57        try
58        {
59            while( isEmpty() )
60            {
61                wait();
62            }
63        }
64        finally
65        {
66            waiters--;
67        }
68    }
69}

[all classes][org.apache.mina.util]
EMMA 2.0.4217 (C) Vladimir Roubtsov