1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package org.jomc.tools.test;
32
33 import java.io.File;
34 import java.io.FileInputStream;
35 import java.io.FileOutputStream;
36 import java.io.IOException;
37 import java.io.InputStream;
38 import java.io.OutputStream;
39 import org.apache.commons.io.IOUtils;
40 import org.jomc.model.Implementation;
41 import org.jomc.model.Module;
42 import org.jomc.model.Specification;
43 import org.jomc.modlet.Model;
44 import org.jomc.tools.SourceFileProcessor;
45 import org.jomc.util.SectionEditor;
46 import org.junit.Test;
47 import static org.junit.Assert.assertEquals;
48 import static org.junit.Assert.assertFalse;
49 import static org.junit.Assert.assertNotNull;
50 import static org.junit.Assert.assertNull;
51 import static org.junit.Assert.assertTrue;
52 import static org.junit.Assert.fail;
53
54
55
56
57
58
59
60 public class SourceFileProcessorTest extends JomcToolTest
61 {
62
63
64
65
66 private static final String ABSOLUTE_RESOURCE_NAME_PREFIX = "/org/jomc/tools/test/";
67
68
69
70
71 public SourceFileProcessorTest()
72 {
73 super();
74 }
75
76
77
78
79 @Override
80 public SourceFileProcessor getJomcTool()
81 {
82 return (SourceFileProcessor) super.getJomcTool();
83 }
84
85
86
87
88 @Override
89 protected SourceFileProcessor newJomcTool()
90 {
91 return new SourceFileProcessor();
92 }
93
94 @Test
95 @SuppressWarnings( "deprecation" )
96 public final void testSourceFileProcessorNullPointerException() throws Exception
97 {
98 try
99 {
100 this.getJomcTool().getSourceFileType( (Specification) null );
101 fail( "Expected NullPointerException not thrown." );
102 }
103 catch ( final NullPointerException e )
104 {
105 assertNullPointerException( e );
106 }
107
108 try
109 {
110 this.getJomcTool().getSourceFileType( (Implementation) null );
111 fail( "Expected NullPointerException not thrown." );
112 }
113 catch ( final NullPointerException e )
114 {
115 assertNullPointerException( e );
116 }
117
118 try
119 {
120 this.getJomcTool().getSourceFilesType( (Specification) null );
121 fail( "Expected NullPointerException not thrown." );
122 }
123 catch ( final NullPointerException e )
124 {
125 assertNullPointerException( e );
126 }
127
128 try
129 {
130 this.getJomcTool().getSourceFilesType( (Implementation) null );
131 fail( "Expected NullPointerException not thrown." );
132 }
133 catch ( final NullPointerException e )
134 {
135 assertNullPointerException( e );
136 }
137
138 try
139 {
140 this.getJomcTool().getSourceFileEditor( (Specification) null );
141 fail( "Expected NullPointerException not thrown." );
142 }
143 catch ( final NullPointerException e )
144 {
145 assertNullPointerException( e );
146 }
147
148 try
149 {
150 this.getJomcTool().getSourceFileEditor( (Implementation) null );
151 fail( "Expected NullPointerException not thrown." );
152 }
153 catch ( final NullPointerException e )
154 {
155 assertNullPointerException( e );
156 }
157
158 try
159 {
160 this.getJomcTool().manageSourceFiles( null );
161 fail( "Expected NullPointerException not thrown." );
162 }
163 catch ( final NullPointerException e )
164 {
165 assertNullPointerException( e );
166 }
167
168 try
169 {
170 this.getJomcTool().manageSourceFiles( (Implementation) null, new File( "/" ) );
171 fail( "Expected NullPointerException not thrown." );
172 }
173 catch ( final NullPointerException e )
174 {
175 assertNullPointerException( e );
176 }
177
178 try
179 {
180 this.getJomcTool().manageSourceFiles( new Implementation(), null );
181 fail( "Expected NullPointerException not thrown." );
182 }
183 catch ( final NullPointerException e )
184 {
185 assertNullPointerException( e );
186 }
187
188 try
189 {
190 this.getJomcTool().manageSourceFiles( (Module) null, new File( "/" ) );
191 fail( "Expected NullPointerException not thrown." );
192 }
193 catch ( final NullPointerException e )
194 {
195 assertNullPointerException( e );
196 }
197
198 try
199 {
200 this.getJomcTool().manageSourceFiles( new Module(), null );
201 fail( "Expected NullPointerException not thrown." );
202 }
203 catch ( final NullPointerException e )
204 {
205 assertNullPointerException( e );
206 }
207
208 try
209 {
210 this.getJomcTool().manageSourceFiles( (Specification) null, new File( "/" ) );
211 fail( "Expected NullPointerException not thrown." );
212 }
213 catch ( final NullPointerException e )
214 {
215 assertNullPointerException( e );
216 }
217
218 try
219 {
220 this.getJomcTool().manageSourceFiles( new Specification(), null );
221 fail( "Expected NullPointerException not thrown." );
222 }
223 catch ( final NullPointerException e )
224 {
225 assertNullPointerException( e );
226 }
227 }
228
229 @Test
230 public final void testSourceFileProcessorNotNull() throws Exception
231 {
232 assertNotNull( this.getJomcTool().getSourceFilesType(
233 this.getJomcTool().getModules().getImplementation( "Implementation" ) ) );
234
235 assertNotNull( this.getJomcTool().getSourceFilesType(
236 this.getJomcTool().getModules().getSpecification( "Specification" ) ) );
237
238 assertNotNull( this.getJomcTool().getSourceFileEditor() );
239 }
240
241 @Test
242 public final void testManageSources() throws Exception
243 {
244 this.getJomcTool().setInputEncoding( this.getResourceEncoding() );
245 this.getJomcTool().setOutputEncoding( this.getResourceEncoding() );
246
247 final File nonExistingDirectory = this.getNextOutputDirectory();
248
249 try
250 {
251 this.getJomcTool().manageSourceFiles( nonExistingDirectory );
252 fail( "Expected IOException not thrown." );
253 }
254 catch ( final IOException e )
255 {
256 assertNotNull( e.getMessage() );
257 System.out.println( e );
258 }
259
260 try
261 {
262 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getModule( "Module" ),
263 nonExistingDirectory );
264
265 fail( "Expected IOException not thrown." );
266 }
267 catch ( final IOException e )
268 {
269 assertNotNull( e.getMessage() );
270 System.out.println( e );
271 }
272
273 try
274 {
275 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
276 nonExistingDirectory );
277
278 fail( "Expected IOException not thrown." );
279 }
280 catch ( final IOException e )
281 {
282 assertNotNull( e.getMessage() );
283 System.out.println( e );
284 }
285
286 try
287 {
288 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
289 nonExistingDirectory );
290
291 fail( "Expected IOException not thrown." );
292 }
293 catch ( final IOException e )
294 {
295 assertNotNull( e.getMessage() );
296 System.out.println( e );
297 }
298
299 File sourcesDirectory = this.getNextOutputDirectory();
300 assertTrue( sourcesDirectory.mkdirs() );
301 this.getJomcTool().manageSourceFiles( sourcesDirectory );
302 this.getJomcTool().manageSourceFiles( sourcesDirectory );
303
304 sourcesDirectory = this.getNextOutputDirectory();
305 assertTrue( sourcesDirectory.mkdirs() );
306 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getModule( "Module" ),
307 sourcesDirectory );
308
309 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getModule( "Module" ),
310 sourcesDirectory );
311
312 final File implementationDirectory = this.getNextOutputDirectory();
313 final File implementationSourceFile = new File( implementationDirectory, "Implementation.java" );
314 assertTrue( implementationDirectory.mkdirs() );
315 long implementationSourceFileLength;
316
317 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
318 implementationDirectory );
319
320 implementationSourceFileLength = implementationSourceFile.length();
321 assertTrue( implementationSourceFile.exists() );
322
323 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
324 implementationDirectory );
325
326 assertTrue( implementationSourceFile.exists() );
327 assertEquals( implementationSourceFileLength, implementationSourceFile.length() );
328
329 this.getJomcTool().getTemplateParameters().put( "with-assertions", Boolean.FALSE );
330 this.getJomcTool().getTemplateParameters().put( "with-author-copyright", Boolean.FALSE );
331 this.getJomcTool().getTemplateParameters().put( "with-editor-fold", Boolean.FALSE );
332 this.getJomcTool().getTemplateParameters().put( "with-javadoc", Boolean.FALSE );
333 this.getJomcTool().getTemplateParameters().put( "with-javadoc-author", Boolean.FALSE );
334 this.getJomcTool().getTemplateParameters().put( "with-javadoc-version", Boolean.FALSE );
335 this.getJomcTool().getTemplateParameters().put( "with-jsr-250", Boolean.FALSE );
336 this.getJomcTool().getTemplateParameters().put( "with-project-name", null );
337 this.getJomcTool().getTemplateParameters().put( "with-revision-keyword", null );
338 this.getJomcTool().getTemplateParameters().put( "with-suppress-warnings", null );
339 this.getJomcTool().getTemplateParameters().put( "with-vendor-copyright", null );
340
341 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
342 implementationDirectory );
343
344 assertTrue( implementationSourceFile.exists() );
345 assertTrue( implementationSourceFile.length() < implementationSourceFileLength );
346
347 this.getJomcTool().getTemplateParameters().clear();
348
349 this.getJomcTool().setTemplateProfile( "jomc-java-bundles" );
350
351 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
352 implementationDirectory );
353
354 this.getJomcTool().getTemplateParameters().put( "with-assertions", Boolean.FALSE );
355 this.getJomcTool().getTemplateParameters().put( "with-author-copyright", Boolean.FALSE );
356 this.getJomcTool().getTemplateParameters().put( "with-editor-fold", Boolean.FALSE );
357 this.getJomcTool().getTemplateParameters().put( "with-javadoc", Boolean.FALSE );
358 this.getJomcTool().getTemplateParameters().put( "with-javadoc-author", Boolean.FALSE );
359 this.getJomcTool().getTemplateParameters().put( "with-javadoc-version", Boolean.FALSE );
360 this.getJomcTool().getTemplateParameters().put( "with-jsr-250", Boolean.FALSE );
361 this.getJomcTool().getTemplateParameters().put( "with-project-name", null );
362 this.getJomcTool().getTemplateParameters().put( "with-revision-keyword", null );
363 this.getJomcTool().getTemplateParameters().put( "with-suppress-warnings", null );
364 this.getJomcTool().getTemplateParameters().put( "with-vendor-copyright", null );
365
366 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
367 implementationDirectory );
368
369 this.getJomcTool().getTemplateParameters().clear();
370
371 this.getJomcTool().setTemplateProfile( null );
372
373 this.getJomcTool().manageSourceFiles(
374 this.getJomcTool().getModules().getImplementation( "ImplementationWithSourceFilesModel" ),
375 implementationDirectory );
376
377 this.getJomcTool().manageSourceFiles(
378 this.getJomcTool().getModules().getImplementation( "ImplementationWithSourceFilesModel" ),
379 implementationDirectory );
380
381 final File specificationDirectory = this.getNextOutputDirectory();
382 assertTrue( specificationDirectory.mkdirs() );
383 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
384 specificationDirectory );
385
386 this.getJomcTool().getTemplateParameters().put( "with-assertions", Boolean.FALSE );
387 this.getJomcTool().getTemplateParameters().put( "with-author-copyright", Boolean.FALSE );
388 this.getJomcTool().getTemplateParameters().put( "with-editor-fold", Boolean.FALSE );
389 this.getJomcTool().getTemplateParameters().put( "with-javadoc", Boolean.FALSE );
390 this.getJomcTool().getTemplateParameters().put( "with-javadoc-author", Boolean.FALSE );
391 this.getJomcTool().getTemplateParameters().put( "with-javadoc-version", Boolean.FALSE );
392 this.getJomcTool().getTemplateParameters().put( "with-jsr-250", Boolean.FALSE );
393 this.getJomcTool().getTemplateParameters().put( "with-project-name", null );
394 this.getJomcTool().getTemplateParameters().put( "with-revision-keyword", null );
395 this.getJomcTool().getTemplateParameters().put( "with-suppress-warnings", null );
396 this.getJomcTool().getTemplateParameters().put( "with-vendor-copyright", null );
397
398 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
399 specificationDirectory );
400
401 this.getJomcTool().getTemplateParameters().clear();
402
403 this.getJomcTool().manageSourceFiles(
404 this.getJomcTool().getModules().getSpecification( "SpecificationWithSourceFilesModel" ),
405 specificationDirectory );
406
407 this.getJomcTool().manageSourceFiles(
408 this.getJomcTool().getModules().getSpecification( "SpecificationWithSourceFilesModel" ),
409 specificationDirectory );
410
411 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "IllegalImplementationSource.java.txt",
412 new File( implementationDirectory, "Implementation.java" ) );
413
414 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "IllegalSpecificationSource.java.txt",
415 new File( specificationDirectory, "Specification.java" ) );
416
417 try
418 {
419 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
420 implementationDirectory );
421
422 fail( "Expected IOException not thrown." );
423 }
424 catch ( final IOException e )
425 {
426 assertNotNull( e.getMessage() );
427 System.out.println( e.toString() );
428 }
429
430 try
431 {
432 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
433 specificationDirectory );
434
435 fail( "Expected IOException not thrown." );
436 }
437 catch ( final IOException e )
438 {
439 assertNotNull( e.getMessage() );
440 System.out.println( e.toString() );
441 }
442
443 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "EmptyImplementationSource.java.txt",
444 new File( implementationDirectory, "Implementation.java" ) );
445
446 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "EmptySpecificationSource.java.txt",
447 new File( specificationDirectory, "Specification.java" ) );
448
449 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
450 implementationDirectory );
451
452 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
453 specificationDirectory );
454
455 this.getJomcTool().setTemplateProfile( "DOES_NOT_EXIST" );
456
457 sourcesDirectory = this.getNextOutputDirectory();
458 assertTrue( sourcesDirectory.mkdirs() );
459 this.getJomcTool().manageSourceFiles( sourcesDirectory );
460
461 sourcesDirectory = this.getNextOutputDirectory();
462 assertTrue( sourcesDirectory.mkdirs() );
463 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getModule( "Module" ), sourcesDirectory );
464
465 sourcesDirectory = this.getNextOutputDirectory();
466 assertTrue( sourcesDirectory.mkdirs() );
467 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
468 sourcesDirectory );
469
470 sourcesDirectory = this.getNextOutputDirectory();
471 assertTrue( sourcesDirectory.mkdirs() );
472 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
473 sourcesDirectory );
474
475 this.getJomcTool().setInputEncoding( null );
476 this.getJomcTool().setOutputEncoding( null );
477 }
478
479 @Test
480 public final void testMandatorySections() throws Exception
481 {
482 final SectionEditor editor = new SectionEditor();
483 final File specificationDirectory = this.getNextOutputDirectory();
484 final File implementationDirectory = this.getNextOutputDirectory();
485
486 assertTrue( specificationDirectory.mkdirs() );
487 assertTrue( implementationDirectory.mkdirs() );
488
489 this.getJomcTool().setInputEncoding( this.getResourceEncoding() );
490 this.getJomcTool().setOutputEncoding( this.getResourceEncoding() );
491
492 File f = new File( implementationDirectory, "Implementation.java" );
493 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutAnnotationsSection.java.txt", f );
494 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
495 implementationDirectory );
496
497 String edited = this.toString( f );
498 editor.edit( edited );
499 assertTrue( editor.isSectionPresent( "Annotations" ) );
500
501 f = new File( implementationDirectory, "Implementation.java" );
502 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutDependenciesSection.java.txt", f );
503 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
504 implementationDirectory );
505
506 edited = this.toString( f );
507 editor.edit( edited );
508 assertTrue( editor.isSectionPresent( "Dependencies" ) );
509
510 f = new File( implementationDirectory, "Implementation.java" );
511 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutMessagesSection.java.txt", f );
512 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
513 implementationDirectory );
514
515 edited = this.toString( f );
516 editor.edit( edited );
517 assertTrue( editor.isSectionPresent( "Messages" ) );
518
519 f = new File( implementationDirectory, "Implementation.java" );
520 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutPropertiesSection.java.txt", f );
521 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
522 implementationDirectory );
523
524 edited = this.toString( f );
525 editor.edit( edited );
526 assertTrue( editor.isSectionPresent( "Properties" ) );
527
528 f = new File( implementationDirectory, "ImplementationOfSpecification.java" );
529 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX
530 + "ImplementationOfSpecificationWithoutConstructorsSection.java.txt", f );
531
532 this.getJomcTool().manageSourceFiles(
533 this.getJomcTool().getModules().getImplementation( "ImplementationOfSpecification" ),
534 implementationDirectory );
535
536 edited = this.toString( f );
537 editor.edit( edited );
538 assertTrue( editor.isSectionPresent( "Constructors" ) );
539
540 f = new File( specificationDirectory, "Specification.java" );
541 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "SpecificationWithoutAnnotationsSection.java.txt", f );
542 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
543 specificationDirectory );
544
545 edited = this.toString( f );
546 editor.edit( edited );
547 assertTrue( editor.isSectionPresent( "Annotations" ) );
548
549 this.getJomcTool().setInputEncoding( null );
550 this.getJomcTool().setOutputEncoding( null );
551 }
552
553 @Test
554 public final void testOptionalSections() throws Exception
555 {
556 final SectionEditor editor = new SectionEditor();
557 final File implementationDirectory = this.getNextOutputDirectory();
558 final File specificationDirectory = this.getNextOutputDirectory();
559
560 assertTrue( specificationDirectory.mkdirs() );
561 assertTrue( implementationDirectory.mkdirs() );
562
563 this.getJomcTool().setInputEncoding( this.getResourceEncoding() );
564 this.getJomcTool().setOutputEncoding( this.getResourceEncoding() );
565
566 File f = new File( implementationDirectory, "Implementation.java" );
567 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutConstructorsSection.java.txt", f );
568 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
569 implementationDirectory );
570
571 String edited = this.toString( f );
572 editor.edit( edited );
573 assertFalse( editor.isSectionPresent( "Constructors" ) );
574 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutDefaultConstructorSection.java.txt",
575 f );
576
577 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
578 implementationDirectory );
579
580 edited = this.toString( f );
581 editor.edit( edited );
582 assertTrue( editor.isSectionPresent( "Constructors" ) );
583 assertTrue( editor.isSectionPresent( "Default Constructor" ) );
584 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutDocumentationSection.java.txt", f );
585 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
586 implementationDirectory );
587
588 edited = this.toString( f );
589 editor.edit( edited );
590 assertFalse( editor.isSectionPresent( "Documentation" ) );
591 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "ImplementationWithoutLicenseSection.java.txt", f );
592 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getImplementation( "Implementation" ),
593 implementationDirectory );
594
595 edited = this.toString( f );
596 editor.edit( edited );
597 assertFalse( editor.isSectionPresent( "License Header" ) );
598
599 f = new File( specificationDirectory, "Specification.java" );
600 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "SpecificationWithoutDocumentationSection.java.txt", f );
601 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
602 specificationDirectory );
603
604 edited = this.toString( f );
605 editor.edit( edited );
606 assertFalse( editor.isSectionPresent( "Documentation" ) );
607 this.copyResource( ABSOLUTE_RESOURCE_NAME_PREFIX + "SpecificationWithoutLicenseSection.java.txt", f );
608 this.getJomcTool().manageSourceFiles( this.getJomcTool().getModules().getSpecification( "Specification" ),
609 specificationDirectory );
610
611 edited = this.toString( f );
612 editor.edit( edited );
613 assertFalse( editor.isSectionPresent( "License Header" ) );
614
615 this.getJomcTool().setInputEncoding( null );
616 this.getJomcTool().setOutputEncoding( null );
617 }
618
619 @Test
620 public final void testSourceFileEditor() throws Exception
621 {
622 assertNotNull( this.getJomcTool().getSourceFileEditor() );
623 this.getJomcTool().setSourceFileEditor( null );
624 assertNotNull( this.getJomcTool().getSourceFileEditor() );
625 }
626
627 @Test
628 public final void testCopyConstructor() throws Exception
629 {
630 try
631 {
632 new SourceFileProcessor( null );
633 fail( "Expected NullPointerException not thrown." );
634 }
635 catch ( final NullPointerException e )
636 {
637 assertNotNull( e.getMessage() );
638 System.out.println( e.toString() );
639 }
640
641 new SourceFileProcessor( this.getJomcTool() );
642 }
643
644 @Test
645 public final void testSourceFileProcessorModelObjectsNotFound() throws Exception
646 {
647 final File tmpDir = new File( System.getProperty( "java.io.tmpdir", "/tmp" ) );
648 final Module m = new Module();
649 m.setName( "DOES_NOT_EXIST" );
650
651 final Specification s = new Specification();
652 s.setIdentifier( "DOES_NOT_EXIST)" );
653
654 final Implementation i = new Implementation();
655 i.setIdentifier( "DOES_NOT_EXIST" );
656
657 final Model oldModel = this.getJomcTool().getModel();
658 this.getJomcTool().setModel( null );
659
660 assertNull( this.getJomcTool().getSourceFilesType( s ) );
661 assertNull( this.getJomcTool().getSourceFilesType( i ) );
662
663 this.getJomcTool().manageSourceFiles( tmpDir );
664 this.getJomcTool().manageSourceFiles( m, tmpDir );
665 this.getJomcTool().manageSourceFiles( s, tmpDir );
666 this.getJomcTool().manageSourceFiles( i, tmpDir );
667
668 this.getJomcTool().setModel( oldModel );
669 }
670
671 private void copyResource( final String resourceName, final File file ) throws IOException
672 {
673 assertTrue( resourceName.startsWith( "/" ) );
674
675 InputStream in = null;
676 boolean suppressExceptionOnClose = true;
677
678 try
679 {
680 in = this.getClass().getResourceAsStream( resourceName );
681 assertNotNull( "Resource '" + resourceName + "' not found.", in );
682 OutputStream out = null;
683
684 try
685 {
686 out = new FileOutputStream( file );
687 IOUtils.copy( in, out );
688 suppressExceptionOnClose = false;
689 }
690 finally
691 {
692 try
693 {
694 if ( out != null )
695 {
696 out.close();
697 }
698 }
699 catch ( final IOException e )
700 {
701 if ( !suppressExceptionOnClose )
702 {
703 throw e;
704 }
705 }
706 }
707 }
708 finally
709 {
710 try
711 {
712 if ( in != null )
713 {
714 in.close();
715 }
716 }
717 catch ( final IOException e )
718 {
719 if ( !suppressExceptionOnClose )
720 {
721 throw e;
722 }
723 }
724 }
725 }
726
727 private String toString( final File f ) throws IOException
728 {
729 InputStream in = null;
730 boolean suppressExceptionOnClose = true;
731
732 try
733 {
734 in = new FileInputStream( f );
735 final String str = IOUtils.toString( in, this.getResourceEncoding() );
736 suppressExceptionOnClose = false;
737 return str;
738 }
739 finally
740 {
741 try
742 {
743 if ( in != null )
744 {
745 in.close();
746 }
747 }
748 catch ( final IOException e )
749 {
750 if ( !suppressExceptionOnClose )
751 {
752 throw e;
753 }
754 }
755 }
756 }
757
758 }