-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathPlugin.java
128 lines (106 loc) · 3.88 KB
/
Plugin.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
* SonarSource :: Update Center :: Common
* Copyright (C) 2010-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.updatecenter.common;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import java.util.Arrays;
public class Plugin extends Component {
private Plugin(String key) {
super(key);
}
public static Plugin factory(String key) {
// in accordance with https://github.com/SonarSource/sonar-packaging-maven-plugin/blob/master/src/main/java/org/sonarsource/pluginpackaging/PluginKeyUtils.java#L44
if (StringUtils.isAlphanumeric(key)) {
return new Plugin(key);
} else {
throw new IllegalArgumentException("plugin key must be alphanumeric, strictly");
}
}
@Override
public Plugin setName(String name) {
return (Plugin) super.setName(name);
}
@Override
public Plugin setDescription(String description) {
return (Plugin) super.setDescription(description);
}
@Override
public Plugin setHomepageUrl(String url) {
return (Plugin) super.setHomepageUrl(url);
}
@Override
public Plugin setLicense(String license) {
return (Plugin) super.setLicense(license);
}
@Override
public Plugin setOrganization(String organization) {
return (Plugin) super.setOrganization(organization);
}
@Override
public Plugin setOrganizationUrl(String url) {
return (Plugin) super.setOrganizationUrl(url);
}
@Override
public Plugin setCategory(String category) {
return (Plugin) super.setCategory(category);
}
@Override
public Plugin setTermsConditionsUrl(String url) {
return (Plugin) super.setTermsConditionsUrl(url);
}
@Override
public Plugin setIssueTrackerUrl(String url) {
return (Plugin) super.setIssueTrackerUrl(url);
}
@Override
public Plugin setSourcesUrl(String sourcesUrl) {
return (Plugin) super.setSourcesUrl(sourcesUrl);
}
@Override
public Plugin setDevelopers(List developers) {
return (Plugin) super.setDevelopers(developers);
}
@Override
boolean needArtifact() {
return true;
}
@Override
boolean needSqVersion() {
return true;
}
public Plugin merge(PluginManifest manifest) {
if (StringUtils.equals(key, manifest.getKey())) {
// from the manifest
name = manifest.getName();
// precedence to the manifest file
organization = StringUtils.defaultIfEmpty(manifest.getOrganization(), organization);
organizationUrl = StringUtils.defaultIfEmpty(manifest.getOrganizationUrl(), organizationUrl);
license = StringUtils.defaultIfEmpty(manifest.getLicense(), license);
termsConditionsUrl = StringUtils.defaultIfEmpty(manifest.getTermsConditionsUrl(), termsConditionsUrl);
developers = Arrays.asList(manifest.getDevelopers());
// precedence to the update center file
description = StringUtils.defaultIfEmpty(description, manifest.getDescription());
issueTrackerUrl = StringUtils.defaultIfEmpty(issueTrackerUrl, manifest.getIssueTrackerUrl());
homepageUrl = StringUtils.defaultIfEmpty(homepageUrl, manifest.getHomepage());
sourcesUrl = StringUtils.defaultIfEmpty(sourcesUrl, manifest.getSourcesUrl());
}
return this;
}
}