]> source.dussan.org Git - archiva.git/blob
75eecd9c305cfeb272434c398fd80dd6a0f4b1af
[archiva.git] /
1 package org.apache.maven.repository.reporting;
2
3 /*
4  * Copyright 2005-2006 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.maven.artifact.Artifact;
20 import org.apache.maven.artifact.repository.ArtifactRepository;
21 import org.apache.maven.model.Model;
22 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
23 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
24
25 import java.io.FileInputStream;
26 import java.io.FileNotFoundException;
27 import java.io.IOException;
28 import java.io.InputStream;
29 import java.io.InputStreamReader;
30 import java.io.Reader;
31 import java.net.MalformedURLException;
32 import java.net.URL;
33
34 /**
35  * This class validates well-formedness of pom xml file.
36  */
37 public class InvalidPomArtifactReportProcessor
38     implements ArtifactReportProcessor
39 {
40
41     /**
42      * @param model
43      * @param artifact   The pom xml file to be validated, passed as an artifact object.
44      * @param reporter   The artifact reporter object.
45      * @param repository the repository where the artifact is located.
46      */
47     public void processArtifact( Model model, Artifact artifact, ArtifactReporter reporter,
48                                  ArtifactRepository repository )
49     {
50         InputStream is = null;
51
52         if ( "pom".equals( artifact.getType().toLowerCase() ) )
53         {
54
55             if ( "file".equals( repository.getProtocol() ) )
56             {
57                 try
58                 {
59                     is = new FileInputStream( repository.getBasedir() + artifact.getGroupId() + "/" +
60                         artifact.getArtifactId() + "/" + artifact.getBaseVersion() + "/" + artifact.getArtifactId() +
61                         "-" + artifact.getBaseVersion() + "." + artifact.getType() );
62                 }
63                 catch ( FileNotFoundException fe )
64                 {
65                     reporter.addFailure( artifact, "Artifact not found." );
66                 }
67             }
68             else
69             {
70                 try
71                 {
72                     URL url = new URL( repository.getUrl() + artifact.getGroupId() + "/" + artifact.getArtifactId() +
73                         "/" + artifact.getBaseVersion() + "/" + artifact.getArtifactId() + "-" +
74                         artifact.getBaseVersion() + "." + artifact.getType() );
75                     is = url.openStream();
76
77                 }
78                 catch ( MalformedURLException me )
79                 {
80                     reporter.addFailure( artifact, "Error retrieving artifact from remote repository." );
81                 }
82                 catch ( IOException ie )
83                 {
84                     reporter.addFailure( artifact, "Error retrieving artifact from remote repository." );
85                 }
86             }
87
88             Reader reader = new InputStreamReader( is );
89             MavenXpp3Reader pomReader = new MavenXpp3Reader();
90
91             try
92             {
93                 Model pomModel = pomReader.read( reader );
94                 reporter.addSuccess( artifact );
95             }
96             catch ( XmlPullParserException xe )
97             {
98                 reporter.addFailure( artifact, "The pom xml file is not well-formed. Error while parsing." );
99             }
100             catch ( IOException oe )
101             {
102                 reporter.addFailure( artifact, "Error while reading the pom xml file." );
103             }
104
105         }
106         else
107         {
108             reporter.addWarning( artifact, "The artifact is not a pom xml file." );
109         }
110     }
111
112 }