KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > excalibur > event > impl > ThresholdEnqueuePredicate


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
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
12  * implied.
13  *
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.excalibur.event.impl;
18
19 import org.apache.excalibur.event.EnqueuePredicate;
20 import org.apache.excalibur.event.Sink;
21
22 /**
23  * The ThresholdEnqueuePredicate limits the elements that can be enqueued
24  * based on the size of the Queue.
25  *
26  * @author <a HREF="mailto:dev@avalon.apache.org">Avalon Development Team</a>
27  */

28 public final class ThresholdEnqueuePredicate implements EnqueuePredicate
29 {
30     private final int m_threshold;
31
32     /**
33      * Create a new ThresholdEnqueuePredicate with the supplied limit.
34      *
35      * @param limit A number greater than zero
36      */

37     public ThresholdEnqueuePredicate(int limit)
38     {
39         m_threshold = limit;
40     }
41
42     /**
43      * Returns true if the Sink size + 1 (the element) is less than the
44      * threshold.
45      */

46     public boolean accept(Object JavaDoc element, Sink modifyingSink)
47     {
48         if ( m_threshold <=0 ) return true;
49
50         return (modifyingSink.size() + 1) < m_threshold;
51     }
52
53     /**
54      * Returns true if the Sink size + the number of elements is less than
55      * the threshold.
56      */

57     public boolean accept(Object JavaDoc[] elements, Sink modifyingSink)
58     {
59         if ( m_threshold <=0 ) return true;
60
61         return (modifyingSink.size() + elements.length) < m_threshold;
62     }
63 }
64
Popular Tags