Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectstyle/cayenne/util/RequestDequeue.java


1   /* ====================================================================
2    * 
3    * The ObjectStyle Group Software License, Version 1.0 
4    *
5    * Copyright (c) 2002-2003 The ObjectStyle Group 
6    * and individual authors of the software.  All rights reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer. 
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution, if
21   *    any, must include the following acknowlegement:  
22   *       "This product includes software developed by the 
23   *        ObjectStyle Group (http://objectstyle.org/)."
24   *    Alternately, this acknowlegement may appear in the software itself,
25   *    if and wherever such third-party acknowlegements normally appear.
26   *
27   * 4. The names "ObjectStyle Group" and "Cayenne" 
28   *    must not be used to endorse or promote products derived
29   *    from this software without prior written permission. For written 
30   *    permission, please contact andrus@objectstyle.org.
31   *
32   * 5. Products derived from this software may not be called "ObjectStyle"
33   *    nor may "ObjectStyle" appear in their names without prior written
34   *    permission of the ObjectStyle Group.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the ObjectStyle Group.  For more
52   * information on the ObjectStyle Group, please see
53   * <http://objectstyle.org/>.
54   *
55   */
56  package org.objectstyle.cayenne.util;
57  
58  /**
59   * RequestDequeue encapsulates the result of a thread wait in the 
60   * RequestQueue.
61   * 
62   * @author Andrei Adamchik
63   */
64  public class RequestDequeue {
65      public static final int DEQUEUE_SUCCESS = 1;
66      public static final int QUEUE_FULL = 2;
67      public static final int TIMED_OUT = 3;
68      public static final int INTERRUPTED = 4;
69  
70      protected Object dequeueEventObject;
71      protected int dequeueEventCode;
72      protected String name;
73  
74      public RequestDequeue() {
75          this(null);
76      }
77  
78      public RequestDequeue(String name) {
79          this.name = name;
80      }
81  
82      /**
83       * Returns the dequeueEventCode.
84       * @return int
85       */
86      public int getDequeueEventCode() {
87          return dequeueEventCode;
88      }
89  
90      /**
91       * Returns the dequeueEventObject.
92       * @return Object
93       */
94      public Object getDequeueEventObject() {
95          return dequeueEventObject;
96      }
97  
98      /**
99       * Sets the dequeueEventCode.
100      * @param dequeueEventCode The dequeueEventCode to set
101      */
102     public void setDequeueEventCode(int dequeueEventCode) {
103         this.dequeueEventCode = dequeueEventCode;
104     }
105 
106     /**
107      * Sets the dequeueEventObject.
108      * @param dequeueEventObject The dequeueEventObject to set
109      */
110     public void setDequeueEventObject(Object dequeueEventObject) {
111         this.dequeueEventObject = dequeueEventObject;
112     }
113 
114     public boolean isDequeueSuccess() {
115         return DEQUEUE_SUCCESS == dequeueEventCode;
116     }
117 
118     public boolean isQueueFull() {
119         return QUEUE_FULL == dequeueEventCode;
120     }
121 
122     public boolean isTimedOut() {
123         return TIMED_OUT == dequeueEventCode;
124     }
125 
126     public boolean isInterrupted() {
127         return INTERRUPTED == dequeueEventCode;
128     }
129 
130     public String toString() {
131         StringBuffer buf = new StringBuffer();
132         buf.append('[').append(getClass().getName()).append(":").append(getName());
133         if (isDequeueSuccess()) {
134             buf.append(" success");
135         } else if (isQueueFull()) {
136             buf.append(" queue full");
137         } else if (isTimedOut()) {
138             buf.append(" timeout or interrupted");
139         }
140         else {
141           buf.append(" unknown state");
142         }
143         buf.append(']');
144         return buf.toString();
145     }
146     
147     /**
148      * Returns the name.
149      * @return String
150      */
151     public String getName() {
152         return name;
153     }
154 }