1
2
3
4
5
6
7
8 package org.codehaus.metaclass.tools.qdox;
9
10 import com.thoughtworks.qdox.model.DefaultDocletTag;
11 import com.thoughtworks.qdox.model.JavaClass;
12 import com.thoughtworks.qdox.model.JavaField;
13 import com.thoughtworks.qdox.model.JavaMethod;
14 import com.thoughtworks.qdox.model.JavaParameter;
15 import com.thoughtworks.qdox.model.Type;
16 import java.util.ArrayList;
17 import java.util.Properties;
18 import junit.framework.TestCase;
19 import org.codehaus.metaclass.model.Attribute;
20 import org.codehaus.metaclass.model.ClassDescriptor;
21 import org.codehaus.metaclass.model.FieldDescriptor;
22 import org.codehaus.metaclass.model.MethodDescriptor;
23 import org.codehaus.metaclass.model.ParameterDescriptor;
24
25 /***
26 * @author Peter Donald
27 * @version $Revision: 1.5 $ $Date: 2003/11/28 11:14:55 $
28 */
29 public class QDoxDescriptorParserTestCase
30 extends TestCase
31 {
32 public void testParseValueIntoParametersWithSimpleString()
33 throws Exception
34 {
35 final String value = "key1";
36 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
37 final Properties parameters = parser.parseValueIntoParameters( value );
38 assertNull( "parameters", parameters );
39 }
40
41 public void testParseValueIntoParametersWithKeyStartingWithNonIdentifier()
42 throws Exception
43 {
44 final String value = "*key1=\"a\"";
45 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
46 final Properties parameters = parser.parseValueIntoParameters( value );
47 assertNull( "parameters", parameters );
48 }
49
50 public void testParseValueIntoParametersWithValueNotStartingWithTalkies()
51 throws Exception
52 {
53 final String value = "key1=a";
54 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
55 final Properties parameters = parser.parseValueIntoParameters( value );
56 assertNull( "parameters", parameters );
57 }
58
59 public void testParseValueIntoParametersWithSimpleStringAndEquals()
60 throws Exception
61 {
62 final String value = "key1=";
63 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
64 final Properties parameters = parser.parseValueIntoParameters( value );
65 assertNull( "parameters", parameters );
66 }
67
68 public void testParseValueIntoParametersWithSimpleStringAndValueStart()
69 throws Exception
70 {
71 final String value = "key1=\"";
72 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
73 final Properties parameters = parser.parseValueIntoParameters( value );
74 assertNull( "parameters", parameters );
75 }
76
77 public void testParseValueIntoParametersWithSimpleStringAndValueUnEnded()
78 throws Exception
79 {
80 final String value = "key1=\"value1";
81 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
82 final Properties parameters = parser.parseValueIntoParameters( value );
83 assertNull( "parameters", parameters );
84 }
85
86 public void testParseValueIntoParametersWithSimpleStringAndValidStart()
87 throws Exception
88 {
89 final String value = "key1=\"value1\" key2";
90 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
91 final Properties parameters = parser.parseValueIntoParameters( value );
92 assertNull( "parameters", parameters );
93 }
94
95 public void testParseValueIntoParametersWithSimpleStringAndEqualsAndValidStart()
96 throws Exception
97 {
98 final String value = "key1=\"value1\" key2=";
99 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
100 final Properties parameters = parser.parseValueIntoParameters( value );
101 assertNull( "parameters", parameters );
102 }
103
104 public void testParseValueIntoParametersWithSimpleStringAndValueStartAndValidStart()
105 throws Exception
106 {
107 final String value = "key1=\"value1\" key2=\"";
108 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
109 final Properties parameters = parser.parseValueIntoParameters( value );
110 assertNull( "parameters", parameters );
111 }
112
113 public void testParseValueIntoParametersWithSimpleStringAndValueUnEndedAndValidStart()
114 throws Exception
115 {
116 final String value = "key1=\"value1\" key2=\"value1";
117 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
118 final Properties parameters = parser.parseValueIntoParameters( value );
119 assertNull( "parameters", parameters );
120 }
121
122 public void testParseValueIntoParametersWithSingleKey()
123 throws Exception
124 {
125 final String value = "key1=\"value1\"";
126 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
127 final Properties parameters = parser.parseValueIntoParameters( value );
128 assertNotNull( "parameters", parameters );
129 assertEquals( "parameters.lenght", 1, parameters.size() );
130 assertEquals( "parameters.get('key')",
131 "value1",
132 parameters.getProperty( "key1" ) );
133 }
134
135 public void testParseValueIntoParametersWithSingleKeySurroundedByWhitespace()
136 throws Exception
137 {
138 final String value = " \t \n key1=\"value1\" \n\t";
139 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
140 final Properties parameters = parser.parseValueIntoParameters( value );
141 assertNotNull( "parameters", parameters );
142 assertEquals( "parameters.lenght", 1, parameters.size() );
143 assertEquals( "parameters.get('key')",
144 "value1",
145 parameters.getProperty( "key1" ) );
146 }
147
148 public void testParseValueIntoParametersWithMultipleKey()
149 throws Exception
150 {
151 final String value = "key1=\"value1\" key2=\"value2\"";
152 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
153 final Properties parameters = parser.parseValueIntoParameters( value );
154 assertNotNull( "parameters", parameters );
155 assertEquals( "parameters.lenght", 2, parameters.size() );
156 assertEquals( "parameters.get('key1')",
157 "value1",
158 parameters.getProperty( "key1" ) );
159 assertEquals( "parameters.get('key2')",
160 "value2",
161 parameters.getProperty( "key2" ) );
162 }
163
164 public void testParseValueIntoParametersWithMultipleKeySurroundedByWhitespace()
165 throws Exception
166 {
167 final String value = " \t \n key1=\"value1\" \n key2=\"value2\"\t";
168 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
169 final Properties parameters = parser.parseValueIntoParameters( value );
170 assertNotNull( "parameters", parameters );
171 assertEquals( "parameters.lenght", 2, parameters.size() );
172 assertEquals( "parameters.get('key1')",
173 "value1",
174 parameters.getProperty( "key1" ) );
175 assertEquals( "parameters.get('key2')",
176 "value2",
177 parameters.getProperty( "key2" ) );
178 }
179
180 public void testParseValueIntoParametersWithMultipleKeySurroundedByZeroWhitespace()
181 throws Exception
182 {
183 final String value = "key1=\"value1\"key2=\"value2\"";
184 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
185 final Properties parameters = parser.parseValueIntoParameters( value );
186 assertNull( "parameters", parameters );
187 }
188
189 public void testBuildAttributeWithNullQDoxValue()
190 throws Exception
191 {
192 final String name = "myTag";
193 final String value = null;
194 final DefaultDocletTag tag = new DefaultDocletTag( name, null );
195 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
196 final Attribute attribute = parser.buildAttribute( tag );
197 assertNotNull( "attribute", attribute );
198 assertEquals( "attribute.name", name, attribute.getName() );
199 assertEquals( "attribute.value", value, attribute.getValue() );
200 assertEquals( "attribute.parameterCount",
201 0, attribute.getParameterCount() );
202 }
203
204 public void testBuildAttributeWithEmptyQDoxValue()
205 throws Exception
206 {
207 final String name = "myTag";
208 final String value = null;
209 final DefaultDocletTag tag = new DefaultDocletTag( name, "" );
210 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
211 final Attribute attribute = parser.buildAttribute( tag );
212 assertNotNull( "attribute", attribute );
213 assertEquals( "attribute.name", name, attribute.getName() );
214 assertEquals( "attribute.value", value, attribute.getValue() );
215 assertEquals( "attribute.parameterCount",
216 0, attribute.getParameterCount() );
217 }
218
219 public void testBuildAttributeWithValue()
220 throws Exception
221 {
222 final String name = "myTag";
223 final String value = "Here is some text";
224 final DefaultDocletTag tag = new DefaultDocletTag( name, value );
225 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
226 final Attribute attribute = parser.buildAttribute( tag );
227 assertNotNull( "attribute", attribute );
228 assertEquals( "attribute.name", name, attribute.getName() );
229 assertEquals( "attribute.value", value, attribute.getValue() );
230 assertEquals( "attribute.parameterCount",
231 0, attribute.getParameterCount() );
232 }
233
234 public void testBuildAttributeWithParameters()
235 throws Exception
236 {
237 final String name = "myTag";
238 final String value = null;
239 final DefaultDocletTag tag = new DefaultDocletTag( name,
240 "key=\"value\"" );
241 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
242 final Attribute attribute = parser.buildAttribute( tag );
243 assertNotNull( "attribute", attribute );
244 assertEquals( "attribute.name", name, attribute.getName() );
245 assertEquals( "attribute.value", value, attribute.getValue() );
246 assertEquals( "attribute.parameterCount",
247 1, attribute.getParameterCount() );
248 assertEquals( "attribute.parameter('key')",
249 "value", attribute.getParameter( "key" ) );
250 }
251
252 public void testBuildField()
253 throws Exception
254 {
255 final String name = "myField";
256 final String type = "int";
257 final JavaField javaField = new JavaField();
258 javaField.setType( new Type( type ) );
259 javaField.setTags( new ArrayList() );
260 javaField.setModifiers( new String[]{"public"} );
261 javaField.setName( name );
262 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
263 final FieldDescriptor field = parser.buildField( javaField,
264 new DefaultQDoxAttributeInterceptor() );
265 assertNotNull( "field", field );
266 assertEquals( "field.name", name, field.getName() );
267 assertEquals( "field.type", type, field.getType() );
268 assertEquals( "field.attributes.length",
269 0,
270 field.getAttributes().length );
271 }
272
273 public void testBuildFields()
274 throws Exception
275 {
276 final String name = "myField";
277 final String type = "int";
278 final JavaField javaField = new JavaField();
279 javaField.setType( new Type( type ) );
280 javaField.setTags( new ArrayList() );
281 javaField.setModifiers( new String[]{"public"} );
282 javaField.setName( name );
283 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
284 final FieldDescriptor[] fields =
285 parser.buildFields( new JavaField[]{javaField},
286 new DefaultQDoxAttributeInterceptor() );
287 assertEquals( "fields.length", 1, fields.length );
288 final FieldDescriptor field = fields[ 0 ];
289 assertNotNull( "field", field );
290 assertEquals( "field.name", name, field.getName() );
291 assertEquals( "field.type", type, field.getType() );
292 assertEquals( "field.attributes.length",
293 0,
294 field.getAttributes().length );
295 }
296
297 public void testBuildFieldWitAttributeDeletion()
298 throws Exception
299 {
300 final String name = "myField";
301 final String type = "int";
302 final JavaField javaField = new JavaField();
303 javaField.setType( new Type( type ) );
304 final ArrayList tags = new ArrayList();
305 tags.add( new DefaultDocletTag( "deleteme", "" ) );
306 tags.add( new DefaultDocletTag( "dna.persist", "" ) );
307 javaField.setTags( tags );
308 javaField.setModifiers( new String[]{"public"} );
309 javaField.setName( name );
310 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
311 final FieldDescriptor field = parser.buildField( javaField,
312 new DeletingAttributeInterceptor() );
313 assertNotNull( "field", field );
314 assertEquals( "field.name", name, field.getName() );
315 assertEquals( "field.type", type, field.getType() );
316 assertEquals( "field.attributes.length",
317 1,
318 field.getAttributes().length );
319 assertEquals( "field.attributes[0].name",
320 "dna.persist",
321 field.getAttributes()[ 0 ].getName() );
322 }
323
324 public void testBuildFieldWitAttributeRewritten()
325 throws Exception
326 {
327 final String name = "myField";
328 final String type = "int";
329 final JavaField javaField = new JavaField();
330 javaField.setType( new Type( type ) );
331 final ArrayList tags = new ArrayList();
332 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
333 tags.add( new DefaultDocletTag( "dna.persist", "" ) );
334 javaField.setTags( tags );
335 javaField.setModifiers( new String[]{"public"} );
336 javaField.setName( name );
337 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
338 final FieldDescriptor field = parser.buildField( javaField,
339 new RewritingAttributeInterceptor() );
340 assertNotNull( "field", field );
341 assertEquals( "field.name", name, field.getName() );
342 assertEquals( "field.type", type, field.getType() );
343 assertEquals( "field.attributes.length",
344 2,
345 field.getAttributes().length );
346 assertEquals( "field.attributes[0].name",
347 "rewritten",
348 field.getAttributes()[ 0 ].getName() );
349 assertEquals( "field.attributes[1].name",
350 "dna.persist",
351 field.getAttributes()[ 1 ].getName() );
352 }
353
354 public void testBuildFieldWitAttributesReplaced()
355 throws Exception
356 {
357 final String name = "myField";
358 final String type = "int";
359 final JavaField javaField = new JavaField();
360 javaField.setType( new Type( type ) );
361 final ArrayList tags = new ArrayList();
362 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
363 tags.add( new DefaultDocletTag( "dna.persist", "" ) );
364 javaField.setTags( tags );
365 javaField.setModifiers( new String[]{"public"} );
366 javaField.setName( name );
367 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
368 final FieldDescriptor field = parser.buildField( javaField,
369 new ReplacingAttributeInterceptor() );
370 assertNotNull( "field", field );
371 assertEquals( "field.name", name, field.getName() );
372 assertEquals( "field.type", type, field.getType() );
373 assertEquals( "field.attributes.length",
374 0,
375 field.getAttributes().length );
376 }
377
378 public void testBuildParameter()
379 throws Exception
380 {
381 final String name = "myField";
382 final String type = "int";
383 final JavaParameter javaParameter = new JavaParameter(
384 new Type( type ), name );
385 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
386 final ParameterDescriptor parameter = parser.buildParameter(
387 javaParameter );
388 assertNotNull( "parameter", parameter );
389 assertEquals( "parameter.name", name, parameter.getName() );
390 assertEquals( "parameter.type", type, parameter.getType() );
391 }
392
393 public void testBuildParameters()
394 throws Exception
395 {
396 final String name = "myField";
397 final String type = "int";
398 final JavaParameter javaParameter = new JavaParameter(
399 new Type( type ), name );
400 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
401 final ParameterDescriptor[] parameters =
402 parser.buildParameters( new JavaParameter[]{javaParameter} );
403 assertEquals( "parameters.length", 1, parameters.length );
404 final ParameterDescriptor parameter = parameters[ 0 ];
405 assertNotNull( "parameter", parameter );
406 assertEquals( "parameter.name", name, parameter.getName() );
407 assertEquals( "parameter.type", type, parameter.getType() );
408 }
409
410 public void testBuildMethod()
411 throws Exception
412 {
413 final String name = "myField";
414 final String type = "int";
415 final JavaMethod javaMethod = new JavaMethod();
416 javaMethod.setName( name );
417 javaMethod.setReturns( new Type( type ) );
418 javaMethod.setConstructor( false );
419 javaMethod.setExceptions( new Type[ 0 ] );
420 javaMethod.setParameters( new JavaParameter[ 0 ] );
421 javaMethod.setModifiers( new String[]{"public"} );
422 javaMethod.setTags( new ArrayList() );
423 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
424 final MethodDescriptor method = parser.buildMethod( javaMethod,
425 new DefaultQDoxAttributeInterceptor() );
426 assertNotNull( "method", method );
427 assertEquals( "method.name", name, method.getName() );
428 assertEquals( "method.type", type, method.getReturnType() );
429 assertEquals( "method.parameters.length",
430 0,
431 method.getParameters().length );
432 assertEquals( "field.attributes.length",
433 0,
434 method.getAttributes().length );
435 }
436
437 public void testBuildMethodWithNullReturn()
438 throws Exception
439 {
440 final String name = "myField";
441 final JavaMethod javaMethod = new JavaMethod();
442 javaMethod.setName( name );
443 javaMethod.setReturns( null );
444 javaMethod.setConstructor( false );
445 javaMethod.setExceptions( new Type[ 0 ] );
446 javaMethod.setParameters( new JavaParameter[ 0 ] );
447 javaMethod.setModifiers( new String[]{"public"} );
448 javaMethod.setTags( new ArrayList() );
449 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
450 final MethodDescriptor method = parser.buildMethod( javaMethod,
451 new DefaultQDoxAttributeInterceptor() );
452 assertNotNull( "method", method );
453 assertEquals( "method.name", name, method.getName() );
454 assertEquals( "method.type", "", method.getReturnType() );
455 assertEquals( "method.parameters.length",
456 0,
457 method.getParameters().length );
458 assertEquals( "field.attributes.length",
459 0,
460 method.getAttributes().length );
461 }
462
463 public void testBuildMethods()
464 throws Exception
465 {
466 final String name = "myField";
467 final String type = "int";
468 final JavaMethod javaMethod = new JavaMethod();
469 javaMethod.setName( name );
470 javaMethod.setReturns( new Type( type ) );
471 javaMethod.setConstructor( false );
472 javaMethod.setExceptions( new Type[ 0 ] );
473 javaMethod.setParameters( new JavaParameter[ 0 ] );
474 javaMethod.setModifiers( new String[]{"public"} );
475 javaMethod.setTags( new ArrayList() );
476 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
477 final MethodDescriptor[] methods =
478 parser.buildMethods( new JavaMethod[]{javaMethod},
479 new DefaultQDoxAttributeInterceptor() );
480 assertEquals( "methods.length", 1, methods.length );
481 final MethodDescriptor method = methods[ 0 ];
482 assertNotNull( "method", method );
483 assertEquals( "method.name", name, method.getName() );
484 assertEquals( "method.type", type, method.getReturnType() );
485 assertEquals( "method.parameters.length",
486 0,
487 method.getParameters().length );
488 assertEquals( "field.attributes.length",
489 0,
490 method.getAttributes().length );
491 }
492
493 public void testBuildMethodWithAttributeDeletion()
494 throws Exception
495 {
496 final String name = "myField";
497 final String type = "int";
498 final JavaMethod javaMethod = new JavaMethod();
499 javaMethod.setName( name );
500 javaMethod.setReturns( new Type( type ) );
501 javaMethod.setConstructor( false );
502 javaMethod.setExceptions( new Type[ 0 ] );
503 javaMethod.setParameters( new JavaParameter[ 0 ] );
504 javaMethod.setModifiers( new String[]{"public"} );
505 final ArrayList tags = new ArrayList();
506 tags.add( new DefaultDocletTag( "deleteme", "" ) );
507 tags.add( new DefaultDocletTag( "dna.entry", "" ) );
508 javaMethod.setTags( tags );
509 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
510 final MethodDescriptor method = parser.buildMethod( javaMethod,
511 new DeletingAttributeInterceptor() );
512 assertNotNull( "method", method );
513 assertEquals( "method.name", name, method.getName() );
514 assertEquals( "method.type", type, method.getReturnType() );
515 assertEquals( "method.parameters.length",
516 0,
517 method.getParameters().length );
518 assertEquals( "field.attributes.length",
519 1,
520 method.getAttributes().length );
521 assertEquals( "field.attributes[0].name",
522 "dna.entry",
523 method.getAttributes()[ 0 ].getName() );
524 }
525
526 public void testBuildMethodWithAttributeRewritten()
527 throws Exception
528 {
529 final String name = "myField";
530 final String type = "int";
531 final JavaMethod javaMethod = new JavaMethod();
532 javaMethod.setName( name );
533 javaMethod.setReturns( new Type( type ) );
534 javaMethod.setConstructor( false );
535 javaMethod.setExceptions( new Type[ 0 ] );
536 javaMethod.setParameters( new JavaParameter[ 0 ] );
537 javaMethod.setModifiers( new String[]{"public"} );
538 final ArrayList tags = new ArrayList();
539 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
540 tags.add( new DefaultDocletTag( "dna.entry", "" ) );
541 javaMethod.setTags( tags );
542 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
543 final MethodDescriptor method = parser.buildMethod( javaMethod,
544 new RewritingAttributeInterceptor() );
545 assertNotNull( "method", method );
546 assertEquals( "method.name", name, method.getName() );
547 assertEquals( "method.type", type, method.getReturnType() );
548 assertEquals( "method.parameters.length",
549 0,
550 method.getParameters().length );
551 assertEquals( "field.attributes.length",
552 2,
553 method.getAttributes().length );
554 assertEquals( "field.attributes[0].name",
555 "rewritten",
556 method.getAttributes()[ 0 ].getName() );
557 assertEquals( "field.attributes[1].name",
558 "dna.entry",
559 method.getAttributes()[ 1 ].getName() );
560 }
561
562 public void testBuildMethodWithAttributesReplaced()
563 throws Exception
564 {
565 final String name = "myField";
566 final String type = "int";
567 final JavaMethod javaMethod = new JavaMethod();
568 javaMethod.setName( name );
569 javaMethod.setReturns( new Type( type ) );
570 javaMethod.setConstructor( false );
571 javaMethod.setExceptions( new Type[ 0 ] );
572 javaMethod.setParameters( new JavaParameter[ 0 ] );
573 javaMethod.setModifiers( new String[]{"public"} );
574 final ArrayList tags = new ArrayList();
575 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
576 tags.add( new DefaultDocletTag( "dna.entry", "" ) );
577 javaMethod.setTags( tags );
578 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
579 final MethodDescriptor method = parser.buildMethod( javaMethod,
580 new ReplacingAttributeInterceptor() );
581 assertNotNull( "method", method );
582 assertEquals( "method.name", name, method.getName() );
583 assertEquals( "method.type", type, method.getReturnType() );
584 assertEquals( "method.parameters.length",
585 0,
586 method.getParameters().length );
587 assertEquals( "field.attributes.length",
588 0,
589 method.getAttributes().length );
590 }
591
592 public void testBuildClass()
593 throws Exception
594 {
595 final String name = "MyClass";
596 final JavaClass javaClass = new JavaClass( new MockPackage() );
597 javaClass.setName( name );
598 javaClass.setImplementz( new Type[ 0 ] );
599 javaClass.setInterface( false );
600 javaClass.setModifiers( new String[]{"public"} );
601 javaClass.setTags( new ArrayList() );
602 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
603 final ClassDescriptor clazz = parser.buildClassDescriptor( javaClass );
604 assertNotNull( "clazz", clazz );
605 assertEquals( "clazz.name", "com.biz." + name, clazz.getName() );
606 assertEquals( "clazz.attributes.length",
607 0,
608 clazz.getAttributes().length );
609 assertEquals( "clazz.fields.length", 0, clazz.getFields().length );
610 assertEquals( "clazz.methods.length", 0, clazz.getMethods().length );
611 }
612
613 public void testBuildClassUsingOwnInterceptors()
614 throws Exception
615 {
616 final String name = "MyClass";
617 final JavaClass javaClass = new JavaClass( new MockPackage() );
618 javaClass.setName( name );
619 javaClass.setImplementz( new Type[ 0 ] );
620 javaClass.setInterface( false );
621 javaClass.setModifiers( new String[]{"public"} );
622 javaClass.setTags( new ArrayList() );
623 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
624 final ClassDescriptor clazz = parser.buildClassDescriptor( javaClass,
625 new DefaultQDoxAttributeInterceptor() );
626 assertNotNull( "clazz", clazz );
627 assertEquals( "clazz.name", "com.biz." + name, clazz.getName() );
628 assertEquals( "clazz.attributes.length",
629 0,
630 clazz.getAttributes().length );
631 assertEquals( "clazz.fields.length", 0, clazz.getFields().length );
632 assertEquals( "clazz.methods.length", 0, clazz.getMethods().length );
633 }
634
635 public void testBuildClassWithAttributeDeletion()
636 throws Exception
637 {
638 final String name = "MyClass";
639 final JavaClass javaClass = new JavaClass( new MockPackage() );
640 javaClass.setName( name );
641 javaClass.setImplementz( new Type[ 0 ] );
642 javaClass.setInterface( false );
643 javaClass.setModifiers( new String[]{"public"} );
644 final ArrayList tags = new ArrayList();
645 tags.add( new DefaultDocletTag( "deleteme", "" ) );
646 tags.add( new DefaultDocletTag( "dna.service", "" ) );
647 javaClass.setTags( tags );
648 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
649 final ClassDescriptor clazz = parser.buildClassDescriptor( javaClass,
650 new DeletingAttributeInterceptor() );
651 assertNotNull( "clazz", clazz );
652 assertEquals( "clazz.name", "com.biz." + name, clazz.getName() );
653 assertEquals( "clazz.attributes.length",
654 1,
655 clazz.getAttributes().length );
656 assertEquals( "clazz.attributes[0].getName()",
657 "dna.service",
658 clazz.getAttributes()[ 0 ].getName() );
659 assertEquals( "clazz.fields.length", 0, clazz.getFields().length );
660 assertEquals( "clazz.methods.length", 0, clazz.getMethods().length );
661 }
662
663 public void testBuildClassWithAttributeRewritten()
664 throws Exception
665 {
666 final String name = "MyClass";
667 final JavaClass javaClass = new JavaClass( new MockPackage() );
668 javaClass.setName( name );
669 javaClass.setImplementz( new Type[ 0 ] );
670 javaClass.setInterface( false );
671 javaClass.setModifiers( new String[]{"public"} );
672 final ArrayList tags = new ArrayList();
673 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
674 tags.add( new DefaultDocletTag( "dna.service", "" ) );
675 javaClass.setTags( tags );
676 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
677 final ClassDescriptor clazz = parser.buildClassDescriptor( javaClass,
678 new RewritingAttributeInterceptor() );
679 assertNotNull( "clazz", clazz );
680 assertEquals( "clazz.name", "com.biz." + name, clazz.getName() );
681 assertEquals( "clazz.attributes.length",
682 2,
683 clazz.getAttributes().length );
684 assertEquals( "clazz.attributes[0].getName()",
685 "rewritten",
686 clazz.getAttributes()[ 0 ].getName() );
687 assertEquals( "clazz.attributes[1].getName()",
688 "dna.service",
689 clazz.getAttributes()[ 1 ].getName() );
690 assertEquals( "clazz.fields.length", 0, clazz.getFields().length );
691 assertEquals( "clazz.methods.length", 0, clazz.getMethods().length );
692 }
693
694 public void testBuildClassWithAttributesReplaces()
695 throws Exception
696 {
697 final String name = "MyClass";
698 final JavaClass javaClass = new JavaClass( new MockPackage() );
699 javaClass.setName( name );
700 javaClass.setImplementz( new Type[ 0 ] );
701 javaClass.setInterface( false );
702 javaClass.setModifiers( new String[]{"public"} );
703 final ArrayList tags = new ArrayList();
704 tags.add( new DefaultDocletTag( "rewriteme", "" ) );
705 tags.add( new DefaultDocletTag( "dna.service", "" ) );
706 javaClass.setTags( tags );
707 final QDoxDescriptorParser parser = new QDoxDescriptorParser();
708 final ClassDescriptor clazz = parser.buildClassDescriptor( javaClass,
709 new ReplacingAttributeInterceptor() );
710 assertNotNull( "clazz", clazz );
711 assertEquals( "clazz.name", "com.biz." + name, clazz.getName() );
712 assertEquals( "clazz.attributes.length",
713 0,
714 clazz.getAttributes().length );
715 assertEquals( "clazz.fields.length", 0, clazz.getFields().length );
716 assertEquals( "clazz.methods.length", 0, clazz.getMethods().length );
717 }
718 }