1 package org.apache.maven.plugin.checkstyle.rss;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.IOException;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.checkstyle.CheckstyleReport;
26 import org.apache.maven.plugin.checkstyle.CheckstyleResults;
27 import org.apache.maven.plugin.checkstyle.VelocityTemplate;
28 import org.apache.maven.reporting.MavenReportException;
29 import org.apache.velocity.VelocityContext;
30 import org.apache.velocity.context.Context;
31 import org.apache.velocity.exception.ResourceNotFoundException;
32 import org.apache.velocity.exception.VelocityException;
33 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
34 import org.codehaus.plexus.personality.plexus.lifecycle.phase.ServiceLocator;
35 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Serviceable;
36 import org.codehaus.plexus.util.StringUtils;
37 import org.codehaus.plexus.velocity.VelocityComponent;
38
39 import com.puppycrawl.tools.checkstyle.api.SeverityLevel;
40
41
42
43
44
45
46
47 public class DefaultCheckstyleRssGenerator
48 implements CheckstyleRssGenerator, Serviceable
49 {
50
51
52
53
54 private VelocityComponent velocityComponent;
55
56
57
58
59
60 private ServiceLocator serviceLocator;
61
62
63
64
65 public void generateRSS( CheckstyleResults results, CheckstyleRssGeneratorRequest checkstyleRssGeneratorRequest )
66 throws MavenReportException
67 {
68 if ( velocityComponent == null )
69 {
70 try
71 {
72 velocityComponent = (VelocityComponent) serviceLocator.lookup( VelocityComponent.ROLE );
73 }
74 catch ( ComponentLookupException e )
75 {
76 throw new MavenReportException( "Failed to setup Velocity", e );
77 }
78 }
79
80 VelocityTemplate vtemplate = new VelocityTemplate( velocityComponent, CheckstyleReport.PLUGIN_RESOURCES );
81 vtemplate.setLog( checkstyleRssGeneratorRequest.getLog() );
82
83 Context context = new VelocityContext();
84 context.put( "results", results );
85 context.put( "project", checkstyleRssGeneratorRequest.getMavenProject() );
86 context.put( "copyright", checkstyleRssGeneratorRequest.getCopyright() );
87 context.put( "levelInfo", SeverityLevel.INFO );
88 context.put( "levelWarning", SeverityLevel.WARNING );
89 context.put( "levelError", SeverityLevel.ERROR );
90 context.put( "stringutils", new StringUtils() );
91
92 try
93 {
94 vtemplate.generate( checkstyleRssGeneratorRequest.getOutputDirectory().getPath() + "/checkstyle.rss", "checkstyle-rss.vm", context );
95 }
96 catch ( ResourceNotFoundException e )
97 {
98 throw new MavenReportException( "Unable to find checkstyle-rss.vm resource.", e );
99 }
100 catch ( MojoExecutionException e )
101 {
102 throw new MavenReportException( "Unable to generate checkstyle.rss.", e );
103 }
104 catch ( VelocityException e )
105 {
106 throw new MavenReportException( "Unable to generate checkstyle.rss.", e );
107 }
108 catch ( IOException e )
109 {
110 throw new MavenReportException( "Unable to generate checkstyle.rss.", e );
111 }
112 }
113
114
115 public void service( ServiceLocator locator )
116 {
117 this.serviceLocator = locator;
118 }
119 }