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 }