diff --git a/modello-maven-plugin/src/it/clone/src/test/java/test/CloneTest.java b/modello-maven-plugin/src/it/clone/src/test/java/test/CloneTest.java
index 41f8e167c..e824dfcec 100644
--- a/modello-maven-plugin/src/it/clone/src/test/java/test/CloneTest.java
+++ b/modello-maven-plugin/src/it/clone/src/test/java/test/CloneTest.java
@@ -37,7 +37,7 @@ public void testClone()
orig.setSomeDate( new Date() );
orig.setSomeDom( new Xpp3Dom( "test" ) );
orig.addSomeStringList( "string" );
- orig.addSomeStringSet( "string" );
+ orig.addOwnSingularStringSet( "string" );
orig.setDeepThingy( new Thingy() );
orig.addDeepThingyList( new Thingy() );
orig.addDeepThingySet( new Thingy() );
@@ -67,10 +67,10 @@ public void testClone()
assertEquals( orig.getSomeDom(), copy.getSomeDom() );
assertNotSame( orig.getSomeDom(), copy.getSomeDom() );
- assertEquals( orig.getSomeStringList(), copy.getSomeStringList() );
- assertNotSame( orig.getSomeStringList(), copy.getSomeStringList() );
- assertEquals( orig.getSomeStringSet(), copy.getSomeStringSet() );
- assertNotSame( orig.getSomeStringSet(), copy.getSomeStringSet() );
+ assertEquals( orig.getSomeStringLists(), copy.getSomeStringLists() );
+ assertNotSame( orig.getSomeStringLists(), copy.getSomeStringLists() );
+ assertEquals( orig.getSomeStringSets(), copy.getSomeStringSets() );
+ assertNotSame( orig.getSomeStringSets(), copy.getSomeStringSets() );
assertNotSame( orig.getDeepThingy(), copy.getDeepThingy() );
assertNotSame( orig.getDeepThingyList(), copy.getDeepThingyList() );
diff --git a/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/AbstractModelloGeneratorMojo.java b/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/AbstractModelloGeneratorMojo.java
index 7dc03da8f..936df9dcb 100644
--- a/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/AbstractModelloGeneratorMojo.java
+++ b/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/AbstractModelloGeneratorMojo.java
@@ -115,6 +115,19 @@ public abstract class AbstractModelloGeneratorMojo extends AbstractMojo {
@Parameter
private File licenseFile;
+ /**
+ * Additional exceptions to the singularization rules, changing plural noun to singular.
+ *
+ * As a kay we provide plural noun and as value we provide singular noun, eg:
+ *
+ * kiss
+ *
+ *
+ * @since 2.5.0
+ */
+ @Parameter
+ private Map pluralExceptions;
+
/**
* @since 1.0.1
*/
@@ -180,6 +193,8 @@ public void execute() throws MojoExecutionException {
parameters.put(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(packageWithVersion));
+ parameters.put(ModelloParameterConstants.PLURAL_EXCEPTIONS, keysToLower(pluralExceptions));
+
if (!packagedVersions.isEmpty()) {
parameters.put(ModelloParameterConstants.ALL_VERSIONS, StringUtils.join(packagedVersions.iterator(), ","));
}
@@ -224,6 +239,13 @@ public void execute() throws MojoExecutionException {
}
}
+ private Object keysToLower(Map maps) {
+ if (maps == null) {
+ return null;
+ }
+ return maps.entrySet().stream().collect(Collectors.toMap(e -> e.getKey().toLowerCase(), Map.Entry::getValue));
+ }
+
/**
* Performs execute on a single specified model.
*/
diff --git a/modello-plugins/modello-plugin-java/src/main/java/org/codehaus/modello/plugin/java/JavaModelloGenerator.java b/modello-plugins/modello-plugin-java/src/main/java/org/codehaus/modello/plugin/java/JavaModelloGenerator.java
index 890c26c2a..19cdeb5f0 100644
--- a/modello-plugins/modello-plugin-java/src/main/java/org/codehaus/modello/plugin/java/JavaModelloGenerator.java
+++ b/modello-plugins/modello-plugin-java/src/main/java/org/codehaus/modello/plugin/java/JavaModelloGenerator.java
@@ -1665,7 +1665,7 @@ private void createAdder(ModelAssociation modelAssociation, JClass jClass, boole
jClass.addMethod(adder);
} else {
- String adderName = "add" + singular(capitalise(singular(fieldName)));
+ String adderName = "add" + capitalise(singular(fieldName));
JMethod adder;
if (isBuilderMethod) {
@@ -1711,7 +1711,7 @@ private void createAdder(ModelAssociation modelAssociation, JClass jClass, boole
return;
}
- JMethod remover = new JMethod("remove" + singular(capitalise(fieldName)));
+ JMethod remover = new JMethod("remove" + capitalise(singular(fieldName)));
remover.addParameter(new JParameter(addType, parameterName));