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