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
55
56 private static final String TOOLNAME = "ClassFileProcessor";
57
58
59
60
61 public AbstractClasspathValidateMojo()
62 {
63 super();
64 }
65
66 @Override
67 protected final void executeTool() throws Exception
68 {
69 this.logSeparator();
70 this.logProcessingModel( TOOLNAME, this.getModel() );
71
72 final ModelContext context = this.createModelContext( this.getClasspathClassLoader() );
73 final ClassFileProcessor tool = this.createClassFileProcessor( context );
74 final JAXBContext jaxbContext = context.createContext( this.getModel() );
75 final Source source = new JAXBSource( jaxbContext, new ObjectFactory().createModel( tool.getModel() ) );
76 ModelValidationReport validationReport = context.validateModel( this.getModel(), source );
77
78 this.log( context, validationReport.isModelValid() ? Level.INFO : Level.SEVERE, validationReport );
79
80 if ( validationReport.isModelValid() )
81 {
82 validationReport = tool.validateModelObjects( context );
83
84 if ( validationReport != null )
85 {
86 this.log( context, validationReport.isModelValid() ? Level.INFO : Level.SEVERE, validationReport );
87
88 if ( !validationReport.isModelValid() )
89 {
90 throw new MojoExecutionException( Messages.getMessage( "classFileValidationFailure" ) );
91 }
92 }
93
94 this.logToolSuccess( TOOLNAME );
95 }
96 else
97 {
98 throw new MojoExecutionException( Messages.getMessage( "classFileValidationFailure" ) );
99 }
100 }
101
102
103
104
105
106
107
108
109 protected abstract ClassLoader getClasspathClassLoader() throws MojoExecutionException;
110
111 }