Skip to content

Commit 18d2f87

Browse files
authored
Keep license structure (#440)
What happens is that license is handled as string, that later deep below (in XmlWriterUtil, from plexus-utils) is stripped by Line Separators (hence paragraph lines are gone) and spit into string. Instead, make this a list of strings, and just write them out line by line, as XML comment structure allows it. Also change config from Properties to Map<String, Object> and now it is possible to configure List<String> for license.
1 parent c90d219 commit 18d2f87

File tree

82 files changed

+322
-300
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+322
-300
lines changed

modello-core/src/main/java/org/codehaus/modello/Modello.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import java.io.Reader;
2828
import java.io.Writer;
29-
import java.util.Properties;
29+
import java.util.Map;
3030

3131
import org.codehaus.modello.core.ModelloCore;
3232
import org.codehaus.modello.model.Model;
@@ -44,14 +44,14 @@ public Modello(ModelloCore core) {
4444
this.core = core;
4545
}
4646

47-
public void generate(Reader modelReader, String outputType, Properties parameters)
47+
public void generate(Reader modelReader, String outputType, Map<String, Object> parameters)
4848
throws ModelloException, ModelValidationException {
4949
Model model = core.loadModel(modelReader);
5050

5151
core.generate(model, outputType, parameters);
5252
}
5353

54-
public void translate(Reader reader, Writer writer, String outputType, Properties parameters)
54+
public void translate(Reader reader, Writer writer, String outputType, Map<String, Object> parameters)
5555
throws ModelloException, ModelValidationException {
5656
Model model = core.translate(reader, outputType, parameters);
5757

modello-core/src/main/java/org/codehaus/modello/ModelloCli.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
*/
2424

2525
import java.io.File;
26-
import java.util.Properties;
26+
import java.util.HashMap;
27+
import java.util.Map;
2728

2829
import org.codehaus.plexus.DefaultPlexusContainer;
2930
import org.codehaus.plexus.util.StringUtils;
@@ -37,7 +38,7 @@ public class ModelloCli {
3738

3839
private static String outputType;
3940

40-
private static Properties parameters;
41+
private static Map<String, Object> parameters;
4142

4243
public static void main(String[] args) throws Exception {
4344
Modello modello = new DefaultPlexusContainer().lookup(Modello.class);
@@ -58,7 +59,7 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception
5859

5960
outputType = args[1];
6061

61-
parameters = new Properties();
62+
parameters = new HashMap<>();
6263

6364
String outputDirectory = args[2];
6465

@@ -70,7 +71,7 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception
7071
System.exit(1);
7172
}
7273

73-
parameters.setProperty(ModelloParameterConstants.OUTPUT_DIRECTORY, outputDirectory);
74+
parameters.put(ModelloParameterConstants.OUTPUT_DIRECTORY, outputDirectory);
7475

7576
String modelVersion = args[3];
7677

@@ -82,7 +83,7 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception
8283
System.exit(1);
8384
}
8485

85-
parameters.setProperty(ModelloParameterConstants.VERSION, modelVersion);
86+
parameters.put(ModelloParameterConstants.VERSION, modelVersion);
8687

8788
String packageWithVersion = args[4];
8889

@@ -94,7 +95,7 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception
9495
System.exit(1);
9596
}
9697

97-
parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, packageWithVersion);
98+
parameters.put(ModelloParameterConstants.PACKAGE_WITH_VERSION, packageWithVersion);
9899

99100
String javaSource = args[5];
100101

@@ -106,10 +107,10 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception
106107
System.exit(1);
107108
}
108109

109-
parameters.setProperty(ModelloParameterConstants.OUTPUT_JAVA_SOURCE, javaSource);
110+
parameters.put(ModelloParameterConstants.OUTPUT_JAVA_SOURCE, javaSource);
110111

111112
if (args.length > 6) {
112-
parameters.setProperty(ModelloParameterConstants.ENCODING, args[6]);
113+
parameters.put(ModelloParameterConstants.ENCODING, args[6]);
113114
}
114115
}
115116

modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public class ModelloParameterConstants {
8181
public static final String XSD_ENFORCE_MANDATORY_ELEMENTS = "modello.xsd.enforce.mandatory.element";
8282

8383
/**
84-
* The license text as string, to be added to generated files, if needed.
84+
* The license text as list of strings, to be added to generated files, if needed.
8585
*
8686
* @since 2.3.1
8787
*/

modello-core/src/main/java/org/codehaus/modello/core/DefaultModelloCore.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import java.io.Writer;
3232
import java.util.Collection;
3333
import java.util.Collections;
34+
import java.util.HashMap;
3435
import java.util.Map;
35-
import java.util.Properties;
3636

3737
import org.codehaus.modello.ModelloException;
3838
import org.codehaus.modello.ModelloRuntimeException;
@@ -251,11 +251,11 @@ public void saveModel(Model model, Writer writer) throws ModelloException {
251251
throw new ModelloRuntimeException("Not implemented.");
252252
}
253253

254-
public Model translate(Reader reader, String inputType, Properties parameters) throws ModelloException {
254+
public Model translate(Reader reader, String inputType, Map<String, Object> parameters) throws ModelloException {
255255
throw new ModelloRuntimeException("Not implemented.");
256256
}
257257

258-
public void generate(Model model, String outputType, Properties parameters) throws ModelloException {
258+
public void generate(Model model, String outputType, Map<String, Object> parameters) throws ModelloException {
259259
if (model == null) {
260260
throw new ModelloRuntimeException("Illegal argument: model == null.");
261261
}
@@ -265,7 +265,7 @@ public void generate(Model model, String outputType, Properties parameters) thro
265265
}
266266

267267
if (parameters == null) {
268-
parameters = new Properties();
268+
parameters = new HashMap<>();
269269
}
270270

271271
ModelloGenerator generator = generatorPluginManager.getGeneratorPlugin(outputType);

modello-core/src/main/java/org/codehaus/modello/core/ModelloCore.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.io.IOException;
2727
import java.io.Reader;
2828
import java.io.Writer;
29-
import java.util.Properties;
29+
import java.util.Map;
3030

3131
import org.codehaus.modello.ModelloException;
3232
import org.codehaus.modello.model.Model;
@@ -46,8 +46,8 @@ public interface ModelloCore {
4646

4747
void saveModel(Model model, Writer writer) throws ModelloException;
4848

49-
Model translate(Reader reader, String inputType, Properties parameters)
49+
Model translate(Reader reader, String inputType, Map<String, Object> parameters)
5050
throws ModelloException, ModelValidationException;
5151

52-
void generate(Model model, String outputType, Properties parameters) throws ModelloException;
52+
void generate(Model model, String outputType, Map<String, Object> parameters) throws ModelloException;
5353
}

modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
import java.nio.charset.Charset;
3232
import java.nio.file.Path;
3333
import java.util.ArrayList;
34+
import java.util.Arrays;
3435
import java.util.List;
35-
import java.util.Properties;
36+
import java.util.Map;
3637

3738
import org.codehaus.modello.ModelloException;
3839
import org.codehaus.modello.ModelloParameterConstants;
@@ -66,7 +67,7 @@ public abstract class AbstractModelloGenerator implements ModelloGenerator {
6667

6768
private String encoding;
6869

69-
private String licenseText;
70+
private List<String> licenseText;
7071

7172
@Inject
7273
private BuildContext buildContext;
@@ -75,21 +76,21 @@ protected Logger getLogger() {
7576
return logger;
7677
}
7778

78-
protected void initialize(Model model, Properties parameters) throws ModelloException {
79+
protected void initialize(Model model, Map<String, Object> parameters) throws ModelloException {
7980
this.model = model;
8081

81-
outputDirectory = new File(getParameter(parameters, ModelloParameterConstants.OUTPUT_DIRECTORY));
82+
outputDirectory = new File(requireParameter(parameters, ModelloParameterConstants.OUTPUT_DIRECTORY));
8283

83-
String version = getParameter(parameters, ModelloParameterConstants.VERSION);
84+
String version = requireParameter(parameters, ModelloParameterConstants.VERSION);
8485

8586
generatedVersion = new Version(version);
8687

8788
packageWithVersion =
88-
Boolean.parseBoolean(getParameter(parameters, ModelloParameterConstants.PACKAGE_WITH_VERSION));
89+
Boolean.parseBoolean(requireParameter(parameters, ModelloParameterConstants.PACKAGE_WITH_VERSION));
8990

90-
encoding = parameters.getProperty(ModelloParameterConstants.ENCODING);
91+
encoding = (String) parameters.get(ModelloParameterConstants.ENCODING);
9192

92-
licenseText = parameters.getProperty(ModelloParameterConstants.LICENSE_TEXT);
93+
licenseText = (List<String>) parameters.get(ModelloParameterConstants.LICENSE_TEXT);
9394
}
9495

9596
protected Model getModel() {
@@ -112,25 +113,29 @@ protected String getEncoding() {
112113
return encoding;
113114
}
114115

115-
protected String getHeader() {
116-
String header = getLicenseHeader();
117-
if (header == null) {
118-
return getGeneratedHeader();
116+
protected List<String> getHeader() {
117+
List<String> header = new ArrayList<>();
118+
List<String> license = getLicenseHeader();
119+
if (license != null) {
120+
header.addAll(license);
121+
}
122+
List<String> generated = getGeneratedHeader();
123+
if (generated != null) {
124+
header.addAll(generated);
119125
}
120-
header += System.lineSeparator();
121-
header += getGeneratedHeader();
122126
return header;
123127
}
124128

125-
protected String getGeneratedHeader() {
129+
protected List<String> getGeneratedHeader() {
126130
String version = getClass().getPackage().getImplementationVersion();
127-
return "=================== DO NOT EDIT THIS FILE ====================" + System.lineSeparator()
128-
+ "Generated by Modello" + ((version == null) ? "" : (' ' + version)) + "," + System.lineSeparator()
129-
+ "any modifications will be overwritten." + System.lineSeparator()
130-
+ "==============================================================";
131+
return Arrays.asList(
132+
"=================== DO NOT EDIT THIS FILE ====================",
133+
"Generated by Modello" + ((version == null) ? "" : (' ' + version)) + ",",
134+
"any modifications will be overwritten.",
135+
"==============================================================");
131136
}
132137

133-
protected String getLicenseHeader() {
138+
protected List<String> getLicenseHeader() {
134139
return licenseText;
135140
}
136141

@@ -229,19 +234,8 @@ protected boolean isEmpty(String string) {
229234
// Parameter utils
230235
// ----------------------------------------------------------------------
231236

232-
/**
233-
* @deprecated Use {@link #getParameter(Properties, String)} instead
234-
* @param name parameter name
235-
* @param parameters the properties
236-
* @return the parameter value
237-
*/
238-
@Deprecated
239-
protected String getParameter(String name, Properties parameters) {
240-
return getParameter(parameters, name);
241-
}
242-
243-
protected String getParameter(Properties parameters, String name) {
244-
String value = parameters.getProperty(name);
237+
protected String requireParameter(Map<String, Object> parameters, String name) {
238+
String value = (String) parameters.get(name);
245239

246240
if (value == null) {
247241
throw new ModelloRuntimeException("Missing parameter '" + name + "'.");
@@ -250,8 +244,8 @@ protected String getParameter(Properties parameters, String name) {
250244
return value;
251245
}
252246

253-
protected String getParameter(Properties parameters, String name, String defaultValue) {
254-
return parameters.getProperty(name, defaultValue);
247+
protected String getParameter(Map<String, Object> parameters, String name, String defaultValue) {
248+
return (String) parameters.getOrDefault(name, defaultValue);
255249
}
256250

257251
protected BuildContext getBuildContext() {

modello-core/src/main/java/org/codehaus/modello/plugin/ModelloGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* SOFTWARE.
2323
*/
2424

25-
import java.util.Properties;
25+
import java.util.Map;
2626

2727
import org.codehaus.modello.ModelloException;
2828
import org.codehaus.modello.model.Model;
@@ -31,5 +31,5 @@
3131
* @author <a href="mailto:[email protected]">Trygve Laugst&oslash;l</a>
3232
*/
3333
public interface ModelloGenerator {
34-
void generate(Model model, Properties parameters) throws ModelloException;
34+
void generate(Model model, Map<String, Object> parameters) throws ModelloException;
3535
}

modello-maven-plugin/src/main/java/org/codehaus/modello/maven/AbstractModelloGeneratorMojo.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@
2727
import java.io.IOException;
2828
import java.nio.file.Files;
2929
import java.util.ArrayList;
30+
import java.util.Arrays;
3031
import java.util.Collections;
32+
import java.util.HashMap;
3133
import java.util.List;
32-
import java.util.Properties;
34+
import java.util.Map;
35+
import java.util.stream.Collectors;
3336

3437
import org.apache.maven.model.Resource;
3538
import org.apache.maven.plugin.AbstractMojo;
@@ -142,8 +145,8 @@ protected boolean producesResources() {
142145
*
143146
* @return the parameters
144147
*/
145-
protected Properties createParameters() {
146-
return new Properties();
148+
protected Map<String, Object> createParameters() {
149+
return new HashMap<>();
147150
}
148151

149152
/**
@@ -154,7 +157,7 @@ protected Properties createParameters() {
154157
*
155158
* @param parameters the parameters to customize
156159
*/
157-
protected void customizeParameters(Properties parameters) {}
160+
protected void customizeParameters(Map<String, Object> parameters) {}
158161

159162
// ----------------------------------------------------------------------
160163
//
@@ -169,33 +172,34 @@ public void execute() throws MojoExecutionException {
169172
// Initialize the parameters
170173
// ----------------------------------------------------------------------
171174

172-
Properties parameters = createParameters();
175+
Map<String, Object> parameters = createParameters();
173176

174-
parameters.setProperty(ModelloParameterConstants.OUTPUT_DIRECTORY, outputDirectory);
177+
parameters.put(ModelloParameterConstants.OUTPUT_DIRECTORY, outputDirectory);
175178

176-
parameters.setProperty(ModelloParameterConstants.VERSION, version);
179+
parameters.put(ModelloParameterConstants.VERSION, version);
177180

178-
parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(packageWithVersion));
181+
parameters.put(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(packageWithVersion));
179182

180183
if (!packagedVersions.isEmpty()) {
181-
parameters.setProperty(
182-
ModelloParameterConstants.ALL_VERSIONS, StringUtils.join(packagedVersions.iterator(), ","));
184+
parameters.put(ModelloParameterConstants.ALL_VERSIONS, StringUtils.join(packagedVersions.iterator(), ","));
183185
}
184186

185187
if (licenseText != null || licenseFile != null) {
186-
String license = "";
188+
List<String> license;
187189
if (licenseText != null) {
188190
// licenseText prevails
189-
license = licenseText;
191+
license = Arrays.asList(licenseText.split(System.lineSeparator()));
190192
} else {
191193
try {
192194
// load it up and hard fail if cannot, as it is user misconfiguration
193-
license = String.join(System.lineSeparator(), Files.readAllLines(licenseFile.toPath()));
195+
license = Files.readAllLines(licenseFile.toPath()).stream()
196+
.map(l -> StringUtils.stripEnd(l, null))
197+
.collect(Collectors.toList());
194198
} catch (IOException e) {
195199
throw new MojoExecutionException("Could not load up license text from " + licenseFile, e);
196200
}
197201
}
198-
parameters.setProperty(ModelloParameterConstants.LICENSE_TEXT, license);
202+
parameters.put(ModelloParameterConstants.LICENSE_TEXT, license);
199203
}
200204

201205
customizeParameters(parameters);
@@ -223,7 +227,7 @@ public void execute() throws MojoExecutionException {
223227
/**
224228
* Performs execute on a single specified model.
225229
*/
226-
private void doExecute(String modelStr, String outputDirectory, Properties parameters)
230+
private void doExecute(String modelStr, String outputDirectory, Map<String, Object> parameters)
227231
throws MojoExecutionException {
228232
if (!buildContext.hasDelta(modelStr)) {
229233
getLog().debug("Skipping unchanged model: " + modelStr);
@@ -243,9 +247,9 @@ private void doExecute(String modelStr, String outputDirectory, Properties param
243247
modelloCore.generate(model, getGeneratorType(), parameters);
244248

245249
for (String version : packagedVersions) {
246-
parameters.setProperty(ModelloParameterConstants.VERSION, version);
250+
parameters.put(ModelloParameterConstants.VERSION, version);
247251

248-
parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(true));
252+
parameters.put(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(true));
249253

250254
getLog().info("Generating packaged version: " + version);
251255
modelloCore.generate(model, getGeneratorType(), parameters);

0 commit comments

Comments
 (0)