[ 
https://issues.apache.org/jira/browse/MNG-8214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17874583#comment-17874583
 ] 

ASF GitHub Bot commented on MNG-8214:
-------------------------------------

gnodet commented on code in PR #1660:
URL: https://github.com/apache/maven/pull/1660#discussion_r1720833527


##########
src/mdo/model.vm:
##########
@@ -142,46 +142,33 @@ public class ${class.name}
     #end
 
     /**
-      * Constructor for this class, package protected.
+      * Constructor for this class, to be called from {@link Builder} and its 
subclasses.
       * @see Builder#build()
       */
-    ${class.name}(
-    #if ( $class == $root )
-        String namespaceUri,
-        String modelEncoding,
-    #end
-    #foreach ( $field in $allFields )
-      #set ( $sep = 
"#if(${locationTracking}||$field!=${allFields[${allFields.size()} - 1]}),#end" )
-      #set ( $type = 
${types.getOrDefault($field,${types.getOrDefault($field.type,$field.type)})} )
-      #if ( $type.startsWith("List<") )
-        #set ( $type = ${type.replace('List<','Collection<')} )
-      #end
-        $type $field.name${sep}
-    #end
-    #if ( $locationTracking )
-        Map<Object, InputLocation> locations
-    #end
-    ) {
+    #set ( $additionalArguments = "#if(${locationTracking}), Map<Object, 
InputLocation> locations#end" )

Review Comment:
   The `$additionalArguments` need to be removed, they are also fields on the 
`builder` argument.



##########
src/mdo/model.vm:
##########
@@ -480,23 +467,8 @@ public class ${class.name}
             locations.put("${field.name}", 
newlocs.containsKey("${field.name}") ? newlocs.get("${field.name}") : 
oldlocs.get("${field.name}"));
       #end
     #end
-            return new ${class.name}(
-    #if ( $class == $root )
-                namespaceUri != null ? namespaceUri : (base != null ? 
base.namespaceUri : ""),
-                modelEncoding != null ? modelEncoding : (base != null ? 
base.modelEncoding : "UTF-8"),
-    #end
-    #foreach ( $field in $allFields )
-      #set ( $sep = 
"#if(${locationTracking}||$field!=${allFields[${allFields.size()} - 1]}),#end" )
-      #if ( $field.type == "boolean" || $field.type == "int" )
-                ${field.name} != null ? ${field.name} : (base != null ? 
base.${field.name} : ${field.defaultValue})${sep}
-      #else
-                ${field.name} != null ? ${field.name} : (base != null ? 
base.${field.name} : null)${sep}
-      #end
-    #end
-    #if ( $locationTracking )
-                locations
-    #end
-            );
+    #set ( $additionalArguments = "#if(${locationTracking}), locations#end" )

Review Comment:
   Same here





> Allow extension of the model classes being generated with model.vm
> ------------------------------------------------------------------
>
>                 Key: MNG-8214
>                 URL: https://issues.apache.org/jira/browse/MNG-8214
>             Project: Maven
>          Issue Type: Improvement
>    Affects Versions: 4.0.0-beta-3
>            Reporter: Konrad Windszus
>            Assignee: Konrad Windszus
>            Priority: Major
>
> The [model.vm|https://github.com/apache/maven/blob/master/src/mdo/model.vm] 
> being used with Maven 4 models generates immutable classes with builders. The 
> generated classes cannot be extended easily because
> # the builder's constructor is having default access instead of being 
> protected 
> (https://github.com/apache/maven/blob/e335f95dfd11468bdf617421fd5e7093a727d1e1/src/mdo/model.vm#L409
>  and 
> https://github.com/apache/maven/blob/e335f95dfd11468bdf617421fd5e7093a727d1e1/src/mdo/model.vm#L427
> # the classes constructor doesn't take a builder as argument (therefore the 
> subclass cannot leverage reuse most of the functionality currently 
> encapsulated by the Builder)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to