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.mojo;
32
33 import java.util.logging.Level;
34 import javax.xml.bind.JAXBContext;
35 import javax.xml.bind.util.JAXBSource;
36 import javax.xml.transform.Source;
37 import org.apache.maven.plugin.MojoExecutionException;
38 import org.jomc.modlet.ModelContext;
39 import org.jomc.modlet.ModelValidationReport;
40 import org.jomc.modlet.ObjectFactory;
41 import org.jomc.tools.ClassFileProcessor;
42
43
44
45
46
47
48
49
50 public abstract class AbstractClasspathValidateMojo extends AbstractJomcMojo
51 {
52
53
54 private static final String TOOLNAME = "ClassFileProcessor";
55
56
57 public AbstractClasspathValidateMojo()
58 {
59 super();
60 }
61
62 @Override
63 protected final void executeTool() throws Exception
64 {
65 this.logSeparator();
66 this.logProcessingModel( TOOLNAME, this.getModel() );
67
68 final ModelContext context = this.createModelContext( this.getClasspathClassLoader() );
69 final ClassFileProcessor tool = this.createClassFileProcessor( context );
70 final JAXBContext jaxbContext = context.createContext( this.getModel() );
71 final Source source = new JAXBSource( jaxbContext, new ObjectFactory().createModel( tool.getModel() ) );
72 ModelValidationReport validationReport = context.validateModel( this.getModel(), source );
73
74 this.log( context, validationReport.isModelValid() ? Level.INFO : Level.SEVERE, validationReport );
75
76 if ( validationReport.isModelValid() )
77 {
78 validationReport = tool.validateModelObjects( context );
79 this.log( context, validationReport.isModelValid() ? Level.INFO : Level.SEVERE, validationReport );
80
81 if ( !validationReport.isModelValid() )
82 {
83 throw new MojoExecutionException( Messages.getMessage( "classFileValidationFailure" ) );
84 }
85
86 this.logToolSuccess( TOOLNAME );
87 }
88 else
89 {
90 throw new MojoExecutionException( Messages.getMessage( "classFileValidationFailure" ) );
91 }
92 }
93
94
95
96
97
98
99
100
101 protected abstract ClassLoader getClasspathClassLoader() throws MojoExecutionException;
102
103 }