View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   //  Generated by Modello Velocity from transformer.vm
3   //  template, any modifications will be overwritten.
4   // ==============================================================
5   package org.apache.maven.settings.v4;
6   
7   import java.io.ObjectStreamException;
8   import java.util.AbstractList;
9   import java.util.ArrayList;
10  import java.util.Collection;
11  import java.util.HashMap;
12  import java.util.Iterator;
13  import java.util.LinkedHashMap;
14  import java.util.List;
15  import java.util.Map;
16  import java.util.Properties;
17  import java.util.Objects;
18  import java.util.function.BinaryOperator;
19  import java.util.function.Function;
20  import java.util.function.Supplier;
21  import java.util.stream.Collectors;
22  
23  import org.apache.maven.api.annotations.Generated;
24  import org.apache.maven.api.xml.XmlNode;
25  import org.apache.maven.api.settings.TrackableBase;
26  import org.apache.maven.api.settings.IdentifiableBase;
27  import org.apache.maven.api.settings.Settings;
28  import org.apache.maven.api.settings.Proxy;
29  import org.apache.maven.api.settings.Server;
30  import org.apache.maven.api.settings.Mirror;
31  import org.apache.maven.api.settings.Profile;
32  import org.apache.maven.api.settings.Activation;
33  import org.apache.maven.api.settings.RepositoryBase;
34  import org.apache.maven.api.settings.Repository;
35  import org.apache.maven.api.settings.RepositoryPolicy;
36  import org.apache.maven.api.settings.ActivationProperty;
37  import org.apache.maven.api.settings.ActivationOS;
38  import org.apache.maven.api.settings.ActivationFile;
39  import org.apache.maven.api.settings.InputLocation;
40  import org.apache.maven.api.settings.InputSource;
41  import org.apache.maven.internal.xml.XmlNodeImpl;
42  
43  @Generated
44  public class SettingsTransformer {
45  
46      private final Function<String, String> transformer;
47  
48      public SettingsTransformer(Function<String, String> transformer) {
49          this.transformer = transformer;
50      }
51  
52      /**
53       * Transforms the given model
54       */
55      public Settings visit(Settings target) {
56          Objects.requireNonNull(target, "target cannot be null");
57          return transformSettings(target);
58      }
59  
60      /**
61       * The transformation function.
62       */
63      protected String transform(String value) {
64          return transformer.apply(value);
65      }
66  
67      protected TrackableBase transformTrackableBase(TrackableBase target) {
68          if (target == null) {
69              return null;
70          }
71          Supplier<TrackableBase.Builder> creator = () -> TrackableBase.newBuilder(target);
72          TrackableBase.Builder builder = null;
73          return builder != null ? builder.build() : target;
74      }
75  
76  
77      protected IdentifiableBase transformIdentifiableBase(IdentifiableBase target) {
78          if (target == null) {
79              return null;
80          }
81          Supplier<IdentifiableBase.Builder> creator = () -> IdentifiableBase.newBuilder(target);
82          IdentifiableBase.Builder builder = null;
83          builder = (IdentifiableBase.Builder) transformIdentifiableBase_Id(creator, builder, target);
84          return builder != null ? builder.build() : target;
85      }
86  
87      protected IdentifiableBase.Builder transformIdentifiableBase_Id(Supplier<? extends IdentifiableBase.Builder> creator, IdentifiableBase.Builder builder, IdentifiableBase target) {
88          String oldVal = target.getId();
89          String newVal = transform(oldVal);
90          return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
91      }
92  
93      protected Settings transformSettings(Settings target) {
94          if (target == null) {
95              return null;
96          }
97          Supplier<Settings.Builder> creator = () -> Settings.newBuilder(target);
98          Settings.Builder builder = null;
99          builder = (Settings.Builder) transformSettings_LocalRepository(creator, builder, target);
100         builder = (Settings.Builder) transformSettings_InteractiveMode(creator, builder, target);
101         builder = (Settings.Builder) transformSettings_UsePluginRegistry(creator, builder, target);
102         builder = (Settings.Builder) transformSettings_Offline(creator, builder, target);
103         builder = (Settings.Builder) transformSettings_Proxies(creator, builder, target);
104         builder = (Settings.Builder) transformSettings_Servers(creator, builder, target);
105         builder = (Settings.Builder) transformSettings_Mirrors(creator, builder, target);
106         builder = (Settings.Builder) transformSettings_Repositories(creator, builder, target);
107         builder = (Settings.Builder) transformSettings_PluginRepositories(creator, builder, target);
108         builder = (Settings.Builder) transformSettings_Profiles(creator, builder, target);
109         builder = (Settings.Builder) transformSettings_ActiveProfiles(creator, builder, target);
110         builder = (Settings.Builder) transformSettings_PluginGroups(creator, builder, target);
111         return builder != null ? builder.build() : target;
112     }
113 
114     protected Settings.Builder transformSettings_LocalRepository(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
115         String oldVal = target.getLocalRepository();
116         String newVal = transform(oldVal);
117         return newVal != oldVal ? (builder != null ? builder : creator.get()).localRepository(newVal) : builder;
118     }
119     protected Settings.Builder transformSettings_InteractiveMode(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
120         // nothing to do, the transformer only handles strings
121         return builder;
122     }
123     protected Settings.Builder transformSettings_UsePluginRegistry(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
124         // nothing to do, the transformer only handles strings
125         return builder;
126     }
127     protected Settings.Builder transformSettings_Offline(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
128         // nothing to do, the transformer only handles strings
129         return builder;
130     }
131     protected Settings.Builder transformSettings_Proxies(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
132         List<Proxy> oldVal = target.getProxies();
133         List<Proxy> newVal = transform(oldVal, this::transformProxy);
134         return newVal != oldVal ? (builder != null ? builder : creator.get()).proxies(newVal) : builder;
135     }
136     protected Settings.Builder transformSettings_Servers(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
137         List<Server> oldVal = target.getServers();
138         List<Server> newVal = transform(oldVal, this::transformServer);
139         return newVal != oldVal ? (builder != null ? builder : creator.get()).servers(newVal) : builder;
140     }
141     protected Settings.Builder transformSettings_Mirrors(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
142         List<Mirror> oldVal = target.getMirrors();
143         List<Mirror> newVal = transform(oldVal, this::transformMirror);
144         return newVal != oldVal ? (builder != null ? builder : creator.get()).mirrors(newVal) : builder;
145     }
146     protected Settings.Builder transformSettings_Repositories(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
147         List<Repository> oldVal = target.getRepositories();
148         List<Repository> newVal = transform(oldVal, this::transformRepository);
149         return newVal != oldVal ? (builder != null ? builder : creator.get()).repositories(newVal) : builder;
150     }
151     protected Settings.Builder transformSettings_PluginRepositories(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
152         List<Repository> oldVal = target.getPluginRepositories();
153         List<Repository> newVal = transform(oldVal, this::transformRepository);
154         return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginRepositories(newVal) : builder;
155     }
156     protected Settings.Builder transformSettings_Profiles(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
157         List<Profile> oldVal = target.getProfiles();
158         List<Profile> newVal = transform(oldVal, this::transformProfile);
159         return newVal != oldVal ? (builder != null ? builder : creator.get()).profiles(newVal) : builder;
160     }
161     protected Settings.Builder transformSettings_ActiveProfiles(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
162         List<String> oldVal = target.getActiveProfiles();
163         List<String> newVal = transform(oldVal, this::transform);
164         return newVal != oldVal ? (builder != null ? builder : creator.get()).activeProfiles(newVal) : builder;
165     }
166     protected Settings.Builder transformSettings_PluginGroups(Supplier<? extends Settings.Builder> creator, Settings.Builder builder, Settings target) {
167         List<String> oldVal = target.getPluginGroups();
168         List<String> newVal = transform(oldVal, this::transform);
169         return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginGroups(newVal) : builder;
170     }
171 
172     protected Proxy transformProxy(Proxy target) {
173         if (target == null) {
174             return null;
175         }
176         Supplier<Proxy.Builder> creator = () -> Proxy.newBuilder(target);
177         Proxy.Builder builder = null;
178         builder = (Proxy.Builder) transformProxy_ActiveString(creator, builder, target);
179         builder = (Proxy.Builder) transformProxy_Protocol(creator, builder, target);
180         builder = (Proxy.Builder) transformProxy_Username(creator, builder, target);
181         builder = (Proxy.Builder) transformProxy_Password(creator, builder, target);
182         builder = (Proxy.Builder) transformProxy_PortString(creator, builder, target);
183         builder = (Proxy.Builder) transformProxy_Host(creator, builder, target);
184         builder = (Proxy.Builder) transformProxy_NonProxyHosts(creator, builder, target);
185         builder = (Proxy.Builder) transformIdentifiableBase_Id(creator, builder, target);
186         return builder != null ? builder.build() : target;
187     }
188 
189     protected Proxy.Builder transformProxy_ActiveString(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
190         String oldVal = target.getActiveString();
191         String newVal = transform(oldVal);
192         return newVal != oldVal ? (builder != null ? builder : creator.get()).activeString(newVal) : builder;
193     }
194     protected Proxy.Builder transformProxy_Protocol(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
195         String oldVal = target.getProtocol();
196         String newVal = transform(oldVal);
197         return newVal != oldVal ? (builder != null ? builder : creator.get()).protocol(newVal) : builder;
198     }
199     protected Proxy.Builder transformProxy_Username(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
200         String oldVal = target.getUsername();
201         String newVal = transform(oldVal);
202         return newVal != oldVal ? (builder != null ? builder : creator.get()).username(newVal) : builder;
203     }
204     protected Proxy.Builder transformProxy_Password(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
205         String oldVal = target.getPassword();
206         String newVal = transform(oldVal);
207         return newVal != oldVal ? (builder != null ? builder : creator.get()).password(newVal) : builder;
208     }
209     protected Proxy.Builder transformProxy_PortString(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
210         String oldVal = target.getPortString();
211         String newVal = transform(oldVal);
212         return newVal != oldVal ? (builder != null ? builder : creator.get()).portString(newVal) : builder;
213     }
214     protected Proxy.Builder transformProxy_Host(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
215         String oldVal = target.getHost();
216         String newVal = transform(oldVal);
217         return newVal != oldVal ? (builder != null ? builder : creator.get()).host(newVal) : builder;
218     }
219     protected Proxy.Builder transformProxy_NonProxyHosts(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
220         String oldVal = target.getNonProxyHosts();
221         String newVal = transform(oldVal);
222         return newVal != oldVal ? (builder != null ? builder : creator.get()).nonProxyHosts(newVal) : builder;
223     }
224     protected Proxy.Builder transformProxy_Id(Supplier<? extends Proxy.Builder> creator, Proxy.Builder builder, Proxy target) {
225         String oldVal = target.getId();
226         String newVal = transform(oldVal);
227         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
228     }
229 
230     protected Server transformServer(Server target) {
231         if (target == null) {
232             return null;
233         }
234         Supplier<Server.Builder> creator = () -> Server.newBuilder(target);
235         Server.Builder builder = null;
236         builder = (Server.Builder) transformServer_Username(creator, builder, target);
237         builder = (Server.Builder) transformServer_Password(creator, builder, target);
238         builder = (Server.Builder) transformServer_PrivateKey(creator, builder, target);
239         builder = (Server.Builder) transformServer_Passphrase(creator, builder, target);
240         builder = (Server.Builder) transformServer_FilePermissions(creator, builder, target);
241         builder = (Server.Builder) transformServer_DirectoryPermissions(creator, builder, target);
242         builder = (Server.Builder) transformServer_Configuration(creator, builder, target);
243         builder = (Server.Builder) transformIdentifiableBase_Id(creator, builder, target);
244         return builder != null ? builder.build() : target;
245     }
246 
247     protected Server.Builder transformServer_Username(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
248         String oldVal = target.getUsername();
249         String newVal = transform(oldVal);
250         return newVal != oldVal ? (builder != null ? builder : creator.get()).username(newVal) : builder;
251     }
252     protected Server.Builder transformServer_Password(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
253         String oldVal = target.getPassword();
254         String newVal = transform(oldVal);
255         return newVal != oldVal ? (builder != null ? builder : creator.get()).password(newVal) : builder;
256     }
257     protected Server.Builder transformServer_PrivateKey(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
258         String oldVal = target.getPrivateKey();
259         String newVal = transform(oldVal);
260         return newVal != oldVal ? (builder != null ? builder : creator.get()).privateKey(newVal) : builder;
261     }
262     protected Server.Builder transformServer_Passphrase(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
263         String oldVal = target.getPassphrase();
264         String newVal = transform(oldVal);
265         return newVal != oldVal ? (builder != null ? builder : creator.get()).passphrase(newVal) : builder;
266     }
267     protected Server.Builder transformServer_FilePermissions(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
268         String oldVal = target.getFilePermissions();
269         String newVal = transform(oldVal);
270         return newVal != oldVal ? (builder != null ? builder : creator.get()).filePermissions(newVal) : builder;
271     }
272     protected Server.Builder transformServer_DirectoryPermissions(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
273         String oldVal = target.getDirectoryPermissions();
274         String newVal = transform(oldVal);
275         return newVal != oldVal ? (builder != null ? builder : creator.get()).directoryPermissions(newVal) : builder;
276     }
277     protected Server.Builder transformServer_Configuration(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
278         XmlNode oldVal = target.getConfiguration();
279         XmlNode newVal = transform(oldVal);
280         return newVal != oldVal ? (builder != null ? builder : creator.get()).configuration(newVal) : builder;
281     }
282     protected Server.Builder transformServer_Id(Supplier<? extends Server.Builder> creator, Server.Builder builder, Server target) {
283         String oldVal = target.getId();
284         String newVal = transform(oldVal);
285         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
286     }
287 
288     protected Mirror transformMirror(Mirror target) {
289         if (target == null) {
290             return null;
291         }
292         Supplier<Mirror.Builder> creator = () -> Mirror.newBuilder(target);
293         Mirror.Builder builder = null;
294         builder = (Mirror.Builder) transformMirror_MirrorOf(creator, builder, target);
295         builder = (Mirror.Builder) transformMirror_Name(creator, builder, target);
296         builder = (Mirror.Builder) transformMirror_Url(creator, builder, target);
297         builder = (Mirror.Builder) transformMirror_Layout(creator, builder, target);
298         builder = (Mirror.Builder) transformMirror_MirrorOfLayouts(creator, builder, target);
299         builder = (Mirror.Builder) transformMirror_Blocked(creator, builder, target);
300         builder = (Mirror.Builder) transformIdentifiableBase_Id(creator, builder, target);
301         return builder != null ? builder.build() : target;
302     }
303 
304     protected Mirror.Builder transformMirror_MirrorOf(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
305         String oldVal = target.getMirrorOf();
306         String newVal = transform(oldVal);
307         return newVal != oldVal ? (builder != null ? builder : creator.get()).mirrorOf(newVal) : builder;
308     }
309     protected Mirror.Builder transformMirror_Name(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
310         String oldVal = target.getName();
311         String newVal = transform(oldVal);
312         return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
313     }
314     protected Mirror.Builder transformMirror_Url(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
315         String oldVal = target.getUrl();
316         String newVal = transform(oldVal);
317         return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
318     }
319     protected Mirror.Builder transformMirror_Layout(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
320         String oldVal = target.getLayout();
321         String newVal = transform(oldVal);
322         return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
323     }
324     protected Mirror.Builder transformMirror_MirrorOfLayouts(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
325         String oldVal = target.getMirrorOfLayouts();
326         String newVal = transform(oldVal);
327         return newVal != oldVal ? (builder != null ? builder : creator.get()).mirrorOfLayouts(newVal) : builder;
328     }
329     protected Mirror.Builder transformMirror_Blocked(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
330         // nothing to do, the transformer only handles strings
331         return builder;
332     }
333     protected Mirror.Builder transformMirror_Id(Supplier<? extends Mirror.Builder> creator, Mirror.Builder builder, Mirror target) {
334         String oldVal = target.getId();
335         String newVal = transform(oldVal);
336         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
337     }
338 
339     protected Profile transformProfile(Profile target) {
340         if (target == null) {
341             return null;
342         }
343         Supplier<Profile.Builder> creator = () -> Profile.newBuilder(target);
344         Profile.Builder builder = null;
345         builder = (Profile.Builder) transformProfile_Activation(creator, builder, target);
346         builder = (Profile.Builder) transformProfile_Properties(creator, builder, target);
347         builder = (Profile.Builder) transformProfile_Repositories(creator, builder, target);
348         builder = (Profile.Builder) transformProfile_PluginRepositories(creator, builder, target);
349         builder = (Profile.Builder) transformIdentifiableBase_Id(creator, builder, target);
350         return builder != null ? builder.build() : target;
351     }
352 
353     protected Profile.Builder transformProfile_Activation(Supplier<? extends Profile.Builder> creator, Profile.Builder builder, Profile target) {
354         Activation oldVal = target.getActivation();
355         Activation newVal = transformActivation(oldVal);
356         return newVal != oldVal ? (builder != null ? builder : creator.get()).activation(newVal) : builder;
357     }
358     protected Profile.Builder transformProfile_Properties(Supplier<? extends Profile.Builder> creator, Profile.Builder builder, Profile target) {
359         Map<String, String> props = target.getProperties();
360         Map<String, String> newProps = null;
361         for (Map.Entry<String, String> entry : props.entrySet()) {
362             String newVal = transform(entry.getValue());
363             if (newVal != null && newVal != entry.getValue()) {
364                 if (newProps == null) {
365                     newProps = new HashMap<>();
366                     newProps.putAll(props);
367                     builder = builder != null ? builder : creator.get();
368                     builder.properties(newProps);
369                 }
370                 newProps.put(entry.getKey(), newVal);
371             }
372         }
373         return builder;
374     }
375     protected Profile.Builder transformProfile_Repositories(Supplier<? extends Profile.Builder> creator, Profile.Builder builder, Profile target) {
376         List<Repository> oldVal = target.getRepositories();
377         List<Repository> newVal = transform(oldVal, this::transformRepository);
378         return newVal != oldVal ? (builder != null ? builder : creator.get()).repositories(newVal) : builder;
379     }
380     protected Profile.Builder transformProfile_PluginRepositories(Supplier<? extends Profile.Builder> creator, Profile.Builder builder, Profile target) {
381         List<Repository> oldVal = target.getPluginRepositories();
382         List<Repository> newVal = transform(oldVal, this::transformRepository);
383         return newVal != oldVal ? (builder != null ? builder : creator.get()).pluginRepositories(newVal) : builder;
384     }
385     protected Profile.Builder transformProfile_Id(Supplier<? extends Profile.Builder> creator, Profile.Builder builder, Profile target) {
386         String oldVal = target.getId();
387         String newVal = transform(oldVal);
388         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
389     }
390 
391     protected Activation transformActivation(Activation target) {
392         if (target == null) {
393             return null;
394         }
395         Supplier<Activation.Builder> creator = () -> Activation.newBuilder(target);
396         Activation.Builder builder = null;
397         builder = (Activation.Builder) transformActivation_ActiveByDefault(creator, builder, target);
398         builder = (Activation.Builder) transformActivation_Jdk(creator, builder, target);
399         builder = (Activation.Builder) transformActivation_Os(creator, builder, target);
400         builder = (Activation.Builder) transformActivation_Property(creator, builder, target);
401         builder = (Activation.Builder) transformActivation_File(creator, builder, target);
402         builder = (Activation.Builder) transformActivation_Packaging(creator, builder, target);
403         builder = (Activation.Builder) transformActivation_Condition(creator, builder, target);
404         return builder != null ? builder.build() : target;
405     }
406 
407     protected Activation.Builder transformActivation_ActiveByDefault(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
408         // nothing to do, the transformer only handles strings
409         return builder;
410     }
411     protected Activation.Builder transformActivation_Jdk(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
412         String oldVal = target.getJdk();
413         String newVal = transform(oldVal);
414         return newVal != oldVal ? (builder != null ? builder : creator.get()).jdk(newVal) : builder;
415     }
416     protected Activation.Builder transformActivation_Os(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
417         ActivationOS oldVal = target.getOs();
418         ActivationOS newVal = transformActivationOS(oldVal);
419         return newVal != oldVal ? (builder != null ? builder : creator.get()).os(newVal) : builder;
420     }
421     protected Activation.Builder transformActivation_Property(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
422         ActivationProperty oldVal = target.getProperty();
423         ActivationProperty newVal = transformActivationProperty(oldVal);
424         return newVal != oldVal ? (builder != null ? builder : creator.get()).property(newVal) : builder;
425     }
426     protected Activation.Builder transformActivation_File(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
427         ActivationFile oldVal = target.getFile();
428         ActivationFile newVal = transformActivationFile(oldVal);
429         return newVal != oldVal ? (builder != null ? builder : creator.get()).file(newVal) : builder;
430     }
431     protected Activation.Builder transformActivation_Packaging(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
432         String oldVal = target.getPackaging();
433         String newVal = transform(oldVal);
434         return newVal != oldVal ? (builder != null ? builder : creator.get()).packaging(newVal) : builder;
435     }
436     protected Activation.Builder transformActivation_Condition(Supplier<? extends Activation.Builder> creator, Activation.Builder builder, Activation target) {
437         String oldVal = target.getCondition();
438         String newVal = transform(oldVal);
439         return newVal != oldVal ? (builder != null ? builder : creator.get()).condition(newVal) : builder;
440     }
441 
442     protected RepositoryBase transformRepositoryBase(RepositoryBase target) {
443         if (target == null) {
444             return null;
445         }
446         Supplier<RepositoryBase.Builder> creator = () -> RepositoryBase.newBuilder(target);
447         RepositoryBase.Builder builder = null;
448         builder = (RepositoryBase.Builder) transformRepositoryBase_Name(creator, builder, target);
449         builder = (RepositoryBase.Builder) transformRepositoryBase_Url(creator, builder, target);
450         builder = (RepositoryBase.Builder) transformRepositoryBase_Layout(creator, builder, target);
451         builder = (RepositoryBase.Builder) transformIdentifiableBase_Id(creator, builder, target);
452         return builder != null ? builder.build() : target;
453     }
454 
455     protected RepositoryBase.Builder transformRepositoryBase_Name(Supplier<? extends RepositoryBase.Builder> creator, RepositoryBase.Builder builder, RepositoryBase target) {
456         String oldVal = target.getName();
457         String newVal = transform(oldVal);
458         return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
459     }
460     protected RepositoryBase.Builder transformRepositoryBase_Url(Supplier<? extends RepositoryBase.Builder> creator, RepositoryBase.Builder builder, RepositoryBase target) {
461         String oldVal = target.getUrl();
462         String newVal = transform(oldVal);
463         return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
464     }
465     protected RepositoryBase.Builder transformRepositoryBase_Layout(Supplier<? extends RepositoryBase.Builder> creator, RepositoryBase.Builder builder, RepositoryBase target) {
466         String oldVal = target.getLayout();
467         String newVal = transform(oldVal);
468         return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
469     }
470     protected RepositoryBase.Builder transformRepositoryBase_Id(Supplier<? extends RepositoryBase.Builder> creator, RepositoryBase.Builder builder, RepositoryBase target) {
471         String oldVal = target.getId();
472         String newVal = transform(oldVal);
473         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
474     }
475 
476     protected Repository transformRepository(Repository target) {
477         if (target == null) {
478             return null;
479         }
480         Supplier<Repository.Builder> creator = () -> Repository.newBuilder(target);
481         Repository.Builder builder = null;
482         builder = (Repository.Builder) transformRepository_Releases(creator, builder, target);
483         builder = (Repository.Builder) transformRepository_Snapshots(creator, builder, target);
484         builder = (Repository.Builder) transformRepositoryBase_Name(creator, builder, target);
485         builder = (Repository.Builder) transformRepositoryBase_Url(creator, builder, target);
486         builder = (Repository.Builder) transformRepositoryBase_Layout(creator, builder, target);
487         builder = (Repository.Builder) transformIdentifiableBase_Id(creator, builder, target);
488         return builder != null ? builder.build() : target;
489     }
490 
491     protected Repository.Builder transformRepository_Releases(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
492         RepositoryPolicy oldVal = target.getReleases();
493         RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
494         return newVal != oldVal ? (builder != null ? builder : creator.get()).releases(newVal) : builder;
495     }
496     protected Repository.Builder transformRepository_Snapshots(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
497         RepositoryPolicy oldVal = target.getSnapshots();
498         RepositoryPolicy newVal = transformRepositoryPolicy(oldVal);
499         return newVal != oldVal ? (builder != null ? builder : creator.get()).snapshots(newVal) : builder;
500     }
501     protected Repository.Builder transformRepository_Name(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
502         String oldVal = target.getName();
503         String newVal = transform(oldVal);
504         return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
505     }
506     protected Repository.Builder transformRepository_Url(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
507         String oldVal = target.getUrl();
508         String newVal = transform(oldVal);
509         return newVal != oldVal ? (builder != null ? builder : creator.get()).url(newVal) : builder;
510     }
511     protected Repository.Builder transformRepository_Layout(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
512         String oldVal = target.getLayout();
513         String newVal = transform(oldVal);
514         return newVal != oldVal ? (builder != null ? builder : creator.get()).layout(newVal) : builder;
515     }
516     protected Repository.Builder transformRepository_Id(Supplier<? extends Repository.Builder> creator, Repository.Builder builder, Repository target) {
517         String oldVal = target.getId();
518         String newVal = transform(oldVal);
519         return newVal != oldVal ? (builder != null ? builder : creator.get()).id(newVal) : builder;
520     }
521 
522     protected RepositoryPolicy transformRepositoryPolicy(RepositoryPolicy target) {
523         if (target == null) {
524             return null;
525         }
526         Supplier<RepositoryPolicy.Builder> creator = () -> RepositoryPolicy.newBuilder(target);
527         RepositoryPolicy.Builder builder = null;
528         builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_Enabled(creator, builder, target);
529         builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_UpdatePolicy(creator, builder, target);
530         builder = (RepositoryPolicy.Builder) transformRepositoryPolicy_ChecksumPolicy(creator, builder, target);
531         return builder != null ? builder.build() : target;
532     }
533 
534     protected RepositoryPolicy.Builder transformRepositoryPolicy_Enabled(Supplier<? extends RepositoryPolicy.Builder> creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
535         // nothing to do, the transformer only handles strings
536         return builder;
537     }
538     protected RepositoryPolicy.Builder transformRepositoryPolicy_UpdatePolicy(Supplier<? extends RepositoryPolicy.Builder> creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
539         String oldVal = target.getUpdatePolicy();
540         String newVal = transform(oldVal);
541         return newVal != oldVal ? (builder != null ? builder : creator.get()).updatePolicy(newVal) : builder;
542     }
543     protected RepositoryPolicy.Builder transformRepositoryPolicy_ChecksumPolicy(Supplier<? extends RepositoryPolicy.Builder> creator, RepositoryPolicy.Builder builder, RepositoryPolicy target) {
544         String oldVal = target.getChecksumPolicy();
545         String newVal = transform(oldVal);
546         return newVal != oldVal ? (builder != null ? builder : creator.get()).checksumPolicy(newVal) : builder;
547     }
548 
549     protected ActivationProperty transformActivationProperty(ActivationProperty target) {
550         if (target == null) {
551             return null;
552         }
553         Supplier<ActivationProperty.Builder> creator = () -> ActivationProperty.newBuilder(target);
554         ActivationProperty.Builder builder = null;
555         builder = (ActivationProperty.Builder) transformActivationProperty_Name(creator, builder, target);
556         builder = (ActivationProperty.Builder) transformActivationProperty_Value(creator, builder, target);
557         return builder != null ? builder.build() : target;
558     }
559 
560     protected ActivationProperty.Builder transformActivationProperty_Name(Supplier<? extends ActivationProperty.Builder> creator, ActivationProperty.Builder builder, ActivationProperty target) {
561         String oldVal = target.getName();
562         String newVal = transform(oldVal);
563         return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
564     }
565     protected ActivationProperty.Builder transformActivationProperty_Value(Supplier<? extends ActivationProperty.Builder> creator, ActivationProperty.Builder builder, ActivationProperty target) {
566         String oldVal = target.getValue();
567         String newVal = transform(oldVal);
568         return newVal != oldVal ? (builder != null ? builder : creator.get()).value(newVal) : builder;
569     }
570 
571     protected ActivationOS transformActivationOS(ActivationOS target) {
572         if (target == null) {
573             return null;
574         }
575         Supplier<ActivationOS.Builder> creator = () -> ActivationOS.newBuilder(target);
576         ActivationOS.Builder builder = null;
577         builder = (ActivationOS.Builder) transformActivationOS_Name(creator, builder, target);
578         builder = (ActivationOS.Builder) transformActivationOS_Family(creator, builder, target);
579         builder = (ActivationOS.Builder) transformActivationOS_Arch(creator, builder, target);
580         builder = (ActivationOS.Builder) transformActivationOS_Version(creator, builder, target);
581         return builder != null ? builder.build() : target;
582     }
583 
584     protected ActivationOS.Builder transformActivationOS_Name(Supplier<? extends ActivationOS.Builder> creator, ActivationOS.Builder builder, ActivationOS target) {
585         String oldVal = target.getName();
586         String newVal = transform(oldVal);
587         return newVal != oldVal ? (builder != null ? builder : creator.get()).name(newVal) : builder;
588     }
589     protected ActivationOS.Builder transformActivationOS_Family(Supplier<? extends ActivationOS.Builder> creator, ActivationOS.Builder builder, ActivationOS target) {
590         String oldVal = target.getFamily();
591         String newVal = transform(oldVal);
592         return newVal != oldVal ? (builder != null ? builder : creator.get()).family(newVal) : builder;
593     }
594     protected ActivationOS.Builder transformActivationOS_Arch(Supplier<? extends ActivationOS.Builder> creator, ActivationOS.Builder builder, ActivationOS target) {
595         String oldVal = target.getArch();
596         String newVal = transform(oldVal);
597         return newVal != oldVal ? (builder != null ? builder : creator.get()).arch(newVal) : builder;
598     }
599     protected ActivationOS.Builder transformActivationOS_Version(Supplier<? extends ActivationOS.Builder> creator, ActivationOS.Builder builder, ActivationOS target) {
600         String oldVal = target.getVersion();
601         String newVal = transform(oldVal);
602         return newVal != oldVal ? (builder != null ? builder : creator.get()).version(newVal) : builder;
603     }
604 
605     protected ActivationFile transformActivationFile(ActivationFile target) {
606         if (target == null) {
607             return null;
608         }
609         Supplier<ActivationFile.Builder> creator = () -> ActivationFile.newBuilder(target);
610         ActivationFile.Builder builder = null;
611         builder = (ActivationFile.Builder) transformActivationFile_Missing(creator, builder, target);
612         builder = (ActivationFile.Builder) transformActivationFile_Exists(creator, builder, target);
613         return builder != null ? builder.build() : target;
614     }
615 
616     protected ActivationFile.Builder transformActivationFile_Missing(Supplier<? extends ActivationFile.Builder> creator, ActivationFile.Builder builder, ActivationFile target) {
617         String oldVal = target.getMissing();
618         String newVal = transform(oldVal);
619         return newVal != oldVal ? (builder != null ? builder : creator.get()).missing(newVal) : builder;
620     }
621     protected ActivationFile.Builder transformActivationFile_Exists(Supplier<? extends ActivationFile.Builder> creator, ActivationFile.Builder builder, ActivationFile target) {
622         String oldVal = target.getExists();
623         String newVal = transform(oldVal);
624         return newVal != oldVal ? (builder != null ? builder : creator.get()).exists(newVal) : builder;
625     }
626 
627     protected <T> List<T> transform(List<T> list, Function<T, T> transformer) {
628         List<T> newList = list;
629         for (int i = 0; i < list.size(); i++) {
630             T oldVal = list.get(i);
631             T newVal = transformer.apply(oldVal);
632             if (newVal != oldVal) {
633                 if (newList == list) {
634                     newList = new ArrayList<>(list);
635                 }
636                 newList.set(i, newVal);
637             }
638         }
639         return newList;
640     }
641 
642     protected <T> Map<String, T> transform(Map<String, T> map, Function<T, T> transformer) {
643         Map<String, T> newMap = map;
644         for (String key : map.keySet()) {
645             T oldVal = map.get(key);
646             T newVal = transformer.apply(oldVal);
647             if (newVal != oldVal) {
648                 if (newMap == map) {
649                     newMap = new HashMap<>(map);
650                 }
651                 newMap.put(key, newVal);
652             }
653         }
654         return newMap;
655     }
656 
657     protected XmlNode transform(XmlNode node) {
658         if (node != null) {
659             String oldValue = node.getValue();
660             String newValue = transform(oldValue);
661             Map<String, String> oldAttrs = node.getAttributes();
662             Map<String, String> newAttrs = transform(oldAttrs, this::transform);
663             List<XmlNode> oldChildren = node.getChildren();
664             List<XmlNode> newChildren = transform(oldChildren, this::transform);
665             if (oldValue != newValue || oldAttrs != newAttrs || oldChildren != newChildren) {
666                 return new XmlNodeImpl(node.getPrefix(), node.getNamespaceUri(), node.getName(),
667                         newValue, newAttrs, newChildren, node.getInputLocation());
668             }
669         }
670         return node;
671     }
672 }