View Javadoc
1   /*
2    * This file is part of dependency-check-core.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   *
16   * Copyright (c) 2014 Jeremy Long. All Rights Reserved.
17   */
18  package org.owasp.dependencycheck.data.nexus;
19  
20  /**
21   * Simple bean representing a Maven Artifact.
22   *
23   * @author colezlaw
24   */
25  public class MavenArtifact {
26  
27      /**
28       * The base URL for download artifacts from Central.
29       */
30      private static final String CENTRAL_CONTENT_URL = "//search.maven.org/remotecontent?filepath=";
31  
32      /**
33       * The groupId
34       */
35      private String groupId;
36  
37      /**
38       * The artifactId
39       */
40      private String artifactId;
41  
42      /**
43       * The version
44       */
45      private String version;
46  
47      /**
48       * The artifact url. This may change depending on which Nexus server the search took place.
49       */
50      private String artifactUrl;
51      /**
52       * The url to download the POM from.
53       */
54      private String pomUrl;
55  
56      /**
57       * Creates an empty MavenArtifact.
58       */
59      public MavenArtifact() {
60      }
61  
62      /**
63       * Creates a MavenArtifact with the given attributes.
64       *
65       * @param groupId the groupId
66       * @param artifactId the artifactId
67       * @param version the version
68       */
69      public MavenArtifact(String groupId, String artifactId, String version) {
70          this.groupId = groupId;
71          this.artifactId = artifactId;
72          this.version = version;
73      }
74  
75      /**
76       * Creates a MavenArtifact with the given attributes.
77       *
78       * @param groupId the groupId
79       * @param artifactId the artifactId
80       * @param version the version
81       * @param jarAvailable if the jar file is available from central
82       * @param pomAvailable if the pom file is available from central
83       * @param secureDownload if the jar and pom files should be downloaded using HTTPS.
84       */
85      public MavenArtifact(String groupId, String artifactId, String version, boolean jarAvailable, boolean pomAvailable, boolean secureDownload) {
86          this.groupId = groupId;
87          this.artifactId = artifactId;
88          this.version = version;
89          String base;
90          if (secureDownload) {
91              base = "https:" + CENTRAL_CONTENT_URL;
92          } else {
93              base = "http:" + CENTRAL_CONTENT_URL;
94          }
95          if (jarAvailable) {
96              //org/springframework/spring-core/3.2.0.RELEASE/spring-core-3.2.0.RELEASE.pom
97              this.artifactUrl = base + groupId.replace('.', '/') + '/' + artifactId + '/'
98                      + version + '/' + artifactId + '-' + version + ".jar";
99          }
100         if (pomAvailable) {
101             //org/springframework/spring-core/3.2.0.RELEASE/spring-core-3.2.0.RELEASE.pom
102             this.pomUrl = base + groupId.replace('.', '/') + '/' + artifactId + '/'
103                     + version + '/' + artifactId + '-' + version + ".pom";
104         }
105     }
106 
107     /**
108      * Creates a MavenArtifact with the given attributes.
109      *
110      * @param groupId the groupId
111      * @param artifactId the artifactId
112      * @param version the version
113      * @param url the artifactLink url
114      */
115     public MavenArtifact(String groupId, String artifactId, String version, String url) {
116         this.groupId = groupId;
117         this.artifactId = artifactId;
118         this.version = version;
119         this.artifactUrl = url;
120     }
121 
122     /**
123      * Returns the Artifact coordinates as a String.
124      *
125      * @return the String representation of the artifact coordinates
126      */
127     @Override
128     public String toString() {
129         return String.format("%s:%s:%s", groupId, artifactId, version);
130     }
131 
132     /**
133      * Sets the groupId.
134      *
135      * @param groupId the groupId
136      */
137     public void setGroupId(String groupId) {
138         this.groupId = groupId;
139     }
140 
141     /**
142      * Gets the groupId.
143      *
144      * @return the groupId
145      */
146     public String getGroupId() {
147         return groupId;
148     }
149 
150     /**
151      * Sets the artifactId.
152      *
153      * @param artifactId the artifactId
154      */
155     public void setArtifactId(String artifactId) {
156         this.artifactId = artifactId;
157     }
158 
159     /**
160      * Gets the artifactId.
161      *
162      * @return the artifactId
163      */
164     public String getArtifactId() {
165         return artifactId;
166     }
167 
168     /**
169      * Sets the version.
170      *
171      * @param version the version
172      */
173     public void setVersion(String version) {
174         this.version = version;
175     }
176 
177     /**
178      * Gets the version.
179      *
180      * @return the version
181      */
182     public String getVersion() {
183         return version;
184     }
185 
186     /**
187      * Sets the artifactUrl.
188      *
189      * @param artifactUrl the artifactUrl
190      */
191     public void setArtifactUrl(String artifactUrl) {
192         this.artifactUrl = artifactUrl;
193     }
194 
195     /**
196      * Gets the artifactUrl.
197      *
198      * @return the artifactUrl
199      */
200     public String getArtifactUrl() {
201         return artifactUrl;
202     }
203 
204     /**
205      * Get the value of pomUrl.
206      *
207      * @return the value of pomUrl
208      */
209     public String getPomUrl() {
210         return pomUrl;
211     }
212 
213     /**
214      * Set the value of pomUrl.
215      *
216      * @param pomUrl new value of pomUrl
217      */
218     public void setPomUrl(String pomUrl) {
219         this.pomUrl = pomUrl;
220     }
221 
222 }
223 
224 // vim: cc=120:sw=4:ts=4:sts=4