1 package org.apache.maven.project;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.model.building.ModelProblem;
23 import org.apache.maven.model.building.ModelProblemUtils;
24
25 import java.io.File;
26 import java.io.PrintWriter;
27 import java.io.StringWriter;
28 import java.util.List;
29
30
31
32
33 public class ProjectBuildingException
34 extends Exception
35 {
36 private final String projectId;
37
38 private File pomFile;
39
40 private List<ProjectBuildingResult> results;
41
42 public ProjectBuildingException( String projectId, String message, Throwable cause )
43 {
44 super( createMessage( message, projectId, null ), cause );
45 this.projectId = projectId;
46 }
47
48
49
50
51
52
53 public ProjectBuildingException( String projectId, String message, File pomFile )
54 {
55 super( createMessage( message, projectId, pomFile ) );
56 this.projectId = projectId;
57 this.pomFile = pomFile;
58 }
59
60
61
62
63
64
65
66 protected ProjectBuildingException( String projectId, String message, File pomFile, Throwable cause )
67 {
68 super( createMessage( message, projectId, pomFile ), cause );
69 this.projectId = projectId;
70 this.pomFile = pomFile;
71 }
72
73 public ProjectBuildingException( List<ProjectBuildingResult> results )
74 {
75 super( createMessage( results ) );
76 this.projectId = "";
77 this.results = results;
78 }
79
80 public File getPomFile()
81 {
82 return pomFile;
83 }
84
85
86
87
88 public String getPomLocation()
89 {
90 if ( getPomFile() != null )
91 {
92 return getPomFile().getAbsolutePath();
93 }
94 else
95 {
96 return "null";
97 }
98 }
99
100 public String getProjectId()
101 {
102 return projectId;
103 }
104
105 public List<ProjectBuildingResult> getResults()
106 {
107 return results;
108 }
109
110 private static String createMessage( String message, String projectId, File pomFile )
111 {
112 StringBuilder buffer = new StringBuilder( 256 );
113 buffer.append( message );
114 buffer.append( " for project " ).append( projectId );
115 if ( pomFile != null )
116 {
117 buffer.append( " at " ).append( pomFile.getAbsolutePath() );
118 }
119 return buffer.toString();
120 }
121
122 private static String createMessage( List<ProjectBuildingResult> results )
123 {
124 StringWriter buffer = new StringWriter( 1024 );
125 PrintWriter writer = new PrintWriter( buffer );
126 writer.println( "Some problems were encountered while processing the POMs:" );
127 try
128 {
129
130 for ( ProjectBuildingResult result : results )
131 {
132 for ( ModelProblem problem : result.getProblems() )
133 {
134 writer.print( "[" );
135 writer.print( problem.getSeverity() );
136 writer.print( "] " );
137 writer.print( problem.getMessage() );
138 writer.print( " @ " );
139 writer.println( ModelProblemUtils.formatLocation( problem, result.getProjectId() ) );
140 }
141 }
142 }
143 finally
144 {
145 writer.close();
146 }
147 return buffer.toString();
148 }
149
150 }