2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 package com
.sun
.star
.lib
.uno
.helper
;
21 import com
.sun
.star
.lang
.EventObject
;
22 import com
.sun
.star
.lang
.DisposedException
;
23 import com
.sun
.star
.uno
.Type
;
24 import com
.sun
.star
.uno
.TypeClass
;
25 import com
.sun
.star
.uno
.XInterface
;
26 import com
.sun
.star
.uno
.Any
;
27 import com
.sun
.star
.uno
.XWeak
;
28 import com
.sun
.star
.beans
.UnknownPropertyException
;
29 import com
.sun
.star
.beans
.Property
;
30 import com
.sun
.star
.beans
.PropertyAttribute
;
31 import com
.sun
.star
.beans
.XPropertyChangeListener
;
32 import com
.sun
.star
.beans
.PropertyVetoException
;
33 import com
.sun
.star
.beans
.PropertyChangeEvent
;
34 import com
.sun
.star
.beans
.XVetoableChangeListener
;
35 import com
.sun
.star
.beans
.XPropertySetInfo
;
36 import com
.sun
.star
.beans
.XPropertiesChangeListener
;
38 import java
.util
.logging
.Level
;
39 import java
.util
.logging
.Logger
;
41 import static org
.junit
.Assert
.assertEquals
;
42 import static org
.junit
.Assert
.assertNull
;
43 import static org
.junit
.Assert
.assertSame
;
44 import static org
.junit
.Assert
.assertTrue
;
45 import static org
.junit
.Assert
.fail
;
46 import org
.junit
.Test
;
48 public class PropertySet_Test
51 private static final Logger logger
= Logger
.getLogger(PropertySet_Test
.class.getName());
53 @Test public void convertPropertyValue() throws Exception
55 logger
.log(Level
.INFO
, "PropertySet.convertPropertyValue");
56 TestClass cl
= new TestClass();
57 cl
.test_convertPropertyValue();
60 @Test public void setPropertyValueNoBroadcast() throws Exception
62 logger
.log(Level
.INFO
, "PropertySet.setValueNoBroadcast");
63 TestClass cl
= new TestClass();
64 cl
.test_setPropertyValueNoBroadcast();
67 @Test public void setPropertyValue() throws Exception
69 logger
.log(Level
.INFO
, "PropertySet.setPropertyValue");
70 TestClass cl
= new TestClass();
71 cl
.resetPropertyMembers();
76 cl
.setPropertyValue("PropBoolA", value
);
77 assertEquals(cl
.getPropertyValue("PropBoolA"), value
);
79 value
= Character
.valueOf('A');
80 cl
.setPropertyValue("PropCharA",value
);
81 assertEquals(cl
.getPropertyValue("PropCharA"), value
);
83 value
= Byte
.valueOf((byte) 111);
84 cl
.setPropertyValue("PropByteA",value
);
85 assertEquals(cl
.getPropertyValue("PropByteA"), value
);
87 value
= Short
.valueOf((short)112);
88 cl
.setPropertyValue("PropShortA", value
);
89 assertEquals(cl
.getPropertyValue("PropShortA"), value
);
91 value
= Integer
.valueOf(113);
92 cl
.setPropertyValue("PropIntA", value
);
93 assertEquals(cl
.getPropertyValue("PropIntA"), value
);
95 value
= Long
.valueOf(115);
96 cl
.setPropertyValue("PropLongA", value
);
97 assertEquals(cl
.getPropertyValue("PropLongA"), value
);
99 value
= Float
.valueOf(3.14f
);
100 cl
.setPropertyValue("PropFloatA", value
);
101 assertEquals(cl
.getPropertyValue("PropFloatA"), value
);
103 value
= Double
.valueOf(3.145);
104 cl
.setPropertyValue("PropDoubleA",value
);
105 assertEquals(cl
.getPropertyValue("PropDoubleA"), value
);
108 cl
.setPropertyValue("PropStringA",value
);
109 assertEquals(cl
.getPropertyValue("PropStringA"), value
);
111 value
= new ComponentBase();
112 cl
.setPropertyValue("PropXInterfaceA",value
);
113 assertEquals(cl
.getPropertyValue("PropXInterfaceA"), value
);
115 value
= new ComponentBase();
116 cl
.setPropertyValue("PropXWeakA",value
);
117 assertEquals(cl
.getPropertyValue("PropXWeakA"), value
);
119 value
= com
.sun
.star
.beans
.PropertyState
.AMBIGUOUS_VALUE
;
120 cl
.setPropertyValue("PropEnum",value
);
121 assertSame(cl
.getPropertyValue("PropEnum"), value
);
123 value
= new byte[]{1,2,3};
124 cl
.setPropertyValue("PropArrayByteA", value
);
125 assertEquals(cl
.getPropertyValue("PropArrayByteA"), value
);
127 value
= new Type(String
.class);
128 cl
.setPropertyValue("PropTypeA", value
);
129 assertEquals(cl
.getPropertyValue("PropTypeA"), value
);
131 // test protected,package,private members
133 cl
.setPropertyValue("PropBoolB", value
);
134 assertEquals(cl
.getPropertyValue("PropBoolB"), value
);
136 cl
.setPropertyValue("PropBoolC", value
);
137 assertEquals(cl
.getPropertyValue("PropBoolC"), value
);
140 cl
.setPropertyValue("PropBoolD", value
);
141 fail("com.sun.star.lang.WrappedTargetException expected");
142 } catch(com
.sun
.star
.lang
.WrappedTargetException e
) {
143 logger
.log(Level
.FINE
, "com.sun.star.lang.WrappedTargetException caught");
146 cl
.resetPropertyMembers();
149 cl
.setPropertyValue("PropObjectA", value
);
150 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
152 value
= Character
.valueOf('A');
153 cl
.setPropertyValue("PropObjectA",value
);
154 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
156 value
= Byte
.valueOf((byte) 111);
157 cl
.setPropertyValue("PropObjectA",value
);
158 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
160 value
= Short
.valueOf((short)112);
161 cl
.setPropertyValue("PropObjectA", value
);
162 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
164 value
= Integer
.valueOf(113);
165 cl
.setPropertyValue("PropObjectA", value
);
166 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
168 value
= Long
.valueOf(115);
169 cl
.setPropertyValue("PropObjectA", value
);
170 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
172 value
= Float
.valueOf(3.14f
);
173 cl
.setPropertyValue("PropObjectA", value
);
174 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
176 value
= Double
.valueOf(3.145);
177 cl
.setPropertyValue("PropObjectA",value
);
178 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
181 cl
.setPropertyValue("PropObjectA",value
);
182 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
184 value
= new ComponentBase();
185 cl
.setPropertyValue("PropObjectA",value
);
186 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
188 value
= new ComponentBase();
189 cl
.setPropertyValue("PropObjectA",value
);
190 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
192 value
= new byte[]{1,2,3};
193 cl
.setPropertyValue("PropObjectA", value
);
194 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
196 value
= new Type(String
.class);
197 cl
.setPropertyValue("PropObjectA", value
);
198 assertEquals(cl
.getPropertyValue("PropObjectA"), value
);
200 cl
.setPropertyValue("PropObjectA", new Any( new Type(byte.class), Byte
.valueOf((byte)1)));
201 assertEquals(((Byte
) cl
.getPropertyValue("PropObjectA")).byteValue(), 1);
203 cl
.resetPropertyMembers();
206 cl
.setPropertyValue("PropAnyA", value
);
207 ret
= cl
.getPropertyValue("PropAnyA");
208 assertTrue(ret
instanceof Any
);
209 assertTrue(util
.anyEquals(value
, ret
));
211 value
= Character
.valueOf('A');
212 cl
.setPropertyValue("PropAnyA",value
);
213 ret
= cl
.getPropertyValue("PropAnyA");
214 assertTrue(ret
instanceof Any
);
215 assertTrue(util
.anyEquals(value
, ret
));
217 value
= Byte
.valueOf((byte) 111);
218 cl
.setPropertyValue("PropAnyA",value
);
219 ret
= cl
.getPropertyValue("PropAnyA");
220 assertTrue(ret
instanceof Any
);
221 assertTrue(util
.anyEquals(value
, ret
));
223 value
= Short
.valueOf((short)112);
224 cl
.setPropertyValue("PropAnyA", value
);
225 ret
= cl
.getPropertyValue("PropAnyA");
226 assertTrue(ret
instanceof Any
);
227 assertTrue(util
.anyEquals(value
, ret
));
229 value
= Integer
.valueOf(113);
230 cl
.setPropertyValue("PropAnyA", value
);
231 ret
= cl
.getPropertyValue("PropAnyA");
232 assertTrue(ret
instanceof Any
);
233 assertTrue(util
.anyEquals(value
, ret
));
235 value
= Long
.valueOf(115);
236 cl
.setPropertyValue("PropAnyA", value
);
237 ret
= cl
.getPropertyValue("PropAnyA");
238 assertTrue(ret
instanceof Any
);
239 assertTrue(util
.anyEquals(value
, ret
));
241 value
= Float
.valueOf(3.14f
);
242 cl
.setPropertyValue("PropAnyA", value
);
243 ret
= cl
.getPropertyValue("PropAnyA");
244 assertTrue(ret
instanceof Any
);
245 assertTrue(util
.anyEquals(value
, ret
));
247 value
= Double
.valueOf(3.145);
248 cl
.setPropertyValue("PropAnyA",value
);
249 ret
= cl
.getPropertyValue("PropAnyA");
250 assertTrue(ret
instanceof Any
);
251 assertTrue(util
.anyEquals(value
, ret
));
254 cl
.setPropertyValue("PropAnyA",value
);
255 ret
= cl
.getPropertyValue("PropAnyA");
256 assertTrue(ret
instanceof Any
);
257 assertTrue(util
.anyEquals(value
, ret
));
259 value
= new ComponentBase();
260 cl
.setPropertyValue("PropAnyA",value
);
261 ret
= cl
.getPropertyValue("PropAnyA");
262 assertTrue(ret
instanceof Any
);
263 assertTrue(util
.anyEquals(value
, ret
));
265 value
= new ComponentBase();
266 cl
.setPropertyValue("PropAnyA",value
);
267 ret
= cl
.getPropertyValue("PropAnyA");
268 assertTrue(ret
instanceof Any
);
269 assertTrue(util
.anyEquals(value
, ret
));
271 value
= new byte[]{1,2,3};
272 cl
.setPropertyValue("PropAnyA", value
);
273 ret
= cl
.getPropertyValue("PropAnyA");
274 assertTrue(ret
instanceof Any
);
275 assertTrue(util
.anyEquals(value
, ret
));
277 value
= new Type(String
.class);
278 cl
.setPropertyValue("PropAnyA", value
);
279 ret
= cl
.getPropertyValue("PropAnyA");
280 assertTrue(ret
instanceof Any
);
281 assertTrue(util
.anyEquals(value
, ret
));
283 cl
.resetPropertyMembers();
285 value
= new Any(new Type(boolean.class), Boolean
.TRUE
);
286 cl
.setPropertyValue("PropBoolA", value
);
287 ret
= cl
.getPropertyValue("PropBoolA");
288 assertTrue(ret
instanceof Boolean
);
289 assertTrue(util
.anyEquals(value
, ret
));
291 value
= new Any (new Type(char.class), Character
.valueOf('A'));
292 cl
.setPropertyValue("PropCharA",value
);
293 ret
= cl
.getPropertyValue("PropCharA");
294 assertTrue(ret
instanceof Character
);
295 assertTrue(util
.anyEquals(value
, ret
));
297 value
= new Any(new Type(byte.class), Byte
.valueOf((byte) 111));
298 cl
.setPropertyValue("PropByteA",value
);
299 ret
= cl
.getPropertyValue("PropByteA");
300 assertTrue(ret
instanceof Byte
);
301 assertTrue(util
.anyEquals(value
, ret
));
303 value
= new Any(new Type(short.class), Short
.valueOf((short)112));
304 cl
.setPropertyValue("PropShortA", value
);
305 ret
= cl
.getPropertyValue("PropShortA");
306 assertTrue(ret
instanceof Short
);
307 assertTrue(util
.anyEquals(value
, ret
));
309 value
= new Any(new Type(int.class), Integer
.valueOf(113));
310 cl
.setPropertyValue("PropIntA", value
);
311 ret
= cl
.getPropertyValue("PropIntA");
312 assertTrue(ret
instanceof Integer
);
313 assertTrue(util
.anyEquals(value
, ret
));
315 value
= new Any(new Type(long.class), Long
.valueOf(115));
316 cl
.setPropertyValue("PropLongA", value
);
317 ret
= cl
.getPropertyValue("PropLongA");
318 assertTrue(ret
instanceof Long
);
319 assertTrue(util
.anyEquals(value
, ret
));
321 value
= new Any(new Type(float.class), Float
.valueOf(3.14f
));
322 cl
.setPropertyValue("PropFloatA", value
);
323 ret
= cl
.getPropertyValue("PropFloatA");
324 assertTrue(ret
instanceof Float
);
325 assertTrue(util
.anyEquals(value
, ret
));
327 value
= new Any(new Type(double.class),Double
.valueOf(3.145));
328 cl
.setPropertyValue("PropDoubleA",value
);
329 ret
= cl
.getPropertyValue("PropDoubleA");
330 assertTrue(ret
instanceof Double
);
331 assertTrue(util
.anyEquals(value
, ret
));
333 value
= new Any(new Type(String
.class), "string");
334 cl
.setPropertyValue("PropStringA",value
);
335 ret
= cl
.getPropertyValue("PropStringA");
336 assertTrue(ret
instanceof String
);
337 assertTrue(util
.anyEquals(value
, ret
));
339 value
= new Any(new Type(ComponentBase
.class), new ComponentBase());
340 cl
.setPropertyValue("PropXInterfaceA",value
);
341 ret
= cl
.getPropertyValue("PropXInterfaceA");
342 assertTrue(ret
instanceof ComponentBase
);
343 assertTrue(util
.anyEquals(value
, ret
));
345 value
= new Any( new Type(ComponentBase
.class), new ComponentBase());
346 cl
.setPropertyValue("PropXWeakA",value
);
347 ret
= cl
.getPropertyValue("PropXWeakA");
348 assertTrue(ret
instanceof ComponentBase
);
349 assertTrue(util
.anyEquals(value
, ret
));
351 value
= new Any(new Type(byte[].class), new byte[]{1,2,3});
352 cl
.setPropertyValue("PropArrayByteA", value
);
353 ret
= cl
.getPropertyValue("PropArrayByteA");
354 assertTrue(ret
instanceof byte[]);
355 assertTrue(util
.anyEquals(value
, ret
));
357 value
= new Any(new Type(Type
.class), new Type(String
.class));
358 cl
.setPropertyValue("PropTypeA", value
);
359 ret
= cl
.getPropertyValue("PropTypeA");
360 assertTrue(ret
instanceof Type
);
361 assertTrue(util
.anyEquals(value
, ret
));
363 cl
.resetPropertyMembers();
365 value
= new Any(new Type(boolean.class), Boolean
.TRUE
);
366 cl
.setPropertyValue("PropAnyA", value
);
367 ret
= cl
.getPropertyValue("PropAnyA");
368 assertTrue(ret
instanceof Any
);
369 assertTrue(util
.anyEquals(value
, ret
));
371 value
= new Any (new Type(char.class), Character
.valueOf('A'));
372 cl
.setPropertyValue("PropAnyA",value
);
373 ret
= cl
.getPropertyValue("PropAnyA");
374 assertTrue(ret
instanceof Any
);
375 assertTrue(util
.anyEquals(value
, ret
));
377 value
= new Any(new Type(byte.class), Byte
.valueOf((byte) 111));
378 cl
.setPropertyValue("PropAnyA",value
);
379 ret
= cl
.getPropertyValue("PropAnyA");
380 assertTrue(ret
instanceof Any
);
381 assertTrue(util
.anyEquals(value
, ret
));
383 value
= new Any(new Type(short.class), Short
.valueOf((short)112));
384 cl
.setPropertyValue("PropAnyA", value
);
385 ret
= cl
.getPropertyValue("PropAnyA");
386 assertTrue(ret
instanceof Any
);
387 assertTrue(util
.anyEquals(value
, ret
));
389 value
= new Any(new Type(int.class), Integer
.valueOf(113));
390 cl
.setPropertyValue("PropAnyA", value
);
391 ret
= cl
.getPropertyValue("PropAnyA");
392 assertTrue(ret
instanceof Any
);
393 assertTrue(util
.anyEquals(value
, ret
));
395 value
= new Any(new Type(long.class), Long
.valueOf(115));
396 cl
.setPropertyValue("PropAnyA", value
);
397 ret
= cl
.getPropertyValue("PropAnyA");
398 assertTrue(ret
instanceof Any
);
399 assertTrue(util
.anyEquals(value
, ret
));
401 value
= new Any(new Type(float.class), Float
.valueOf(3.14f
));
402 cl
.setPropertyValue("PropAnyA", value
);
403 ret
= cl
.getPropertyValue("PropAnyA");
404 assertTrue(ret
instanceof Any
);
405 assertTrue(util
.anyEquals(value
, ret
));
407 value
= new Any(new Type(double.class),Double
.valueOf(3.145));
408 cl
.setPropertyValue("PropAnyA",value
);
409 ret
= cl
.getPropertyValue("PropAnyA");
410 assertTrue(ret
instanceof Any
);
411 assertTrue(util
.anyEquals(value
, ret
));
413 value
= new Any(new Type(String
.class), "string");
414 cl
.setPropertyValue("PropAnyA",value
);
415 ret
= cl
.getPropertyValue("PropAnyA");
416 assertTrue(ret
instanceof Any
);
417 assertTrue(util
.anyEquals(value
, ret
));
419 value
= new Any(new Type(ComponentBase
.class), new ComponentBase());
420 cl
.setPropertyValue("PropAnyA",value
);
421 ret
= cl
.getPropertyValue("PropAnyA");
422 assertTrue(ret
instanceof Any
);
423 assertTrue(util
.anyEquals(value
, ret
));
425 value
= new Any( new Type(ComponentBase
.class), new ComponentBase());
426 cl
.setPropertyValue("PropAnyA",value
);
427 ret
= cl
.getPropertyValue("PropAnyA");
428 assertTrue(ret
instanceof Any
);
429 assertTrue(util
.anyEquals(value
, ret
));
431 value
= new Any(new Type(byte[].class), new byte[]{1,2,3});
432 cl
.setPropertyValue("PropAnyA", value
);
433 ret
= cl
.getPropertyValue("PropAnyA");
434 assertTrue(ret
instanceof Any
);
435 assertTrue(util
.anyEquals(value
, ret
));
437 value
= new Any(new Type(Type
.class), new Type(String
.class));
438 cl
.setPropertyValue("PropAnyA", value
);
439 ret
= cl
.getPropertyValue("PropAnyA");
440 assertTrue(ret
instanceof Any
);
441 assertTrue(util
.anyEquals(value
, ret
));
443 cl
.resetPropertyMembers();
446 cl
.setPropertyValue("PropBoolClass", value
);
447 assertEquals(cl
.getPropertyValue("PropBoolClass"), value
);
449 value
= Character
.valueOf('A');
450 cl
.setPropertyValue("PropCharClass",value
);
451 assertEquals(cl
.getPropertyValue("PropCharClass"), value
);
453 value
= Byte
.valueOf((byte) 111);
454 cl
.setPropertyValue("PropByteClass",value
);
455 assertEquals(cl
.getPropertyValue("PropByteClass"), value
);
457 value
= Short
.valueOf((short)112);
458 cl
.setPropertyValue("PropShortClass", value
);
459 assertEquals(cl
.getPropertyValue("PropShortClass"), value
);
461 value
= Integer
.valueOf(113);
462 cl
.setPropertyValue("PropIntClass", value
);
463 assertEquals(cl
.getPropertyValue("PropIntClass"), value
);
465 value
= Long
.valueOf(115);
466 cl
.setPropertyValue("PropLongClass", value
);
467 assertEquals(cl
.getPropertyValue("PropLongClass"), value
);
469 value
= Float
.valueOf(3.14f
);
470 cl
.setPropertyValue("PropFloatClass", value
);
471 assertEquals(cl
.getPropertyValue("PropFloatClass"), value
);
473 value
= Double
.valueOf(3.145);
474 cl
.setPropertyValue("PropDoubleClass",value
);
475 assertEquals(cl
.getPropertyValue("PropDoubleClass"), value
);
477 cl
.resetPropertyMembers();
479 cl
.resetPropertyMembers();
481 value
= new Any(new Type(boolean.class), Boolean
.TRUE
);
482 cl
.setPropertyValue("PropBoolClass", value
);
483 ret
= cl
.getPropertyValue("PropBoolClass");
484 assertTrue(ret
instanceof Boolean
);
485 assertTrue(util
.anyEquals(value
, ret
));
487 value
= new Any (new Type(char.class), Character
.valueOf('A'));
488 cl
.setPropertyValue("PropCharClass",value
);
489 ret
= cl
.getPropertyValue("PropCharClass");
490 assertTrue(ret
instanceof Character
);
491 assertTrue(util
.anyEquals(value
, ret
));
493 value
= new Any(new Type(byte.class), Byte
.valueOf((byte) 111));
494 cl
.setPropertyValue("PropByteClass",value
);
495 ret
= cl
.getPropertyValue("PropByteClass");
496 assertTrue(ret
instanceof Byte
);
497 assertTrue(util
.anyEquals(value
, ret
));
499 value
= new Any(new Type(short.class), Short
.valueOf((short)112));
500 cl
.setPropertyValue("PropShortClass", value
);
501 ret
= cl
.getPropertyValue("PropShortClass");
502 assertTrue(ret
instanceof Short
);
503 assertTrue(util
.anyEquals(value
, ret
));
505 value
= new Any(new Type(int.class), Integer
.valueOf(113));
506 cl
.setPropertyValue("PropIntClass", value
);
507 ret
= cl
.getPropertyValue("PropIntClass");
508 assertTrue(ret
instanceof Integer
);
509 assertTrue(util
.anyEquals(value
, ret
));
511 value
= new Any(new Type(long.class), Long
.valueOf(115));
512 cl
.setPropertyValue("PropLongClass", value
);
513 ret
= cl
.getPropertyValue("PropLongClass");
514 assertTrue(ret
instanceof Long
);
515 assertTrue(util
.anyEquals(value
, ret
));
517 value
= new Any(new Type(float.class), Float
.valueOf(3.14f
));
518 cl
.setPropertyValue("PropFloatClass", value
);
519 ret
= cl
.getPropertyValue("PropFloatClass");
520 assertTrue(ret
instanceof Float
);
521 assertTrue(util
.anyEquals(value
, ret
));
523 value
= new Any(new Type(double.class),Double
.valueOf(3.145));
524 cl
.setPropertyValue("PropDoubleClass",value
);
525 ret
= cl
.getPropertyValue("PropDoubleClass");
526 assertTrue(ret
instanceof Double
);
527 assertTrue(util
.anyEquals(value
, ret
));
529 value
= new Any(new Type(String
.class), "string");
531 // PropertyAttribute.READONLY
532 cl
.propBoolA
.Attributes
= PropertyAttribute
.READONLY
;
534 cl
.setPropertyValue("PropBoolA", Boolean
.TRUE
);
535 fail("com.sun.star.beans.PropertyVetoException expected");
536 } catch (com
.sun
.star
.beans
.PropertyVetoException e
) {
537 logger
.log(Level
.FINE
, "com.sun.star.beans.PropertyVetoException caught");
539 cl
.propBoolA
.Attributes
= 0;
542 cl
.resetPropertyMembers();
543 // first MAYBEVOID not set
545 //primitive members: must not work
549 cl
.setPropertyValue("PropBoolA", null);
550 fail("com.sun.star.lang.IllegalArgumentException expected");
551 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
552 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
556 cl
.setPropertyValue("PropBoolA", new Any(new Type(boolean.class), null));
557 fail("com.sun.star.lang.IllegalArgumentException expected");
558 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
559 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
562 cl
.propBoolA
.Attributes
= PropertyAttribute
.MAYBEVOID
;
564 cl
.setPropertyValue("PropBoolA", null);
565 fail("com.sun.star.lang.IllegalArgumentException expected");
566 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
567 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
570 cl
.propBoolA
.Attributes
= 0;
572 cl
.propBoolClass
.Attributes
= PropertyAttribute
.MAYBEVOID
;
573 cl
.boolClassProp
= null;
574 cl
.setPropertyValue("PropBoolClass", null);
575 assertNull(cl
.boolClassProp
);
577 // the returned value must be a void any
578 Object objAny
= cl
.getPropertyValue("PropBoolClass");
579 assertTrue(util
.isVoidAny( objAny
));
581 cl
.boolClassProp
= Boolean
.TRUE
;
582 cl
.setPropertyValue("PropBoolClass", null);
583 assertNull(cl
.boolClassProp
);
585 cl
.boolClassProp
= Boolean
.FALSE
;
586 cl
.setPropertyValue("PropBoolClass", new Any(new Type(boolean.class),null));
587 assertNull(cl
.boolClassProp
);
589 cl
.propXWeakA
.Attributes
= PropertyAttribute
.MAYBEVOID
;
590 cl
.setPropertyValue("PropXWeakA", null);
591 assertTrue(util
.isVoidAny(cl
.getPropertyValue("PropXWeakA")));
593 cl
.propXWeakA
.Attributes
= 0;
597 cl
.setPropertyValue("PropAnyA", null);
598 fail("com.sun.star.lang.IllegalArgumentException expected");
599 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
600 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
603 cl
.propAnyA
.Attributes
= PropertyAttribute
.MAYBEVOID
;
605 new Type(Object
.class);
606 cl
.setPropertyValue("PropAnyA", null);
607 assertEquals(cl
.anyPropA
.getType(), new Type(void.class));
608 assertNull(cl
.anyPropA
.getObject());
610 cl
.anyPropA
= new Any(new Type(byte.class),Byte
.valueOf((byte) 111));
611 cl
.setPropertyValue("PropAnyA", null);
612 assertEquals(cl
.anyPropA
.getType(), new Type(byte.class));
613 assertNull(cl
.anyPropA
.getObject());
617 cl
.setPropertyValue("PropAnyA", new Object());
618 fail("com.sun.star.lang.IllegalArgumentException expected");
619 }catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
620 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
623 cl
.propObjectA
.Attributes
= 0;
625 cl
.setPropertyValue("PropObjectA", null);
626 fail("com.sun.star.lang.IllegalArgumentException expected");
627 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
628 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
632 cl
.setPropertyValue("PropObjectA", new Any( new Type(byte.class), null));
633 fail("com.sun.star.lang.IllegalArgumentException expected");
634 } catch (com
.sun
.star
.lang
.IllegalArgumentException e
) {
635 logger
.log(Level
.FINE
, "com.sun.star.lang.IllegalArgumentException caught");
638 cl
.propObjectA
.Attributes
= PropertyAttribute
.MAYBEVOID
;
639 cl
.propObjectA
= null;
640 cl
.setPropertyValue("PropObjectA", null);
641 assertNull(cl
.propObjectA
);
643 cl
.propObjectA
= null;
644 cl
.setPropertyValue("PropObjectA", new Any( new Type(byte.class), null));
645 assertNull(cl
.propObjectA
);
648 @Test public void addPropertyChangeListener() throws Exception
650 logger
.log(Level
.INFO
, "PropertySet.addPropertyChangeListener,\n" +
651 "PropertySet.removePropertChangeListener," +
652 "PropertySet.addVetoableChangeListener, \n" +
653 "PropertySet.removeVetoableChangeListener" +
654 "Notification of listeners");
655 TestClass cl
= new TestClass();
656 Listener li
= new Listener();
658 cl
.addPropertyChangeListener("PropByteA", li
);
659 Byte val1
= Byte
.valueOf((byte)115);
660 cl
.setPropertyValue("PropByteA", val1
);
661 assertEquals(li
.nChangeCalled
, 0);
662 assertEquals(li
.nVetoCalled
, 0);
664 cl
.propByteA
.Attributes
= PropertyAttribute
.BOUND
;
665 cl
.addPropertyChangeListener("PropByteA", li
);
666 Byte val2
= Byte
.valueOf((byte)116);
667 cl
.setPropertyValue("PropByteA", val2
);
668 assertEquals(li
.nChangeCalled
, 1);
669 assertEquals(li
.nVetoCalled
, 0);
670 assertEquals(li
.evt
.OldValue
, val1
);
671 assertEquals(li
.evt
.NewValue
, val2
);
672 assertSame(li
.evt
.Source
, cl
);
675 Listener li2
= new Listener();
676 cl
.addPropertyChangeListener("PropByteA", li2
);
677 Byte val3
= Byte
.valueOf((byte) 117);
678 cl
.setPropertyValue("PropByteA", val3
);
679 assertEquals(li
.nChangeCalled
, 1);
680 assertEquals(li
.nVetoCalled
, 0);
681 assertEquals(li2
.nChangeCalled
, 1);
682 assertEquals(li2
.nVetoCalled
, 0);
683 assertEquals(li
.evt
.OldValue
, val2
);
684 assertEquals(li
.evt
.NewValue
,val3
);
685 assertSame(li
.evt
.Source
, cl
);
686 assertEquals(li2
.evt
.OldValue
, val2
);
687 assertEquals(li2
.evt
.NewValue
, val3
);
688 assertSame(li2
.evt
.Source
, cl
);
692 Listener li3
= new Listener();
693 val1
= Byte
.valueOf((byte)118);
694 cl
.addPropertyChangeListener("", li3
);
695 cl
.setPropertyValue("PropByteA", val1
);
696 assertEquals(li
.nChangeCalled
, 1);
697 assertEquals(li
.nVetoCalled
, 0);
698 assertEquals(li2
.nChangeCalled
, 1);
699 assertEquals(li2
.nVetoCalled
, 0);
700 assertEquals(li3
.nChangeCalled
, 1);
701 assertEquals(li3
.nVetoCalled
, 0);
702 assertEquals(li
.evt
.OldValue
, val3
);
703 assertEquals(li
.evt
.NewValue
, val1
);
704 assertSame(li
.evt
.Source
, cl
);
705 assertEquals(li2
.evt
.OldValue
, val3
);
706 assertEquals(li2
.evt
.NewValue
, val1
);
707 assertSame(li2
.evt
.Source
, cl
);
708 assertEquals(li3
.evt
.OldValue
, val3
);
709 assertEquals(li3
.evt
.NewValue
, val1
);
710 assertSame(li3
.evt
.Source
, cl
);
715 cl
.removePropertyChangeListener("PropByteA",li
);
716 cl
.setPropertyValue("PropByteA", val1
);
717 assertEquals(li
.nChangeCalled
, 0);
718 assertEquals(li
.nVetoCalled
, 0);
719 assertEquals(li2
.nChangeCalled
, 1);
720 assertEquals(li2
.nVetoCalled
, 0);
721 assertEquals(li3
.nChangeCalled
, 1);
722 assertEquals(li3
.nVetoCalled
, 0);
724 cl
.removePropertyChangeListener("PropByteA", li2
);
728 cl
.setPropertyValue("PropByteA", val1
);
729 assertEquals(li
.nChangeCalled
, 0);
730 assertEquals(li
.nVetoCalled
, 0);
731 assertEquals(li2
.nChangeCalled
, 0);
732 assertEquals(li2
.nVetoCalled
, 0);
733 assertEquals(li3
.nChangeCalled
, 1);
734 assertEquals(li3
.nVetoCalled
, 0);
736 cl
.removePropertyChangeListener("", li3
);
740 cl
.setPropertyValue("PropByteA", val2
);
741 assertEquals(li
.nChangeCalled
, 0);
742 assertEquals(li
.nVetoCalled
, 0);
743 assertEquals(li2
.nChangeCalled
, 0);
744 assertEquals(li2
.nVetoCalled
, 0);
745 assertEquals(li3
.nChangeCalled
, 0);
746 assertEquals(li3
.nVetoCalled
, 0);
748 cl
.addPropertyChangeListener("PropByteA", li
);
749 cl
.addPropertyChangeListener("PropByteA", li2
);
750 cl
.addPropertyChangeListener("", li3
);
756 cl
.setPropertyValue("PropByteA", val2
);
757 fail("DisposedException expected");
758 } catch (DisposedException e
) {
759 logger
.log(Level
.FINE
, "DisposedException caught");
767 cl
.addVetoableChangeListener("PropByteA", li
);
768 val1
= Byte
.valueOf((byte)115);
769 cl
.setPropertyValue("PropByteA", val1
);
770 assertEquals(li
.nChangeCalled
, 0);
771 assertEquals(li
.nVetoCalled
, 0);
773 cl
.propByteA
.Attributes
= PropertyAttribute
.CONSTRAINED
;
774 cl
.addVetoableChangeListener("PropByteA", li
);
775 val2
= Byte
.valueOf((byte)116);
777 cl
.setPropertyValue("PropByteA", val2
);
778 assertEquals(li
.nChangeCalled
, 0);
779 assertEquals(li
.nVetoCalled
, 1);
780 assertEquals(li
.evt
.OldValue
, val1
);
781 assertEquals(li
.evt
.NewValue
, val2
);
782 assertSame(li
.evt
.Source
, cl
);
787 cl
.addVetoableChangeListener("PropByteA", li2
);
788 val3
= Byte
.valueOf((byte) 117);
789 cl
.setPropertyValue("PropByteA", val3
);
790 assertEquals(li
.nChangeCalled
, 0);
791 assertEquals(li
.nVetoCalled
, 1);
792 assertEquals(li2
.nChangeCalled
, 0);
793 assertEquals(li2
.nVetoCalled
, 1);
794 assertEquals(li
.evt
.OldValue
, val2
);
795 assertEquals(li
.evt
.NewValue
, val3
);
796 assertSame(li
.evt
.Source
, cl
);
797 assertEquals(li2
.evt
.OldValue
, val2
);
798 assertEquals(li2
.evt
.NewValue
, val3
);
799 assertSame(li2
.evt
.Source
, cl
);
804 val1
= Byte
.valueOf((byte)118);
805 cl
.addVetoableChangeListener("", li3
);
806 cl
.setPropertyValue("PropByteA", val1
);
807 assertEquals(li
.nChangeCalled
, 0);
808 assertEquals(li
.nVetoCalled
, 1);
809 assertEquals(li2
.nChangeCalled
, 0);
810 assertEquals(li2
.nVetoCalled
, 1);
811 assertEquals(li3
.nChangeCalled
, 0);
812 assertEquals(li3
.nVetoCalled
, 1);
813 assertEquals(li
.evt
.OldValue
, val3
);
814 assertEquals(li
.evt
.NewValue
, val1
);
815 assertSame(li
.evt
.Source
, cl
);
816 assertEquals(li2
.evt
.OldValue
, val3
);
817 assertEquals(li2
.evt
.NewValue
, val1
);
818 assertSame(li2
.evt
.Source
, cl
);
819 assertEquals(li3
.evt
.OldValue
, val3
);
820 assertEquals(li3
.evt
.NewValue
, val1
);
821 assertSame(li3
.evt
.Source
, cl
);
826 // Test Veto Exception
827 cl
.setPropertyValue("PropByteA", val1
);
830 cl
.setPropertyValue("PropByteA", val2
);
831 fail("PropertyVetoException expected");
832 } catch (PropertyVetoException e
) {
833 logger
.log(Level
.FINE
, "PropertyVetoException caught");
835 assertSame(cl
.bytePropA
, val1
.byteValue());
841 cl
.removeVetoableChangeListener("PropByteA",li
);
842 cl
.setPropertyValue("PropByteA", val1
);
843 assertEquals(li
.nChangeCalled
, 0);
844 assertEquals(li
.nVetoCalled
, 0);
845 assertEquals(li2
.nChangeCalled
, 0);
846 assertEquals(li2
.nVetoCalled
, 1);
847 assertEquals(li3
.nChangeCalled
, 0);
848 assertEquals(li3
.nVetoCalled
, 1);
850 cl
.removeVetoableChangeListener("PropByteA", li2
);
854 cl
.setPropertyValue("PropByteA", val1
);
855 assertEquals(li
.nChangeCalled
, 0);
856 assertEquals(li
.nVetoCalled
, 0);
857 assertEquals(li2
.nChangeCalled
, 0);
858 assertEquals(li2
.nVetoCalled
, 0);
859 assertEquals(li3
.nChangeCalled
, 0);
860 assertEquals(li3
.nVetoCalled
, 1);
862 cl
.removeVetoableChangeListener("", li3
);
866 cl
.setPropertyValue("PropByteA", val2
);
867 assertEquals(li
.nChangeCalled
, 0);
868 assertEquals(li
.nVetoCalled
, 0);
869 assertEquals(li2
.nChangeCalled
, 0);
870 assertEquals(li2
.nVetoCalled
, 0);
871 assertEquals(li3
.nChangeCalled
, 0);
872 assertEquals(li3
.nVetoCalled
, 0);
874 cl
.addVetoableChangeListener("PropByteA", li
);
875 cl
.addVetoableChangeListener("PropByteA", li2
);
876 cl
.addVetoableChangeListener("", li3
);
882 cl
.setPropertyValue("PropByteA", val2
);
883 fail("DisposedException expected");
884 } catch (DisposedException e
) {
885 logger
.log(Level
.FINE
, "DisposedException caught");
889 @Test public void getPropertySetInfo() throws Exception
891 logger
.log(Level
.INFO
, "PropertySet.getPropertySetInfo");
892 TestClass cl
= new TestClass();
893 XPropertySetInfo info
= cl
.getPropertySetInfo();
894 Property
[] arProps
= info
.getProperties();
895 Property
[] arRegProps
= cl
.getRegisteredProperties();
896 assertEquals(arProps
.length
, arRegProps
.length
);
898 for (int j
= 0; j
< arProps
.length
; j
++)
900 boolean bFound
= false;
901 for (int k
= 0; k
< arRegProps
.length
; k
++)
903 if (arProps
[j
] == arRegProps
[k
])
912 for (int j
= 0; j
< arRegProps
.length
; j
++)
914 Property prop
= info
.getPropertyByName(arRegProps
[j
].Name
);
915 assertSame(prop
, arRegProps
[j
]);
916 assertTrue(info
.hasPropertyByName(arRegProps
[j
].Name
));
920 @Test public void setFastPropertyValue() throws Exception
922 logger
.log(Level
.INFO
, "PropertySet.setFastPropertyValue");
923 TestClass cl
= new TestClass();
924 cl
.setFastPropertyValue(5, Integer
.valueOf(111));
925 assertEquals(cl
.intPropA
,111);
927 cl
.setFastPropertyValue(-1, Integer
.valueOf(1));
928 fail("UnknownPropertyException expected");
929 } catch(UnknownPropertyException e
) {
930 logger
.log(Level
.FINE
, "UnknownPropertyException caught");
934 @Test public void getFastPropertyValue() throws Exception
936 logger
.log(Level
.INFO
, "PropertySet.setFastPropertyValue");
937 TestClass cl
= new TestClass();
938 cl
.setFastPropertyValue(5, Integer
.valueOf(111));
939 Integer aInt
= (Integer
) cl
.getFastPropertyValue(5);
940 assertEquals(aInt
.intValue(), 111);
943 @Test public void setPropertyValues() throws Exception
945 logger
.log(Level
.INFO
, "PropertySet.setPropertyValues");
946 TestClass cl
= new TestClass();
947 cl
.setPropertyValues(new String
[0], new Object
[0]);
948 String
[] arNames
= new String
[] {"PropCharA","PropIntClass","PropObjectA"};
949 Character aChar
= Character
.valueOf('A');
950 Integer aInt
= Integer
.valueOf(111);
951 Byte aByte
= Byte
.valueOf((byte)11);
952 Object
[] values
= new Object
[]{aChar
, aInt
, aByte
};
953 cl
.setPropertyValues(arNames
, values
);
954 assertEquals(cl
.charPropA
, 'A');
955 assertEquals(cl
.intClassProp
.intValue(), 111);
956 assertEquals(((Byte
)cl
.objectPropA
).byteValue(), 11);
958 arNames
= new String
[] {"blabla","PropIntClass","PropObjectA"};
959 cl
.resetPropertyMembers();
960 cl
.setPropertyValues(arNames
, values
);
961 assertEquals(cl
.intClassProp
.intValue(), 111);
962 assertEquals(((Byte
)cl
.objectPropA
).byteValue(), 11);
965 @Test public void getPropertyValues() throws Exception
967 logger
.log(Level
.INFO
, "PropertySet.getPropertyValues");
968 TestClass cl
= new TestClass();
970 cl
.intClassProp
= Integer
.valueOf(111);
971 cl
.objectPropA
= Byte
.valueOf((byte)11);
972 Object
[] values
= cl
.getPropertyValues(new String
[] {"PropCharA","PropIntClass","PropObjectA"});
973 assertEquals(((Character
) values
[0]).charValue(), 'A');
974 assertEquals(((Integer
) values
[1]).intValue(), 111);
975 assertEquals(((Byte
) values
[2]).byteValue(), 11);
978 // Currently the listeners are always notified if one of properties has changed.
979 // The property names in the first argument are ignored.
980 @Test public void addPropertiesChangeListener() throws Exception
982 logger
.log(Level
.INFO
, "PropertySet.addPropertiesChangeListener\n" +
983 "PropertySet.removePropertiesChangeListener\n" +
984 "notification of such listeners");
985 TestClass cl
= new TestClass();
986 Listener li1
= new Listener();
988 cl
.addPropertiesChangeListener(new String
[]{"PropCharA"}, li1
);
989 cl
.setPropertyValue("PropCharA", Character
.valueOf('B'));
990 assertEquals(li1
.nPropertiesChange
, 0);
992 cl
.propCharA
.Attributes
= PropertyAttribute
.BOUND
;
993 cl
.setPropertyValue("PropCharA", Character
.valueOf('C'));
994 assertEquals(li1
.nPropertiesChange
, 1);
996 PropertyChangeEvent evt
= li1
.arEvt
[0];
997 assertEquals(evt
.PropertyName
, "PropCharA");
998 assertEquals(((Character
)evt
.OldValue
).charValue(), 'B');
999 assertEquals(((Character
) evt
.NewValue
).charValue(), 'C');
1002 cl
.removePropertiesChangeListener(li1
);
1003 cl
.setPropertyValue("PropCharA", Character
.valueOf('F'));
1004 assertEquals(li1
.nPropertiesChange
, 0);
1007 @Test public void firePropertiesChangeEvent() throws Exception
1009 logger
.log(Level
.INFO
, "PropertySet.firePropertiesChangeEvent");
1010 TestClass cl
= new TestClass();
1011 Listener li1
= new Listener();
1013 cl
.intClassProp
= Integer
.valueOf(111);
1015 cl
.firePropertiesChangeEvent(new String
[]{"PropCharA","PropIntClass"}, li1
);
1016 assertEquals(li1
.nPropertiesChange
, 1);
1018 PropertyChangeEvent
[] arEvt
= li1
.arEvt
;
1019 assertEquals(arEvt
[0].PropertyName
, "PropCharA");
1020 assertEquals(((Character
) arEvt
[0].OldValue
).charValue(), 'A');
1021 assertEquals(((Character
) arEvt
[0].NewValue
).charValue(), 'A');
1022 assertEquals(arEvt
[1].PropertyName
, "PropIntClass");
1023 assertEquals(((Integer
) arEvt
[1].OldValue
).intValue(), 111);
1024 assertEquals(((Integer
) arEvt
[1].NewValue
).intValue(), 111);
1027 @Test public void registerProperty1() throws Exception
1029 TestClass2 cl
= new TestClass2();
1030 cl
.test_registerProperty1();
1033 @Test public void registerProperty2() throws Exception
1035 TestClass2 cl
= new TestClass2();
1036 cl
.test_registerProperty2();
1040 class TestClass
extends PropertySet
1042 private static final Logger logger
= Logger
.getLogger(TestClass
.class.getName());
1044 public Property propBoolA
= new Property("PropBoolA", 1, new Type(Boolean
.TYPE
), (short)0);
1045 public boolean boolPropA
;
1046 public Property propCharA
= new Property("PropCharA", 2, new Type(Character
.TYPE
), (short) 0);
1047 public char charPropA
;
1048 public Property propByteA
= new Property("PropByteA", 3, new Type(Byte
.TYPE
), (short) 0);
1049 public byte bytePropA
;
1050 public Property propShortA
= new Property("PropShortA", 4, new Type(Short
.TYPE
), (short) 0);
1051 public short shortPropA
;
1052 public Property propIntA
= new Property("PropIntA", 5, new Type(Integer
.TYPE
), (short) 0);
1053 public int intPropA
;
1054 public Property propLongA
= new Property("PropLongA", 6, new Type(Long
.TYPE
), (short) 0);
1055 public long longPropA
;
1056 public Property propFloatA
= new Property("PropFloatA", 7, new Type(Float
.TYPE
), (short) 0);
1057 public float floatPropA
;
1058 public Property propDoubleA
= new Property("PropDoubleA", 8, new Type(Double
.TYPE
), (short) 0);
1059 public double doublePropA
;
1060 public Property propStringA
= new Property("PropStringA", 9, new Type(String
.class), (short) 0);
1061 public String stringPropA
;
1062 public Property propArrayByteA
= new Property("PropArrayByteA", 10, new Type(byte[].class), (short) 0);
1063 public byte[] arBytePropA
;
1064 public Property propTypeA
= new Property("PropTypeA", 11, new Type(Type
.class), (short) 0);
1065 public Type typePropA
;
1066 public Property propObjectA
= new Property("PropObjectA",12, new Type(Object
.class), (short) 0);
1067 public Object objectPropA
;
1068 public Property propAnyA
= new Property("PropAnyA", 13, new Type(Any
.class), (short) 0);
1069 public Any anyPropA
;
1070 public Property propXInterfaceA
= new Property("PropXInterfaceA", 13, new Type(Any
.class), (short) 0);
1071 public XInterface xInterfacePropA
;
1072 public Property propXWeakA
= new Property("PropXWeakA", 13, new Type(Any
.class), (short) 0);
1073 public XWeak xWeakPropA
;
1074 public Property propEnum
=
1075 new Property("PropEnum", 14, new Type("com.sun.star.beans.PropertyState", TypeClass
.ENUM
), (short)0);
1076 public com
.sun
.star
.beans
.PropertyState enumPropertyState
= com
.sun
.star
.beans
.PropertyState
.DEFAULT_VALUE
;
1077 // Test private, protected, package access, Anys as arguments and members, members with a value
1079 public Property propBoolB
= new Property("PropBoolB", 101, new Type(Boolean
.TYPE
), (short) 0);
1080 protected boolean boolPropB
;
1082 public Property propBoolC
= new Property("PropBoolC", 201, new Type(Boolean
.TYPE
), (short) 0);
1085 public Property propBoolD
= new Property("PropBoolD", 301, new Type(Boolean
.TYPE
), (short) 0);
1087 public Property propBoolClass
= new Property("PropBoolClass", 1001, new Type(Boolean
.class), (short) 0);
1088 public Boolean boolClassProp
;
1089 public Property propCharClass
= new Property("PropCharClass", 1002, new Type(Character
.class), (short) 0);
1090 public Character charClassProp
;
1091 public Property propByteClass
= new Property("PropByteClass", 1003, new Type(Byte
.class), (short) 0);
1092 public Byte byteClassProp
;
1093 public Property propShortClass
= new Property("PropShortClass", 1004, new Type(Short
.class), (short) 0);
1094 public Short shortClassProp
;
1095 public Property propIntClass
= new Property("PropIntClass", 1005, new Type(Integer
.class), (short) 0);
1096 public Integer intClassProp
;
1097 public Property propLongClass
= new Property("PropLongClass", 1006, new Type(Long
.class), (short) 0);
1098 public Long longClassProp
;
1099 public Property propFloatClass
= new Property("PropFloatClass", 1007, new Type(Float
.class), (short) 0);
1100 public Float floatClassProp
;
1101 public Property propDoubleClass
= new Property("PropDoubleClass", 1008, new Type(Double
.class), (short) 0);
1102 public Double doubleClassProp
;
1109 // When adding properties then modify the getRegisteredProperties method
1110 // registerProperty(String name, int handle, Type type, short attributes, String memberName)
1111 registerProperty(propBoolA
, "boolPropA");
1112 registerProperty(propCharA
, "charPropA");
1113 registerProperty(propByteA
, "bytePropA");
1114 registerProperty(propShortA
, "shortPropA");
1115 registerProperty(propIntA
, "intPropA");
1116 registerProperty(propLongA
, "longPropA");
1117 registerProperty(propFloatA
, "floatPropA");
1118 registerProperty(propDoubleA
, "doublePropA");
1119 registerProperty(propStringA
, "stringPropA");
1120 registerProperty(propArrayByteA
, "arBytePropA");
1121 registerProperty(propTypeA
, "typePropA");
1122 registerProperty(propObjectA
, "objectPropA");
1123 registerProperty(propAnyA
, "anyPropA");
1124 registerProperty(propXInterfaceA
, "xInterfacePropA");
1125 registerProperty(propXWeakA
, "xWeakPropA");
1126 registerProperty(propEnum
,"enumPropertyState");
1127 registerProperty(propBoolB
, "boolPropB");
1128 registerProperty(propBoolC
, "boolPropC");
1129 registerProperty(propBoolD
, "boolPropD");
1130 registerProperty(propBoolClass
, "boolClassProp");
1131 registerProperty(propCharClass
, "charClassProp");
1132 registerProperty(propByteClass
, "byteClassProp");
1133 registerProperty(propShortClass
, "shortClassProp");
1134 registerProperty(propIntClass
, "intClassProp");
1135 registerProperty(propLongClass
, "longClassProp");
1136 registerProperty(propFloatClass
, "floatClassProp");
1137 registerProperty(propDoubleClass
, "doubleClassProp");
1140 /** When adding properties then modify the getRegisteredProperties method
1142 public Property
[] getRegisteredProperties()
1144 return new Property
[] {
1145 propBoolA
, propCharA
, propByteA
, propShortA
,
1146 propIntA
, propLongA
, propFloatA
, propDoubleA
,
1147 propStringA
, propArrayByteA
, propTypeA
, propObjectA
,
1148 propAnyA
, propXInterfaceA
, propXWeakA
, propEnum
, propBoolB
,
1149 propBoolC
, propBoolD
, propBoolClass
, propCharClass
,
1150 propByteClass
, propShortClass
, propIntClass
, propLongClass
,
1151 propFloatClass
, propDoubleClass
1156 public void test_convertPropertyValue() throws Exception
1158 resetPropertyMembers();
1159 Object
[] outOldVal
= new Object
[1];
1160 Object
[] outNewVal
= new Object
[1];
1162 Object value
= Boolean
.TRUE
;
1163 assertTrue(convertPropertyValue(propBoolA
, outNewVal
, outOldVal
, value
));
1164 assertTrue(outNewVal
[0] instanceof Boolean
);
1165 assertEquals(outNewVal
[0], value
);
1166 assertEquals(outOldVal
[0], Boolean
.FALSE
);
1168 value
= Character
.valueOf('A');
1169 assertTrue(convertPropertyValue(propCharA
, outNewVal
, outOldVal
, value
));
1170 assertTrue(outNewVal
[0] instanceof Character
);
1171 assertEquals(outNewVal
[0], value
);
1172 assertEquals(outOldVal
[0], Character
.valueOf((char)0));
1175 assertTrue(convertPropertyValue(propCharA
, outNewVal
, outOldVal
, value
));
1176 assertTrue(outNewVal
[0] instanceof Character
);
1177 assertEquals(outNewVal
[0], value
);
1178 assertEquals(outOldVal
[0], Character
.valueOf('B'));
1180 value
= Byte
.valueOf((byte) 111);
1181 assertTrue(convertPropertyValue(propByteA
, outNewVal
, outOldVal
, value
));
1182 assertTrue(outNewVal
[0] instanceof Byte
);
1183 assertEquals(outNewVal
[0], value
);
1185 value
= Short
.valueOf((short) 112);
1186 assertTrue(convertPropertyValue(propShortA
, outNewVal
, outOldVal
, value
));
1187 assertTrue(outNewVal
[0] instanceof Short
);
1188 assertEquals(outNewVal
[0], value
);
1190 value
= Integer
.valueOf( 113);
1191 assertTrue(convertPropertyValue(propIntA
, outNewVal
, outOldVal
, value
));
1192 assertTrue(outNewVal
[0] instanceof Integer
);
1193 assertEquals(outNewVal
[0], value
);
1195 value
= Long
.valueOf(114);
1196 assertTrue(convertPropertyValue(propLongA
, outNewVal
, outOldVal
, value
));
1197 assertTrue(outNewVal
[0] instanceof Long
);
1198 assertEquals(outNewVal
[0], value
);
1200 value
= Float
.valueOf(3.14f
);
1201 assertTrue(convertPropertyValue(propFloatA
, outNewVal
, outOldVal
, value
));
1202 assertTrue(outNewVal
[0] instanceof Float
);
1203 assertEquals(outNewVal
[0], value
);
1205 value
= Double
.valueOf(3.145);
1206 assertTrue(convertPropertyValue(propDoubleA
, outNewVal
, outOldVal
, value
));
1207 assertTrue(outNewVal
[0] instanceof Double
);
1208 assertEquals(outNewVal
[0], value
);
1211 assertTrue(convertPropertyValue(propStringA
, outNewVal
, outOldVal
, value
));
1212 assertTrue(outNewVal
[0] instanceof String
);
1213 assertEquals(outNewVal
[0], value
);
1215 value
= new byte[]{1,2,3};
1217 assertTrue(convertPropertyValue(propArrayByteA
, outNewVal
, outOldVal
, value
));
1218 assertTrue(outNewVal
[0] instanceof byte[]);
1219 assertEquals(outNewVal
[0], value
);
1220 assertNull(outOldVal
[0]);
1222 assertTrue(convertPropertyValue(propArrayByteA
, outNewVal
, outOldVal
, value
));
1223 assertNull(outOldVal
[0]);
1225 value
= new Type(XInterface
.class);
1226 assertTrue(convertPropertyValue(propTypeA
, outNewVal
, outOldVal
, value
));
1227 assertTrue(outNewVal
[0] instanceof Type
);
1228 assertEquals(outNewVal
[0], value
);
1230 value
= new Object(); // TypeClass.VOID
1231 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1232 assertEquals(outNewVal
[0], value
);
1234 value
= Integer
.valueOf(111);
1235 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1236 assertTrue(outNewVal
[0] instanceof Integer
);
1237 assertEquals(outNewVal
[0], value
);
1239 value
= new ComponentBase();
1240 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1241 assertEquals(outNewVal
[0], value
);
1243 value
= Integer
.valueOf(111);
1244 assertTrue(convertPropertyValue(propAnyA
, outNewVal
, outOldVal
, value
));
1245 assertTrue(outNewVal
[0] instanceof Any
);
1246 assertEquals(((Any
)outNewVal
[0]).getType(), new Type(Integer
.class));
1247 assertEquals(((Any
)outNewVal
[0]).getObject(), value
);
1249 XWeak oWeak
= new ComponentBase();
1251 // The returned Any must contain an XInterface
1252 assertTrue(convertPropertyValue(propAnyA
, outNewVal
, outOldVal
, value
));
1253 assertEquals(((Any
) outNewVal
[0]).getType(), new Type(XInterface
.class));
1254 assertSame(((Any
) outNewVal
[0]).getObject(), oWeak
);
1256 value
= new ComponentBase();
1257 assertTrue(convertPropertyValue(propXInterfaceA
, outNewVal
, outOldVal
, value
));
1258 assertTrue(outNewVal
[0] instanceof XInterface
);
1259 assertEquals(outNewVal
[0], value
);
1260 assertTrue(convertPropertyValue(propXWeakA
, outNewVal
, outOldVal
, value
));
1261 assertTrue(outNewVal
[0] instanceof XWeak
);
1262 assertEquals(outNewVal
[0], value
);
1264 value
= com
.sun
.star
.beans
.PropertyState
.DIRECT_VALUE
;
1265 assertTrue(convertPropertyValue(propEnum
, outNewVal
, outOldVal
, value
));
1266 assertTrue(outNewVal
[0] instanceof com
.sun
.star
.uno
.Enum
);
1267 assertEquals(outNewVal
[0], value
);
1269 // Any arguments ------------------------------------------------------------------
1270 value
= new Any( new Type(Integer
.class),Integer
.valueOf(111));
1271 assertTrue(convertPropertyValue(propIntA
, outNewVal
, outOldVal
, value
));
1272 assertTrue(outNewVal
[0] instanceof Integer
);
1273 assertEquals(outNewVal
[0], ((Any
) value
).getObject());
1275 value
= new Any(new Type(Boolean
.class), Boolean
.TRUE
);
1276 assertTrue(convertPropertyValue(propBoolA
, outNewVal
, outOldVal
, value
));
1277 assertTrue(outNewVal
[0] instanceof Boolean
);
1278 assertEquals(outNewVal
[0], ((Any
) value
).getObject());
1280 //Character, Byte, Short, Long
1283 value
= new Any(new Type(Object
.class), new Object());
1284 fail("java.lang.IllegalArgumentException expected");
1285 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1286 assertTrue(convertPropertyValue(propAnyA
, outNewVal
, outOldVal
, value
));
1287 } catch (java
.lang
.IllegalArgumentException e
) {
1288 logger
.log(Level
.FINE
, "java.lang.IllegalArgumentException caught");
1291 value
= new Any(new Type(Integer
.class), Integer
.valueOf(111));
1292 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1293 assertTrue(outNewVal
[0] instanceof Integer
);
1294 assertEquals(outNewVal
[0], ((Any
)value
).getObject());
1295 assertTrue(convertPropertyValue(propAnyA
, outNewVal
, outOldVal
, value
));
1296 assertTrue(outNewVal
[0] instanceof Any
);
1297 assertEquals(((Any
) outNewVal
[0]).getType(), ((Any
) value
).getType());
1298 assertEquals(((Any
) outNewVal
[0]).getObject(), ((Any
) value
).getObject());
1300 value
= new Any(new Type(XInterface
.class), new ComponentBase());
1301 assertTrue(convertPropertyValue(propObjectA
, outNewVal
, outOldVal
, value
));
1302 assertTrue(outNewVal
[0] instanceof XInterface
);
1303 assertSame(outNewVal
[0], ((Any
) value
).getObject());
1304 assertTrue(convertPropertyValue(propXInterfaceA
, outNewVal
, outOldVal
, value
));
1305 assertSame(outNewVal
[0], ((Any
) value
).getObject());
1307 value
= new Any(new Type(byte[].class), new byte[]{1,2,3});
1308 assertTrue(convertPropertyValue(propArrayByteA
, outNewVal
, outOldVal
, value
));
1309 assertTrue(outNewVal
[0] instanceof byte[]);
1311 // test private, protected, package fields
1312 value
= Boolean
.TRUE
;
1313 assertTrue(convertPropertyValue(propBoolB
, outNewVal
, outOldVal
, value
));
1314 assertEquals(((Boolean
)value
).booleanValue(), ((Boolean
) outNewVal
[0]).booleanValue());
1315 assertTrue(convertPropertyValue(propBoolC
, outNewVal
, outOldVal
, value
));
1316 assertEquals(((Boolean
)value
).booleanValue(), ((Boolean
) outNewVal
[0]).booleanValue());
1317 // must fail because the member boolPropD is private
1319 convertPropertyValue(propBoolD
, outNewVal
, outOldVal
, value
);
1320 fail("com.sun.star.lang.WrappedTargetException expected");
1321 } catch (com
.sun
.star
.lang
.WrappedTargetException e
) {
1322 logger
.log(Level
.FINE
, "com.sun.star.lang.WrappedTargetException caught");
1325 // Properties member of type Byte,Short etc.
1326 value
= Boolean
.TRUE
;
1327 assertTrue(convertPropertyValue(propBoolClass
, outNewVal
, outOldVal
, value
));
1328 assertTrue(outNewVal
[0] instanceof Boolean
);
1329 assertEquals(outNewVal
[0], value
);
1331 value
= Character
.valueOf('A');
1332 assertTrue(convertPropertyValue(propCharClass
, outNewVal
, outOldVal
, value
));
1333 assertTrue(outNewVal
[0] instanceof Character
);
1334 assertEquals(outNewVal
[0], value
);
1336 value
= Byte
.valueOf((byte) 111);
1337 assertTrue(convertPropertyValue(propByteClass
, outNewVal
, outOldVal
, value
));
1338 assertTrue(outNewVal
[0] instanceof Byte
);
1339 assertEquals(outNewVal
[0], value
);
1341 value
= Short
.valueOf((short) 112);
1342 assertTrue(convertPropertyValue(propShortClass
, outNewVal
, outOldVal
, value
));
1343 assertTrue(outNewVal
[0] instanceof Short
);
1344 assertEquals(outNewVal
[0], value
);
1346 value
= Integer
.valueOf(113);
1347 assertTrue(convertPropertyValue(propIntClass
, outNewVal
, outOldVal
, value
));
1348 assertTrue(outNewVal
[0] instanceof Integer
);
1349 assertEquals(outNewVal
[0], value
);
1351 value
= Long
.valueOf(114);
1352 assertTrue(convertPropertyValue(propLongClass
, outNewVal
, outOldVal
, value
));
1353 assertTrue(outNewVal
[0] instanceof Long
);
1354 assertEquals(outNewVal
[0], value
);
1356 value
= Float
.valueOf(3.14f
);
1357 assertTrue(convertPropertyValue(propFloatClass
, outNewVal
, outOldVal
, value
));
1358 assertTrue(outNewVal
[0] instanceof Float
);
1359 assertEquals(outNewVal
[0], value
);
1361 value
= Double
.valueOf(3.145);
1362 assertTrue(convertPropertyValue(propDoubleA
, outNewVal
, outOldVal
, value
));
1363 assertTrue(outNewVal
[0] instanceof Double
);
1364 assertEquals(outNewVal
[0], value
);
1367 public void test_setPropertyValueNoBroadcast() throws Exception
1369 resetPropertyMembers();
1371 Object value
= Boolean
.TRUE
;
1372 setPropertyValueNoBroadcast(propBoolA
, value
);
1373 assertEquals(boolPropA
, ((Boolean
) value
).booleanValue());
1375 value
= Character
.valueOf('A');
1376 setPropertyValueNoBroadcast(propCharA
, value
);
1377 assertEquals(charPropA
, ((Character
) value
).charValue());
1379 value
= Byte
.valueOf((byte) 111);
1380 setPropertyValueNoBroadcast(propByteA
, value
);
1381 assertEquals(bytePropA
, ((Byte
)value
).byteValue());
1383 value
= Short
.valueOf((short) 112);
1384 setPropertyValueNoBroadcast(propShortA
, value
);
1385 assertEquals(shortPropA
, ((Short
) value
).shortValue());
1387 value
= Integer
.valueOf( 113);
1388 setPropertyValueNoBroadcast(propIntA
, value
);
1389 assertEquals(intPropA
, ((Integer
) value
).intValue());
1391 value
= Long
.valueOf(114);
1392 setPropertyValueNoBroadcast(propLongA
, value
);
1393 assertEquals(longPropA
, ((Long
) value
).longValue());
1395 value
= Float
.valueOf(3.14f
);
1396 setPropertyValueNoBroadcast(propFloatA
, value
);
1397 assertEquals(floatPropA
, ((Float
) value
).floatValue(), 0.0f
);
1399 value
= Double
.valueOf(3.145);
1400 setPropertyValueNoBroadcast(propDoubleA
, value
);
1401 assertEquals(doublePropA
, ((Double
) value
).doubleValue(), 0.0f
);
1404 setPropertyValueNoBroadcast(propStringA
, value
);
1405 assertEquals(stringPropA
, value
);
1407 value
= new byte[]{1,2,3};
1408 setPropertyValueNoBroadcast(propArrayByteA
, value
);
1409 assertEquals(arBytePropA
, value
);
1411 value
= new Type(XInterface
.class);
1412 setPropertyValueNoBroadcast(propTypeA
, value
);
1413 assertEquals(typePropA
, value
);
1415 value
= Integer
.valueOf(111);
1416 setPropertyValueNoBroadcast(propObjectA
, value
);
1417 assertEquals(objectPropA
, value
);
1419 value
= new ComponentBase();
1420 setPropertyValueNoBroadcast(propObjectA
, value
);
1421 assertEquals(objectPropA
, value
);
1423 value
= new Any( new Type(Integer
.TYPE
), Integer
.valueOf(111));
1424 setPropertyValueNoBroadcast(propAnyA
, value
);
1425 assertTrue(util
.anyEquals(anyPropA
, value
));
1427 value
= new ComponentBase();
1428 setPropertyValueNoBroadcast(propXInterfaceA
, value
);
1429 assertTrue(xInterfacePropA
instanceof XInterface
);
1430 assertEquals(xInterfacePropA
, value
);
1432 setPropertyValueNoBroadcast(propXWeakA
, value
);
1433 assertTrue(xInterfacePropA
instanceof XWeak
);
1434 assertEquals(xInterfacePropA
, value
);
1436 value
= com
.sun
.star
.beans
.PropertyState
.AMBIGUOUS_VALUE
;
1437 setPropertyValueNoBroadcast(propEnum
, value
);
1438 assertSame(enumPropertyState
, value
);
1440 value
= Boolean
.TRUE
;
1441 setPropertyValueNoBroadcast(propBoolB
, value
);
1442 assertEquals(boolPropB
, ((Boolean
) value
).booleanValue());
1444 setPropertyValueNoBroadcast(propBoolC
, value
);
1445 assertEquals(boolPropC
, ((Boolean
) value
).booleanValue());
1447 // must fail because the member boolPropD is private
1449 setPropertyValueNoBroadcast(propBoolD
, value
);
1450 fail("com.sun.star.lang.WrappedTargetException expected");
1451 } catch (com
.sun
.star
.lang
.WrappedTargetException e
) {
1452 logger
.log(Level
.FINE
, "com.sun.star.lang.WrappedTargetException caught");
1456 void resetPropertyMembers()
1459 charPropA
= (char) 0;
1471 xInterfacePropA
= null;
1473 enumPropertyState
= com
.sun
.star
.beans
.PropertyState
.DEFAULT_VALUE
;
1476 boolClassProp
= null;
1477 charClassProp
= null;
1478 byteClassProp
= null;
1479 shortClassProp
= null;
1481 longClassProp
= null;
1482 floatClassProp
= null;
1483 doubleClassProp
= null;
1487 class TestClass2
extends PropertySet
1491 protected char charB
;
1496 public Character charClassA
;
1497 protected Character charClassB
;
1498 Character charClassC
;
1500 void test_registerProperty1() throws Exception
1502 registerProperty("PropChar", new Type(char.class), (short) 0, "PropChar");
1503 registerProperty("PropInt", new Type(int.class), (short) 0, "PropInt");
1504 registerProperty("PropString", new Type(String
.class), (short) 0, "PropString");
1506 XPropertySetInfo info
= getPropertySetInfo();
1507 Property
[] props
= info
.getProperties();
1508 for (int j
= 0; j
< props
.length
; j
++)
1510 boolean result
= false;
1511 Property aProp
= props
[j
];
1512 if (aProp
.Name
.equals("PropChar") && aProp
.Type
.equals(new Type(char.class)) &&
1513 aProp
.Attributes
== 0)
1515 else if (aProp
.Name
.equals("PropInt") && aProp
.Type
.equals(new Type(int.class)) &&
1516 aProp
.Attributes
== 0)
1518 else if (aProp
.Name
.equals("PropString") && aProp
.Type
.equals(new Type(String
.class)) &&
1519 aProp
.Attributes
== 0)
1525 void test_registerProperty2() throws Exception
1527 System
.out
.println("registerProperty Test 2");
1529 registerProperty("charA", "charA", (short) 0);
1530 registerProperty("charB", "charB", (short) 0);
1531 registerProperty("charC", "charC", (short) 0);
1532 registerProperty("charClassB", "charClassB", PropertyAttribute
.MAYBEVOID
);
1533 registerProperty("IntProp", "intMemberA", (short) 0);
1535 XPropertySetInfo info
= getPropertySetInfo();
1536 Property
[] props
= info
.getProperties();
1537 for (int j
= 0; j
< props
.length
; j
++)
1539 boolean result
= false;
1540 Property aProp
= props
[j
];
1541 if (aProp
.Name
.equals("charA") && aProp
.Type
.equals(new Type(char.class)) &&
1542 aProp
.Attributes
== 0)
1544 else if (aProp
.Name
.equals("charB") && aProp
.Type
.equals(new Type(char.class)) &&
1545 aProp
.Attributes
== 0)
1547 else if (aProp
.Name
.equals("charC") && aProp
.Type
.equals(new Type(char.class)) &&
1548 aProp
.Attributes
== 0)
1550 else if (aProp
.Name
.equals("charClassB") && aProp
.Type
.equals(new Type(char.class)) &&
1551 aProp
.Attributes
== PropertyAttribute
.MAYBEVOID
)
1553 else if (aProp
.Name
.equals("IntProp") && aProp
.Type
.equals(new Type(int.class)) &&
1554 aProp
.Attributes
== 0)
1558 Object val
= Character
.valueOf('A');
1559 setPropertyValue("charA", val
);
1560 assertEquals(val
, getPropertyValue("charA"));
1561 setPropertyValue("charClassB",val
);
1562 assertEquals(val
, getPropertyValue("charClassB"));
1563 val
= Integer
.valueOf(111);
1564 setPropertyValue("IntProp",val
);
1565 assertEquals(val
, getPropertyValue("IntProp"));
1571 // An Object is considered an Any with TypeClass.VOID and no value.
1572 static boolean anyEquals(Object val1
, Object val2
)
1578 if (val1
instanceof Any
)
1580 obj1
= ((Any
) val1
).getObject();
1581 t1
= ((Any
) val1
).getType();
1586 if (val2
instanceof Any
)
1588 obj2
= ((Any
) val2
).getObject();
1589 t2
= ((Any
) val2
).getType();
1594 if (obj1
!= null && obj1
.equals(obj2
))
1596 else if ((obj1
== null && obj2
== null) && t1
!= null && t1
.equals(t2
))
1601 // returns true if obj is an any that contains a void or interface type and the
1603 static boolean isVoidAny(Object obj
)
1606 if(obj
instanceof Any
)
1609 if( a
.getType().getTypeClass().equals( TypeClass
.INTERFACE
)
1610 && a
.getObject() == null) {
1613 else if( a
.getType().equals( new Type(void.class)) && a
.getObject() == null) {
1621 class Listener
implements XPropertyChangeListener
, XVetoableChangeListener
,
1622 XPropertiesChangeListener
1625 int nPropertiesChange
;
1627 boolean bVeto
= false;
1628 PropertyChangeEvent evt
;
1629 PropertyChangeEvent
[] arEvt
;
1630 // XPropertyChangeListener
1631 public void propertyChange(PropertyChangeEvent evt
)
1637 //VetoableChangeListener
1638 public void vetoableChange(PropertyChangeEvent evt
) throws PropertyVetoException
1643 throw new PropertyVetoException();
1646 public void disposing( /*IN*/EventObject Source
)
1653 nPropertiesChange
= 0;
1659 // XPropertiesChangeListener
1660 public void propertiesChange(PropertyChangeEvent
[] propertyChangeEvent
)
1662 nPropertiesChange
++;
1663 arEvt
= propertyChangeEvent
;