1 /***
2 * Copyright (c) 2002, CodeStreet LLC. All rights reserved.<p>
3 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
4 * conditions are met:<p>
5 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
7 * in the documentation and/or other materials provided with the distribution. Neither the name of CodeStreet LLC. nor the
8 * names of its contributors may be used to endorse or promote products derived from this software without specific prior written
9 * permission.<p>
10 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
11 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
12 * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
13 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
14 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<p>
16 */
17
18 package com.codestreet.messageforge;
19
20 /***
21 * Field type-safe enumeration.
22 * @author Jawaid Hakim.
23 */
24 public class RFldType
25 {
26 /***
27 * Ctor. To prevent default being generated.
28 */
29 private RFldType()
30 {
31 type_ = 0;
32 strType_ = String.valueOf(type_);
33 complex_ = false;
34 jmsSupport_ = false;
35 }
36
37 /***
38 * Ctor. To prevent instantiation.
39 * @param complex <tt>true</tt> if this field cannot be directly
40 * represented by supported TibrvMsg types. Otherwise, <tt>false</tt>.
41 * @param jmsSupport <tt>true</tt> if this field can be directly
42 * represented by supported JMS types. Otherwise, <tt>false</tt>.
43 * In JMS Java primitive types and their objectified versions are
44 * supported. For example, <tt>int</tt> and <tt>Integer</tt>
45 * are supported. The only other type supported is byte arrays.
46 * @param tibrvSupport <tt>true</tt> if this field can be directly
47 * represented by supported TIBCO Rendezvous. Otherwise, <tt>false</tt>.
48 * @see #isComplex()
49 */
50 private RFldType(boolean complex, boolean jmsSupport, boolean tibrvSupport)
51 {
52 strType_ = String.valueOf(type_);
53 complex_ = complex;
54 jmsSupport_ = jmsSupport;
55 tibrvSupport_ = tibrvSupport;
56 }
57
58 /***
59 * Override <tt>toString()</tt>.
60 * @return String representation of object type.
61 * @see #shortValue()
62 */
63 public final String toString()
64 {
65 return strType_;
66 }
67
68 /***
69 * Get the field type as a <tt>short</tt>.
70 * @return Field type as a <tt>short</tt>.
71 */
72 public final short shortValue()
73 {
74 return type_;
75 }
76
77 /***
78 * Check if this field is a complex type that cannot be directly
79 * represented by a corresponding TibrvMsg type. To send a complex
80 * field in a TibrvMsg, the field has to be sent as a (nested)
81 * byte array or as a nested TibrvMsg. To get the byte representation
82 * of a complex field call its getAsBytes() method.
83 * @return Returns <tt>true</tt> if this field is a complex type.
84 * Otherwise, <tt>false</tt>.
85 */
86 public final boolean isComplex()
87 {
88 return complex_;
89 }
90
91 /***
92 * Check if this field is supported by JMS.
93 * @return Returns <tt>true</tt> if this field is a supported by JMS.
94 * Otherwise, <tt>false</tt>. The Java data types supported by JMS in
95 * a <tt>MapMessage</tt> are the following:<b>
96 * boolean, Boolean<b>
97 * byte, Byte, byte[]<b>
98 * short, Short<b>
99 * int, Integer<b>
100 * long, Long<b>
101 * float, Float<b>
102 * double, Double<b>
103 * String<b>
104 */
105 public final boolean isJMSSupported()
106 {
107 return jmsSupport_;
108 }
109
110 /***
111 * Check if this field is supported by TIBCO Rendezvous.
112 * @return Returns <tt>true</tt> if this field is a supported by TIBCO Rendezvous.
113 * Otherwise, <tt>false</tt>.
114 */
115 public final boolean isTibrvSupported()
116 {
117 return tibrvSupport_;
118 }
119
120 private String strType_;
121 private boolean complex_;
122 private boolean jmsSupport_;
123 private boolean tibrvSupport_;
124
125
126 private static short INIT_TYPE = 1;
127 private short type_ = INIT_TYPE++;
128
129 /***
130 * BigDecimal.
131 */
132 public static final RFldType DECIMAL = new RFldType(true, false, false);
133
134 /***
135 * RFldMoney.
136 */
137 public static final RFldType MONEY = new RFldType(true, false, false);
138
139
140 /***
141 * byte.
142 */
143 public static final RFldType I8 = new RFldType(false, true, true);
144
145 /***
146 * byte[].
147 */
148 public static final RFldType I8ARRAY = new RFldType(false, true, true);
149
150 /***
151 * short.
152 */
153 public static final RFldType I16 = new RFldType(false, true, true);
154
155 /***
156 * short[].
157 */
158 public static final RFldType I16ARRAY = new RFldType(false, false, true);
159
160 /***
161 * int.
162 */
163 public static final RFldType I32 = new RFldType(false, true, true);
164
165 /***
166 * int[].
167 */
168 public static final RFldType I32ARRAY = new RFldType(false, false, true);
169
170 /***
171 * long.
172 */
173 public static final RFldType I64 = new RFldType(false, true, true);
174
175 /***
176 * long[].
177 */
178 public static final RFldType I64ARRAY = new RFldType(false, false, true);
179
180 /***
181 * Unsigned byte.
182 */
183 public static final RFldType U8 = new RFldType(false, true, true);
184
185 /***
186 * Unsigned byte[].
187 */
188 public static final RFldType U8ARRAY = new RFldType(false, false, true);
189
190 /***
191 * Unsigned short.
192 */
193 public static final RFldType U16 = new RFldType(false, true, true);
194
195 /***
196 * Unsigned short[]
197 */
198 public static final RFldType U16ARRAY = new RFldType(false, false, true);
199
200 /***
201 * Unsigned int.
202 */
203 public static final RFldType U32 = new RFldType(false, true, true);
204
205 /***
206 * Unsigned int[].
207 */
208 public static final RFldType U32ARRAY = new RFldType(false, false, true);
209
210 /***
211 * Unsigned long.
212 */
213 public static final RFldType U64 = new RFldType(false, true, true);
214
215 /***
216 * Unsigned long[].
217 */
218 public static final RFldType U64ARRAY = new RFldType(false, false, true);
219
220 /***
221 * float.
222 */
223 public static final RFldType F32 = new RFldType(false, true, true);
224
225 /***
226 * float[].
227 */
228 public static final RFldType F32ARRAY = new RFldType(false, false, true);
229
230 /***
231 * double.
232 */
233 public static final RFldType F64 = new RFldType(false, true, true);
234
235 /***
236 * double[].
237 */
238 public static final RFldType F64ARRAY = new RFldType(false, false, true);
239
240 /***
241 * TibrvMsg.
242 */
243 public static final RFldType MSG = new RFldType(false, false, true);
244
245 /***
246 * byte[].
247 */
248 public static final RFldType OPAQUE = new RFldType(false, true, true);
249
250 /***
251 * String.
252 */
253 public static final RFldType STRING = new RFldType(false, true, true);
254
255 /***
256 * See TibrvMsg.XML.
257 */
258 public static final RFldType XML = new RFldType(false, true, true);
259
260 /***
261 * See TibrvMsg.DATETIME.
262 */
263 public static final RFldType DATETIME = new RFldType(false, false, true);
264
265 /***
266 * boolean.
267 */
268 public static final RFldType BOOL = new RFldType(false, true, true);
269
270 /***
271 * See TibrvMsg.IPADDR32
272 */
273 public static final RFldType IPADDR32 = new RFldType(false, false, true);
274
275 /***
276 * See TibrvMsg.IPPORT16
277 */
278 public static final RFldType IPPORT16 = new RFldType(false, false, true);
279
280 // First we have scalar types - these are fields that can be directly
281 // represented by TibrvMsg type. For example, we have the MEMO field
282 // type that can be directly represented by a TibrvMsg.STRING.
283
284 /***
285 * Memo.
286 */
287 public static final RFldType MEMO = new RFldType(false, true, true);
288
289
290 // Finally we have non-scalar types - these are fields that cannot be
291 // directly represented by TibrvMsg type.
292
293 /***
294 * TibrvMsg[]
295 */
296 public static final RFldType MSGARRAY = new RFldType(true, false, false);
297
298 /***
299 * Date[]
300 */
301 public static final RFldType DATEARRAY = new RFldType(true, false, false);
302
303 /***
304 * String[]
305 */
306 public static final RFldType STRINGARRAY = new RFldType(true, false, false);
307
308 /***
309 * Bean
310 */
311 public static final RFldType BEAN = new RFldType(true, false, false);
312
313 /***
314 * Bean list.
315 */
316 public static final RFldType BEANLIST = new RFldType(true, false, false);
317
318 /***
319 * RMsg.
320 */
321 public static final RFldType MSGOBJ = new RFldType(true, false, false);
322
323 /***
324 * RMsg[].
325 */
326 public static final RFldType MSGOBJARRAY = new RFldType(true, false, false);
327
328 /***
329 * <tt>java.util.Hashtable</tt> of RMsg.
330 */
331 public static final RFldType MSGOBJHASHTABLE = new RFldType(true, false, false);
332
333 /***
334 * <tt>java.util.Hashtable</tt> of <tt>String</tt> - the key/value are both <tt>String</tt>.
335 */
336 public static final RFldType STRINGHASHTABLE = new RFldType(true, false, false);
337
338 /***
339 * <tt>java.util.List</tt> of <tt>String</tt> - the key/value are both <tt>String</tt>.
340 */
341 public static final RFldType STRINGLIST = new RFldType(true, false, false);
342 }
This page was automatically generated by Maven