KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > jmx > compliance > openmbean > OpenTypeTestCase


1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2005, JBoss Inc., and individual contributors as indicated
4 * by the @authors tag. See the copyright.txt in the distribution for a
5 * full listing of individual contributors.
6 *
7 * This is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as
9 * published by the Free Software Foundation; either version 2.1 of
10 * the License, or (at your option) any later version.
11 *
12 * This software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this software; if not, write to the Free
19 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21 */

22 package org.jboss.test.jmx.compliance.openmbean;
23
24 import java.io.ByteArrayInputStream JavaDoc;
25 import java.io.ByteArrayOutputStream JavaDoc;
26 import java.io.ObjectInputStream JavaDoc;
27 import java.io.ObjectOutputStream JavaDoc;
28 import java.util.Arrays JavaDoc;
29 import java.util.List JavaDoc;
30
31 import javax.management.openmbean.OpenDataException JavaDoc;
32 import javax.management.openmbean.OpenType JavaDoc;
33
34 import junit.framework.TestCase;
35
36 /**
37  * Open type tests.<p>
38  *
39  * @author <a HREF="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
40  */

41 public class OpenTypeTestCase
42   extends TestCase
43 {
44    // Attributes ----------------------------------------------------------------
45

46    // Constructor ---------------------------------------------------------------
47

48    /**
49     * Construct the test
50     */

51    public OpenTypeTestCase(String JavaDoc s)
52    {
53       super(s);
54    }
55
56    // Tests ---------------------------------------------------------------------
57

58    /**
59     * Test Allowed Classes.
60     */

61    public void testAllowedClasses()
62       throws Exception JavaDoc
63    {
64       String JavaDoc[] allowedClassNames = OpenType.ALLOWED_CLASSNAMES;
65       assertEquals(16, allowedClassNames.length);
66       List JavaDoc names = Arrays.asList(allowedClassNames);
67       checkOpenType(names, java.lang.Void JavaDoc.class);
68       checkOpenType(names, java.lang.Boolean JavaDoc.class);
69       checkOpenType(names, java.lang.Character JavaDoc.class);
70       checkOpenType(names, java.lang.Byte JavaDoc.class);
71       checkOpenType(names, java.lang.Short JavaDoc.class);
72       checkOpenType(names, java.lang.Integer JavaDoc.class);
73       checkOpenType(names, java.lang.Long JavaDoc.class);
74       checkOpenType(names, java.lang.Float JavaDoc.class);
75       checkOpenType(names, java.lang.Double JavaDoc.class);
76       checkOpenType(names, java.lang.String JavaDoc.class);
77       checkOpenType(names, java.util.Date JavaDoc.class);
78       checkOpenType(names, java.math.BigDecimal JavaDoc.class);
79       checkOpenType(names, java.math.BigInteger JavaDoc.class);
80       checkOpenType(names, javax.management.ObjectName JavaDoc.class);
81       checkOpenType(names, javax.management.openmbean.CompositeData JavaDoc.class);
82       checkOpenType(names, javax.management.openmbean.TabularData JavaDoc.class);
83    }
84
85    public void testConstructorSimple()
86       throws Exception JavaDoc
87    {
88       OpenType JavaDoc test = new MyOpenType("java.lang.Void", "type", "description");
89       assertEquals("java.lang.Void", test.getClassName());
90       assertEquals("type", test.getTypeName());
91       assertEquals("description", test.getDescription());
92       assertEquals(false, test.isArray());
93    }
94
95    public void testConstructorArray()
96       throws Exception JavaDoc
97    {
98       OpenType JavaDoc test = new MyOpenType("[[Ljava.lang.Void;", "type", "description");
99       assertEquals("[[Ljava.lang.Void;", test.getClassName());
100       assertEquals("type", test.getTypeName());
101       assertEquals("description", test.getDescription());
102       assertEquals(true, test.isArray());
103    }
104
105    public void testSerializationSimple()
106       throws Exception JavaDoc
107    {
108       testSerialization("java.lang.Void", "type", "description");
109    }
110  
111    public void testSerializationArray()
112       throws Exception JavaDoc
113    {
114       testSerialization("[[Ljava.lang.Void;", "type", "description");
115    }
116
117    /**
118     * Test Errors.
119     */

120    public void testErrors()
121       throws Exception JavaDoc
122    {
123       boolean caught = false;
124       try
125       {
126          new MyOpenType(null, "dummy", "dummy");
127       }
128       catch (IllegalArgumentException JavaDoc e)
129       {
130          caught = true;
131       }
132       assertTrue("className cannot be null", caught);
133
134       caught = false;
135       try
136       {
137          new MyOpenType("", "dummy", "dummy");
138       }
139       catch (IllegalArgumentException JavaDoc e)
140       {
141          caught = true;
142       }
143       assertTrue("className cannot be empty", caught);
144
145       caught = false;
146       try
147       {
148          new MyOpenType("java.lang.Void", null, "dummy");
149       }
150       catch (IllegalArgumentException JavaDoc e)
151       {
152          caught = true;
153       }
154       assertTrue("typeName cannot be null", caught);
155
156       caught = false;
157       try
158       {
159          new MyOpenType("java.lang.Void", null, "dummy");
160       }
161       catch (IllegalArgumentException JavaDoc e)
162       {
163          caught = true;
164       }
165       assertTrue("typeName cannot be empty", caught);
166
167       caught = false;
168       try
169       {
170          new MyOpenType("java.lang.Void", "dummy", null);
171       }
172       catch (IllegalArgumentException JavaDoc e)
173       {
174          caught = true;
175       }
176       assertTrue("description cannot be null", caught);
177
178       caught = false;
179       try
180       {
181          new MyOpenType("java.lang.Void", "dummy", "");
182       }
183       catch (IllegalArgumentException JavaDoc e)
184       {
185          caught = true;
186       }
187       assertTrue("description cannot be empty", caught);
188
189       caught = false;
190       try
191       {
192          new MyOpenType("java.lang.Class", "dummy", "dummy");
193       }
194       catch (OpenDataException JavaDoc e)
195       {
196          caught = true;
197       }
198       assertTrue("className must be an OpenDataType", caught);
199
200       caught = false;
201       try
202       {
203          new MyOpenType("[Ljava.lang.Void", "dummy", "dummy");
204       }
205       catch (OpenDataException JavaDoc e)
206       {
207          caught = true;
208       }
209       assertTrue("[Ljava.lang.Void is not a valid array", caught);
210    }
211
212    /**
213     * Test Errors that fail in the RI.
214     */

215    public void testErrors2()
216       throws Exception JavaDoc
217    {
218       boolean caught = false;
219       try
220       {
221          new MyOpenType("[L", "dummy", "dummy");
222       }
223       catch (StringIndexOutOfBoundsException JavaDoc e)
224       {
225          fail("FAILS IN RI: [L open type should be an OpenDataException not a StringIndexOutOfBoundsException");
226       }
227       catch (OpenDataException JavaDoc e)
228       {
229          caught = true;
230       }
231       assertTrue("[L is not a valid array", caught);
232    }
233
234    /**
235     * Test Errors that fail in the RI.
236     */

237    public void testErrors3()
238       throws Exception JavaDoc
239    {
240       boolean caught = false;
241       try
242       {
243          new MyOpenType("[Xjava.lang.Void;", "dummy", "dummy");
244       }
245       catch (OpenDataException JavaDoc e)
246       {
247          caught = true;
248       }
249       assertTrue("FAILS IN RI: [Xjava.lang.Void; is not a valid array", caught);
250    }
251
252    // Support -------------------------------------------------------------------
253

254    private void checkOpenType(List JavaDoc names, Class JavaDoc clazz)
255       throws Exception JavaDoc
256    {
257       String JavaDoc name = clazz.getName();
258       assertTrue(name + " is an OpenType", names.contains(name));
259
260       new MyOpenType(name, "dummy", "dummy");
261
262       new MyOpenType("[L"+name+";", "dummy", "dummy");
263
264       new MyOpenType("[[[[[L"+name+";", "dummy", "dummy");
265    }
266
267    private void testSerialization(String JavaDoc className, String JavaDoc type, String JavaDoc description)
268       throws Exception JavaDoc
269    {
270       // Create the role
271
OpenType JavaDoc original = new MyOpenType(className, type, description);
272
273       // Serialize it
274
ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc();
275       ObjectOutputStream JavaDoc oos = new ObjectOutputStream JavaDoc(baos);
276       oos.writeObject(original);
277     
278       // Deserialize it
279
ByteArrayInputStream JavaDoc bais = new ByteArrayInputStream JavaDoc(baos.toByteArray());
280       ObjectInputStream JavaDoc ois = new ObjectInputStream JavaDoc(bais);
281       OpenType JavaDoc result = (OpenType JavaDoc) ois.readObject();
282
283       // Did it work?
284
assertEquals(original.getClassName(), result.getClassName());
285       assertEquals(original.getTypeName(), result.getTypeName());
286       assertEquals(original.getDescription(), result.getDescription());
287       assertEquals(original.isArray(), result.isArray());
288    }
289
290    public static class MyOpenType
291       extends OpenType JavaDoc
292    {
293       private static final long serialVersionUID = -1;
294
295       public MyOpenType(String JavaDoc className, String JavaDoc typeName, String JavaDoc description)
296          throws OpenDataException JavaDoc
297       {
298          super(className, typeName, description);
299       }
300       public boolean equals(Object JavaDoc other)
301       {
302          throw new UnsupportedOperationException JavaDoc("irrelevent");
303       }
304       public int hashCode()
305       {
306          throw new UnsupportedOperationException JavaDoc("irrelevent");
307       }
308       public boolean isValue(Object JavaDoc other)
309       {
310          throw new UnsupportedOperationException JavaDoc("irrelevent");
311       }
312       public String JavaDoc toString()
313       {
314          throw new UnsupportedOperationException JavaDoc("irrelevent");
315       }
316    }
317 }
318
Popular Tags