View Javadoc

1   // SECTION-START[License Header]
2   // <editor-fold defaultstate="collapsed" desc=" Generated License ">
3   /*
4    *   Copyright (c) 2010 The JOMC Project
5    *   Copyright (c) 2005 Christian Schulte <schulte2005@users.sourceforge.net>
6    *   All rights reserved.
7    *
8    *   Redistribution and use in source and binary forms, with or without
9    *   modification, are permitted provided that the following conditions
10   *   are met:
11   *
12   *     o Redistributions of source code must retain the above copyright
13   *       notice, this list of conditions and the following disclaimer.
14   *
15   *     o Redistributions in binary form must reproduce the above copyright
16   *       notice, this list of conditions and the following disclaimer in
17   *       the documentation and/or other materials provided with the
18   *       distribution.
19   *
20   *   THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS"
21   *   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22   *   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23   *   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR
24   *   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25   *   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26   *   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27   *   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28   *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29   *   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30   *   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31   *
32   *   $Id: SdkModelValidator.java 2234 2010-06-29 00:03:38Z schulte2005 $
33   *
34   */
35  // </editor-fold>
36  // SECTION-END
37  package org.jomc.sdk.model.modlet;
38  
39  import java.text.MessageFormat;
40  import java.util.ResourceBundle;
41  import java.util.logging.Level;
42  import javax.xml.bind.JAXBElement;
43  import org.jomc.model.Dependency;
44  import org.jomc.model.Implementation;
45  import org.jomc.model.Module;
46  import org.jomc.model.Modules;
47  import org.jomc.model.ObjectFactory;
48  import org.jomc.model.Properties;
49  import org.jomc.model.Property;
50  import org.jomc.model.PropertyException;
51  import org.jomc.model.Specification;
52  import org.jomc.model.modlet.ModelHelper;
53  import org.jomc.modlet.Model;
54  import org.jomc.modlet.ModelContext;
55  import org.jomc.modlet.ModelException;
56  import org.jomc.modlet.ModelValidationReport;
57  import org.jomc.modlet.ModelValidator;
58  import org.jomc.sdk.model.ItemType;
59  import org.jomc.sdk.model.ListType;
60  import org.jomc.sdk.model.MapType;
61  
62  // SECTION-START[Documentation]
63  // <editor-fold defaultstate="collapsed" desc=" Generated Documentation ">
64  /**
65   * SDK 'ModelValidator' implementation.
66   *
67   * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0
68   * @version $Id: SdkModelValidator.java 2234 2010-06-29 00:03:38Z schulte2005 $
69   */
70  // </editor-fold>
71  // SECTION-END
72  // SECTION-START[Annotations]
73  // <editor-fold defaultstate="collapsed" desc=" Generated Annotations ">
74  @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" )
75  // </editor-fold>
76  // SECTION-END
77  public final class SdkModelValidator implements ModelValidator
78  {
79      // SECTION-START[SdkModelValidator]
80  
81      public ModelValidationReport validateModel( final ModelContext context, final Model model ) throws ModelException
82      {
83          if ( context == null )
84          {
85              throw new NullPointerException( "context" );
86          }
87          if ( model == null )
88          {
89              throw new NullPointerException( "model" );
90          }
91  
92          final ModelValidationReport report = new ModelValidationReport();
93          final Modules modules = ModelHelper.getModules( model );
94  
95          if ( modules != null )
96          {
97              if ( context.isLoggable( Level.FINE ) )
98              {
99                  context.log( Level.FINE, getMessage(
100                     "validatingModel", this.getClass().getName(), model.getIdentifier() ), null );
101 
102             }
103 
104             for ( Module m : modules.getModule() )
105             {
106                 this.assertValidSdkObjects( context, m, null, null, null, report );
107 
108                 if ( m.getSpecifications() != null )
109                 {
110                     for ( Specification s : m.getSpecifications().getSpecification() )
111                     {
112                         this.assertValidSdkObjects( context, null, s, null, null, report );
113                     }
114                 }
115 
116                 if ( m.getImplementations() != null )
117                 {
118                     for ( Implementation i : m.getImplementations().getImplementation() )
119                     {
120                         this.assertValidSdkObjects( context, null, null, i, null, report );
121 
122                         if ( i.getDependencies() != null )
123                         {
124                             for ( Dependency d : i.getDependencies().getDependency() )
125                             {
126                                 this.assertValidSdkObjects( context, null, null, i, d, report );
127                             }
128                         }
129                     }
130                 }
131             }
132         }
133         else if ( context.isLoggable( Level.WARNING ) )
134         {
135             context.log( Level.WARNING, getMessage( "modulesNotFound", model.getIdentifier() ), null );
136         }
137 
138         return report;
139     }
140 
141     private void assertValidSdkObjects( final ModelContext context, final Module module,
142                                         final Specification specification, final Implementation implementation,
143                                         final Dependency dependency, final ModelValidationReport report )
144     {
145         if ( module != null && ( implementation != null || dependency != null || specification != null ) )
146         {
147             throw new IllegalArgumentException();
148         }
149         if ( implementation != null && ( module != null || specification != null ) )
150         {
151             throw new IllegalArgumentException();
152         }
153         if ( specification != null && ( module != null || implementation != null || dependency != null ) )
154         {
155             throw new IllegalArgumentException();
156         }
157 
158         Properties properties = null;
159         JAXBElement detailElement = null;
160 
161         if ( module != null )
162         {
163             properties = module.getProperties();
164             detailElement = new ObjectFactory().createModule( module );
165         }
166         if ( specification != null )
167         {
168             properties = specification.getProperties();
169             detailElement = new ObjectFactory().createSpecification( specification );
170         }
171         if ( implementation != null )
172         {
173             properties = implementation.getProperties();
174             detailElement = new ObjectFactory().createImplementation( implementation );
175         }
176         if ( dependency != null )
177         {
178             properties = dependency.getProperties();
179         }
180 
181         if ( properties != null )
182         {
183             for ( Property p : properties.getProperty() )
184             {
185                 if ( p.getAny() != null )
186                 {
187                     final Object any =
188                         p.getAny() instanceof JAXBElement ? ( (JAXBElement) p.getAny() ).getValue() : p.getAny();
189 
190                     if ( any instanceof ListType )
191                     {
192                         final ListType list = (ListType) any;
193 
194                         for ( ItemType item : list.getItem() )
195                         {
196                             if ( item.getValue() != null && item.getAny() != null )
197                             {
198                                 if ( module != null )
199                                 {
200                                     report.getDetails().add( new ModelValidationReport.Detail(
201                                         "MODULE_LIST_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
202                                         "moduleListItemValueConstraint", module.getName(), p.getName() ),
203                                         detailElement ) );
204 
205                                 }
206 
207                                 if ( specification != null )
208                                 {
209                                     report.getDetails().add( new ModelValidationReport.Detail(
210                                         "SPECIFICATION_LIST_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
211                                         "specificationListItemValueConstraint", specification.getIdentifier(),
212                                         p.getName() ), detailElement ) );
213 
214                                 }
215 
216                                 if ( implementation != null )
217                                 {
218                                     if ( dependency != null )
219                                     {
220                                         report.getDetails().add( new ModelValidationReport.Detail(
221                                             "DEPENDENCY_LIST_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
222                                             "dependencyListItemValueConstraint", implementation.getIdentifier(),
223                                             dependency.getName(), p.getName() ), detailElement ) );
224 
225                                     }
226                                     else
227                                     {
228                                         report.getDetails().add( new ModelValidationReport.Detail(
229                                             "IMPLEMENTATION_LIST_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
230                                             "implementationListItemValueConstraint", implementation.getIdentifier(),
231                                             p.getName() ), detailElement ) );
232 
233                                     }
234                                 }
235                             }
236 
237                             if ( item.getAny() != null && item.getType() == null )
238                             {
239                                 if ( module != null )
240                                 {
241                                     report.getDetails().add( new ModelValidationReport.Detail(
242                                         "MODULE_LIST_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
243                                         "moduleListItemTypeConstraint", module.getName(), p.getName() ),
244                                         detailElement ) );
245 
246                                 }
247 
248                                 if ( specification != null )
249                                 {
250                                     report.getDetails().add( new ModelValidationReport.Detail(
251                                         "SPECIFICATION_LIST_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
252                                         "specificationListItemTypeConstraint", specification.getIdentifier(),
253                                         p.getName() ), detailElement ) );
254 
255                                 }
256 
257                                 if ( implementation != null )
258                                 {
259                                     if ( dependency != null )
260                                     {
261                                         report.getDetails().add( new ModelValidationReport.Detail(
262                                             "DEPENDENCY_LIST_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
263                                             "dependencyListItemTypeConstraint", implementation.getIdentifier(),
264                                             dependency.getName(), p.getName() ), detailElement ) );
265 
266                                     }
267                                     else
268                                     {
269                                         report.getDetails().add( new ModelValidationReport.Detail(
270                                             "IMPLEMENTATION_LIST_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
271                                             "implementationListItemTypeConstraint", implementation.getIdentifier(),
272                                             p.getName() ), detailElement ) );
273 
274                                     }
275                                 }
276                             }
277 
278                             try
279                             {
280                                 item.getJavaValue( context.getClassLoader() );
281                             }
282                             catch ( final PropertyException e )
283                             {
284                                 if ( context.isLoggable( Level.FINE ) )
285                                 {
286                                     context.log( Level.FINE, e.getMessage(), e );
287                                 }
288 
289                                 if ( module != null )
290                                 {
291                                     report.getDetails().add( new ModelValidationReport.Detail(
292                                         "MODULE_LIST_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
293                                         "moduleListItemJavaValueConstraint", module.getName(), p.getName(),
294                                         e.getMessage() ), detailElement ) );
295 
296                                 }
297 
298                                 if ( specification != null )
299                                 {
300                                     report.getDetails().add( new ModelValidationReport.Detail(
301                                         "SPECIFICATION_LIST_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
302                                         "specificationListItemJavaValueConstraint", specification.getIdentifier(),
303                                         p.getName(), e.getMessage() ), detailElement ) );
304 
305                                 }
306 
307                                 if ( implementation != null )
308                                 {
309                                     if ( dependency != null )
310                                     {
311                                         report.getDetails().add( new ModelValidationReport.Detail(
312                                             "DEPENDENCY_LIST_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
313                                             "dependencyListItemJavaValueConstraint", implementation.getIdentifier(),
314                                             dependency.getName(), p.getName(), e.getMessage() ), detailElement ) );
315 
316                                     }
317                                     else
318                                     {
319                                         report.getDetails().add( new ModelValidationReport.Detail(
320                                             "IMPLEMENTATION_LIST_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
321                                             "implementationListItemJavaValueConstraint", implementation.getIdentifier(),
322                                             p.getName(), e.getMessage() ), detailElement ) );
323 
324                                     }
325                                 }
326                             }
327                         }
328 
329                         try
330                         {
331                             list.getJavaValue( context.getClassLoader() );
332                         }
333                         catch ( final PropertyException e )
334                         {
335                             if ( context.isLoggable( Level.FINE ) )
336                             {
337                                 context.log( Level.FINE, e.getMessage(), e );
338                             }
339 
340                             if ( module != null )
341                             {
342                                 report.getDetails().add( new ModelValidationReport.Detail(
343                                     "MODULE_LIST_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
344                                     "moduleListJavaValueConstraint", module.getName(), p.getName(), e.getMessage() ),
345                                     detailElement ) );
346 
347                             }
348 
349                             if ( specification != null )
350                             {
351                                 report.getDetails().add( new ModelValidationReport.Detail(
352                                     "SPECIFICATION_LIST_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
353                                     "specificationListJavaValueConstraint", specification.getIdentifier(),
354                                     p.getName(), e.getMessage() ), detailElement ) );
355 
356                             }
357 
358                             if ( implementation != null )
359                             {
360                                 if ( dependency != null )
361                                 {
362                                     report.getDetails().add( new ModelValidationReport.Detail(
363                                         "DEPENDENCY_LIST_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
364                                         "dependencyListJavaValueConstraint", implementation.getIdentifier(),
365                                         dependency.getName(), p.getName(), e.getMessage() ), detailElement ) );
366 
367                                 }
368                                 else
369                                 {
370                                     report.getDetails().add( new ModelValidationReport.Detail(
371                                         "IMPLEMENTATION_LIST_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
372                                         "implementationListJavaValueConstraint", implementation.getIdentifier(),
373                                         p.getName(), e.getMessage() ), detailElement ) );
374 
375                                 }
376                             }
377                         }
378                     }
379 
380                     if ( any instanceof MapType )
381                     {
382                         final MapType map = (MapType) any;
383 
384                         for ( MapType.Entry entry : map.getEntry() )
385                         {
386                             if ( entry.getKey().getValue() != null && entry.getKey().getAny() != null )
387                             {
388                                 if ( module != null )
389                                 {
390                                     report.getDetails().add( new ModelValidationReport.Detail(
391                                         "MODULE_MAP_KEY_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
392                                         "moduleMapKeyItemValueConstraint", module.getName(), p.getName() ),
393                                         detailElement ) );
394 
395                                 }
396 
397                                 if ( specification != null )
398                                 {
399                                     report.getDetails().add( new ModelValidationReport.Detail(
400                                         "SPECIFICATION_MAP_KEY_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
401                                         "specificationMapKeyItemValueConstraint", specification.getIdentifier(),
402                                         p.getName() ), detailElement ) );
403 
404                                 }
405 
406                                 if ( implementation != null )
407                                 {
408                                     if ( dependency != null )
409                                     {
410                                         report.getDetails().add( new ModelValidationReport.Detail(
411                                             "DEPENDENCY_MAP_KEY_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
412                                             "dependencyMapKeyItemValueConstraint", implementation.getIdentifier(),
413                                             dependency.getName(), p.getName() ), detailElement ) );
414 
415                                     }
416                                     else
417                                     {
418                                         report.getDetails().add( new ModelValidationReport.Detail(
419                                             "IMPLEMENTATION_MAP_KEY_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
420                                             "implementationMapKeyItemValueConstraint", implementation.getIdentifier(),
421                                             p.getName() ), detailElement ) );
422 
423                                     }
424                                 }
425                             }
426 
427                             if ( entry.getValue().getValue() != null && entry.getValue().getAny() != null )
428                             {
429                                 if ( module != null )
430                                 {
431                                     report.getDetails().add( new ModelValidationReport.Detail(
432                                         "MODULE_MAP_VALUE_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
433                                         "moduleMapValueItemValueConstraint", module.getName(), p.getName() ),
434                                         detailElement ) );
435 
436                                 }
437 
438                                 if ( specification != null )
439                                 {
440                                     report.getDetails().add( new ModelValidationReport.Detail(
441                                         "SPECIFICATION_MAP_VALUE_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
442                                         "specificationMapValueItemValueConstraint", specification.getIdentifier(),
443                                         p.getName() ), detailElement ) );
444 
445                                 }
446 
447                                 if ( implementation != null )
448                                 {
449                                     if ( dependency != null )
450                                     {
451                                         report.getDetails().add( new ModelValidationReport.Detail(
452                                             "DEPENDENCY_MAP_VALUE_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
453                                             "dependencyMapValueItemValueConstraint", implementation.getIdentifier(),
454                                             dependency.getName(), p.getName() ), detailElement ) );
455 
456                                     }
457                                     else
458                                     {
459                                         report.getDetails().add( new ModelValidationReport.Detail(
460                                             "IMPLEMENTATION_MAP_VALUE_ITEM_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
461                                             "implementationMapValueItemValueConstraint", implementation.getIdentifier(),
462                                             p.getName() ), detailElement ) );
463 
464                                     }
465                                 }
466                             }
467 
468                             if ( entry.getKey().getAny() != null && entry.getKey().getType() == null )
469                             {
470                                 if ( module != null )
471                                 {
472                                     report.getDetails().add( new ModelValidationReport.Detail(
473                                         "MODULE_MAP_KEY_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
474                                         "moduleMapKeyItemTypeConstraint", module.getName(), p.getName() ),
475                                         detailElement ) );
476 
477                                 }
478 
479                                 if ( specification != null )
480                                 {
481                                     report.getDetails().add( new ModelValidationReport.Detail(
482                                         "SPECIFICATION_MAP_KEY_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
483                                         "specificationMapKeyItemTypeConstraint", specification.getIdentifier(),
484                                         p.getName() ), detailElement ) );
485 
486                                 }
487 
488 
489                                 if ( implementation != null )
490                                 {
491                                     if ( dependency != null )
492                                     {
493                                         report.getDetails().add( new ModelValidationReport.Detail(
494                                             "DEPENDENCY_MAP_KEY_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
495                                             "dependencyMapKeyItemTypeConstraint", implementation.getIdentifier(),
496                                             dependency.getName(), p.getName() ), detailElement ) );
497 
498                                     }
499                                     else
500                                     {
501                                         report.getDetails().add( new ModelValidationReport.Detail(
502                                             "IMPLEMENTATION_MAP_KEY_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
503                                             "implementationMapKeyItemTypeConstraint", implementation.getIdentifier(),
504                                             p.getName() ), detailElement ) );
505 
506                                     }
507                                 }
508                             }
509 
510                             if ( entry.getValue().getAny() != null && entry.getValue().getType() == null )
511                             {
512                                 if ( module != null )
513                                 {
514                                     report.getDetails().add( new ModelValidationReport.Detail(
515                                         "MODULE_MAP_VALUE_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
516                                         "moduleMapValueItemTypeConstraint", module.getName(), p.getName() ),
517                                         detailElement ) );
518 
519                                 }
520 
521                                 if ( specification != null )
522                                 {
523                                     report.getDetails().add( new ModelValidationReport.Detail(
524                                         "SPECIFICATION_MAP_VALUE_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
525                                         "specificationMapValueItemTypeConstraint", specification.getIdentifier(),
526                                         p.getName() ), detailElement ) );
527 
528                                 }
529 
530                                 if ( implementation != null )
531                                 {
532                                     if ( dependency != null )
533                                     {
534                                         report.getDetails().add( new ModelValidationReport.Detail(
535                                             "DEPENDENCY_MAP_VALUE_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
536                                             "dependencyMapValueItemTypeConstraint", implementation.getIdentifier(),
537                                             dependency.getName(), p.getName() ), detailElement ) );
538 
539                                     }
540                                     else
541                                     {
542                                         report.getDetails().add( new ModelValidationReport.Detail(
543                                             "IMPLEMENTATION_MAP_VALUE_ITEM_TYPE_CONSTRAINT", Level.SEVERE, getMessage(
544                                             "implementationMapValueItemTypeConstraint", implementation.getIdentifier(),
545                                             p.getName() ), detailElement ) );
546 
547                                     }
548                                 }
549                             }
550 
551                             try
552                             {
553                                 entry.getKey().getJavaValue( context.getClassLoader() );
554                             }
555                             catch ( final PropertyException e )
556                             {
557                                 if ( context.isLoggable( Level.FINE ) )
558                                 {
559                                     context.log( Level.FINE, e.getMessage(), e );
560                                 }
561 
562                                 if ( module != null )
563                                 {
564                                     report.getDetails().add( new ModelValidationReport.Detail(
565                                         "MODULE_MAP_KEY_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
566                                         "moduleMapKeyItemJavaValueConstraint", module.getName(), p.getName(),
567                                         e.getMessage() ), detailElement ) );
568 
569                                 }
570 
571                                 if ( specification != null )
572                                 {
573                                     report.getDetails().add( new ModelValidationReport.Detail(
574                                         "SPECIFICATION_MAP_KEY_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
575                                         "specificationMapKeyItemJavaValueConstraint", specification.getIdentifier(),
576                                         p.getName(), e.getMessage() ), detailElement ) );
577 
578                                 }
579 
580                                 if ( implementation != null )
581                                 {
582                                     if ( dependency != null )
583                                     {
584                                         report.getDetails().add( new ModelValidationReport.Detail(
585                                             "DEPENDENCY_MAP_KEY_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
586                                             "dependencyMapKeyItemJavaValueConstraint", implementation.getIdentifier(),
587                                             dependency.getName(), p.getName(), e.getMessage() ), detailElement ) );
588 
589                                     }
590                                     else
591                                     {
592                                         report.getDetails().add( new ModelValidationReport.Detail(
593                                             "IMPLEMENTATION_MAP_KEY_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE,
594                                             getMessage( "implementationMapKeyItemJavaValueConstraint",
595                                                         implementation.getIdentifier(), p.getName(), e.getMessage() ),
596                                             detailElement ) );
597 
598                                     }
599                                 }
600                             }
601 
602                             try
603                             {
604                                 entry.getValue().getJavaValue( context.getClassLoader() );
605                             }
606                             catch ( final PropertyException e )
607                             {
608                                 if ( context.isLoggable( Level.FINE ) )
609                                 {
610                                     context.log( Level.FINE, e.getMessage(), e );
611                                 }
612 
613                                 if ( module != null )
614                                 {
615                                     report.getDetails().add( new ModelValidationReport.Detail(
616                                         "MODULE_MAP_VALUE_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
617                                         "moduleMapValueItemJavaValueConstraint", module.getName(), p.getName(),
618                                         e.getMessage() ), detailElement ) );
619 
620                                 }
621 
622                                 if ( specification != null )
623                                 {
624                                     report.getDetails().add( new ModelValidationReport.Detail(
625                                         "SPECIFICATION_MAP_VALUE_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
626                                         "specificationMapValueItemJavaValueConstraint", specification.getIdentifier(),
627                                         p.getName(), e.getMessage() ), detailElement ) );
628 
629                                 }
630 
631                                 if ( implementation != null )
632                                 {
633                                     if ( dependency != null )
634                                     {
635                                         report.getDetails().add( new ModelValidationReport.Detail(
636                                             "DEPENDENCY_MAP_VALUE_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE,
637                                             getMessage( "dependencyMapValueItemJavaValueConstraint",
638                                                         implementation.getIdentifier(), dependency.getName(),
639                                                         p.getName(), e.getMessage() ), detailElement ) );
640 
641                                     }
642                                     else
643                                     {
644                                         report.getDetails().add( new ModelValidationReport.Detail(
645                                             "IMPLEMENTATION_MAP_VALUE_ITEM_JAVA_VALUE_CONSTRAINT", Level.SEVERE,
646                                             getMessage( "implementationMapValueItemJavaValueConstraint",
647                                                         implementation.getIdentifier(), p.getName(), e.getMessage() ),
648                                             detailElement ) );
649 
650                                     }
651                                 }
652                             }
653                         }
654 
655                         try
656                         {
657                             map.getJavaValue( context.getClassLoader() );
658                         }
659                         catch ( final PropertyException e )
660                         {
661                             if ( context.isLoggable( Level.FINE ) )
662                             {
663                                 context.log( Level.FINE, e.getMessage(), e );
664                             }
665 
666                             if ( module != null )
667                             {
668                                 report.getDetails().add( new ModelValidationReport.Detail(
669                                     "MODULE_MAP_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
670                                     "moduleMapJavaValueConstraint", module.getName(), p.getName(), e.getMessage() ),
671                                     detailElement ) );
672 
673                             }
674 
675                             if ( specification != null )
676                             {
677                                 report.getDetails().add( new ModelValidationReport.Detail(
678                                     "SPECIFICATION_MAP_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
679                                     "specificationMapJavaValueConstraint", specification.getIdentifier(),
680                                     p.getName(), e.getMessage() ), detailElement ) );
681 
682                             }
683 
684                             if ( implementation != null )
685                             {
686                                 if ( dependency != null )
687                                 {
688                                     report.getDetails().add( new ModelValidationReport.Detail(
689                                         "DEPENDENCY_MAP_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
690                                         "dependencyMapJavaValueConstraint", implementation.getIdentifier(),
691                                         dependency.getName(), p.getName(), e.getMessage() ), detailElement ) );
692 
693                                 }
694                                 else
695                                 {
696                                     report.getDetails().add( new ModelValidationReport.Detail(
697                                         "IMPLEMENTATION_MAP_JAVA_VALUE_CONSTRAINT", Level.SEVERE, getMessage(
698                                         "implementationMapJavaValueConstraint", implementation.getIdentifier(),
699                                         p.getName(), e.getMessage() ), detailElement ) );
700 
701                                 }
702                             }
703                         }
704                     }
705                 }
706             }
707         }
708     }
709 
710     private static String getMessage( final String key, final Object... arguments )
711     {
712         return MessageFormat.format( ResourceBundle.getBundle( SdkModelValidator.class.getName().replace( '.', '/' ) ).
713             getString( key ), arguments );
714 
715     }
716 
717     // SECTION-END
718     // SECTION-START[Constructors]
719     // <editor-fold defaultstate="collapsed" desc=" Generated Constructors ">
720 
721     /** Creates a new {@code SdkModelValidator} instance. */
722     @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" )
723     public SdkModelValidator()
724     {
725         // SECTION-START[Default Constructor]
726         super();
727         // SECTION-END
728     }
729     // </editor-fold>
730     // SECTION-END
731     // SECTION-START[Dependencies]
732     // SECTION-END
733     // SECTION-START[Properties]
734     // SECTION-END
735     // SECTION-START[Messages]
736     // SECTION-END
737 }