Gentoo Archives: gentoo-commits

From: "Miroslav Šulc" <fordfrog@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/java-ebuilder:master commit in: src/main/java/org/gentoo/java/ebuilder/maven/, src/main/resources/
Date: Wed, 05 Aug 2020 14:31:51
Message-Id: 1596212714.cc8aa4b89b5f9e268d4d40d04b25418e70955ea3.fordfrog@gentoo
1 commit: cc8aa4b89b5f9e268d4d40d04b25418e70955ea3
2 Author: zongyu <zzy2529420793 <AT> gmail <DOT> com>
3 AuthorDate: Fri Jul 31 09:07:48 2020 +0000
4 Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
5 CommitDate: Fri Jul 31 16:25:14 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/java-ebuilder.git/commit/?id=cc8aa4b8
7
8 initial effort to make java-ebuilder parse licenses from pom.xml
9
10 Signed-off-by: zongyu <zzy2529420793 <AT> gmail.com>
11
12 .../gentoo/java/ebuilder/maven/MavenEbuilder.java | 2 +
13 .../gentoo/java/ebuilder/maven/MavenLicenses.java | 62 ++++++++++++++++++++
14 .../gentoo/java/ebuilder/maven/MavenParser.java | 66 ++++++++++++++++++++++
15 .../gentoo/java/ebuilder/maven/MavenProject.java | 22 ++++++++
16 src/main/resources/licenseMap.properties | 2 +
17 5 files changed, 154 insertions(+)
18
19 diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
20 index 37d45a4..3b5c3d6 100644
21 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
22 +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenEbuilder.java
23 @@ -702,6 +702,8 @@ public class MavenEbuilder {
24
25 if (config.getLicense() != null) {
26 writer.print(config.getLicense());
27 + } else {
28 + writer.print(mavenProject.getLicenses());
29 }
30
31 writer.println('"');
32
33 diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenLicenses.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenLicenses.java
34 new file mode 100644
35 index 0000000..e2db62c
36 --- /dev/null
37 +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenLicenses.java
38 @@ -0,0 +1,62 @@
39 +package org.gentoo.java.ebuilder.maven;
40 +
41 +import java.io.FileNotFoundException;
42 +import java.io.IOException;
43 +import java.util.HashMap;
44 +import java.util.Map;
45 +import java.util.Properties;
46 +
47 +/**
48 + * translate licenses from pom.xml to portage
49 + *
50 + * @author Zhang Zongyu
51 + */
52 +public class MavenLicenses {
53 +
54 + /**
55 + * Location of the resource file mapping licenses.
56 + */
57 + private static final String licenseMapFile
58 + = "/licenseMap.properties";
59 +
60 + /**
61 + * the Map that will convert license from maven
62 + * to portage.
63 + */
64 + private Map<String, String> licenseMap;
65 +
66 + /**
67 + * Load cache from resource
68 + */
69 + @SuppressWarnings({"unchecked", "rawtypes"})
70 + MavenLicenses() {
71 + Properties mapProperty = new Properties();
72 + try {
73 + mapProperty.load(
74 + this.getClass().getResourceAsStream(
75 + licenseMapFile));
76 + } catch (final IOException ex) {
77 + throw new RuntimeException(
78 + "Failed to read license map from resource", ex);
79 + }
80 +
81 + licenseMap = (Map)mapProperty;
82 + }
83 +
84 + /**
85 + * query the LicenseMap
86 + *
87 + * @param licenseName the licenses/license/name in pom.xml
88 + *
89 + * @return license identifier that works with Portage
90 + */
91 + public String getEquivalentLicense(String licenseName) {
92 + final String portageLicense = licenseMap.get(licenseName);
93 +
94 + if (portageLicense == null) {
95 + return "!!!equivalentPortageLicenseName-not-found!!!";
96 + } else {
97 + return portageLicense;
98 + }
99 + }
100 +}
101
102 diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
103 index 8abc0aa..8c64e37 100644
104 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
105 +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenParser.java
106 @@ -16,6 +16,7 @@ import javax.xml.stream.XMLInputFactory;
107 import javax.xml.stream.XMLStreamException;
108 import javax.xml.stream.XMLStreamReader;
109 import org.gentoo.java.ebuilder.Config;
110 +import org.gentoo.java.ebuilder.maven.MavenLicenses;
111
112 /**
113 * Parser for parsing pom.xml into project collector class.
114 @@ -419,6 +420,9 @@ public class MavenParser {
115 case "groupId":
116 mavenProject.setGroupId(reader.getElementText());
117 break;
118 + case "licenses":
119 + parseProjectLicenses(mavenProject, reader);
120 + break;
121 case "properties":
122 parseProjectProperties(mavenProject, reader);
123 break;
124 @@ -572,6 +576,68 @@ public class MavenParser {
125 }
126 }
127
128 + /**
129 + * Parses project licenses.
130 + *
131 + * @param mavenProject maven project instance
132 + * @param reader XML stream reader
133 + *
134 + * @throws XMLStreamException Thrown if problem occurred while reading the
135 + * XML stream.
136 + */
137 + private void parseProjectLicenses(final MavenProject mavenProject,
138 + final XMLStreamReader reader)
139 + throws XMLStreamException {
140 + MavenLicenses mavenLic = new MavenLicenses();
141 +
142 + while (reader.hasNext()) {
143 + reader.next();
144 +
145 + if (reader.isStartElement()) {
146 + switch (reader.getLocalName()) {
147 + case "license":
148 + parseProjectLicense(mavenLic, mavenProject, reader);
149 + break;
150 + default:
151 + consumeElement(reader);
152 + }
153 + } else if (reader.isEndElement()) {
154 + return;
155 + }
156 + }
157 + }
158 +
159 + /**
160 + * Parses project license.
161 + *
162 + * @param mavenProject maven project instance
163 + * @param reader XML stream reader
164 + *
165 + * @throws XMLStreamException Thrown if problem occurred while reading the
166 + * XML stream.
167 + */
168 + private void parseProjectLicense(final MavenLicenses mavenLicenses,
169 + final MavenProject mavenProject, final XMLStreamReader reader)
170 + throws XMLStreamException {
171 + while (reader.hasNext()) {
172 + reader.next();
173 +
174 + if (reader.isStartElement()) {
175 + switch (reader.getLocalName()) {
176 + case "name":
177 + mavenProject.addLicense(
178 + mavenLicenses.getEquivalentLicense(
179 + reader.getElementText()));
180 + break;
181 + default:
182 + consumeElement(reader);
183 + }
184 + } else if (reader.isEndElement()) {
185 + return;
186 + }
187 + }
188 + }
189 +
190 /**
191 * Parses project properties.
192 *
193
194 diff --git a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
195 index 07fa60e..fa4958d 100644
196 --- a/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
197 +++ b/src/main/java/org/gentoo/java/ebuilder/maven/MavenProject.java
198 @@ -41,6 +41,10 @@ public class MavenProject {
199 * Whether the package has test classes.
200 */
201 private Boolean hasTests;
202 + /**
203 + * Lisences.
204 + */
205 + private List<String> licenses = new ArrayList<>(10);
206 /**
207 * Homepage URL.
208 */
209 @@ -104,6 +108,15 @@ public class MavenProject {
210 dependencies.add(dependency);
211 }
212
213 + /**
214 + * Adds license to {@link #licenses}.
215 + *
216 + * @param license {@link #licenses}
217 + */
218 + public void addLicense(final String license) {
219 + licenses.add(license);
220 + }
221 +
222 /**
223 * Adds path to {@link #resourceDirectories}.
224 *
225 @@ -296,6 +309,15 @@ public class MavenProject {
226 this.homepage = homepage;
227 }
228
229 + /**
230 + * Getter for {@link #licenses}.
231 + *
232 + * @return space separated licenses
233 + */
234 + public String getLicenses() {
235 + return String.join(" ", licenses);
236 + }
237 +
238 /**
239 * Getter for {@link #mainClass}.
240 *
241
242 diff --git a/src/main/resources/licenseMap.properties b/src/main/resources/licenseMap.properties
243 new file mode 100644
244 index 0000000..fe9262a
245 --- /dev/null
246 +++ b/src/main/resources/licenseMap.properties
247 @@ -0,0 +1,2 @@
248 +#Fri Jul 31 23:28:29 CST 2020
249 +Apache\ License,\ Version\ 2.0=Apache-2.0