1
2
3
4
5 package org.apache.maven.toolchain.model;
6
7 import java.io.Serializable;
8 import java.util.AbstractList;
9 import java.util.ArrayList;
10 import java.util.Collections;
11 import java.util.HashMap;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.Objects;
15 import java.util.stream.Collectors;
16 import java.util.stream.Stream;
17 import org.apache.maven.api.annotations.Generated;
18 import org.apache.maven.api.annotations.Nonnull;
19
20 @Generated
21 public class PersistedToolchains
22 extends TrackableBase
23 implements Serializable, Cloneable
24 {
25
26 public PersistedToolchains()
27 {
28 this( org.apache.maven.api.toolchain.PersistedToolchains.newInstance() );
29 }
30
31 public PersistedToolchains( org.apache.maven.api.toolchain.PersistedToolchains delegate )
32 {
33 this( delegate, null );
34 }
35
36 public PersistedToolchains( org.apache.maven.api.toolchain.PersistedToolchains delegate, BaseObject parent )
37 {
38 super( delegate, parent );
39 }
40
41 public PersistedToolchains clone()
42 {
43 return new PersistedToolchains( getDelegate() );
44 }
45
46 @Override
47 public org.apache.maven.api.toolchain.PersistedToolchains getDelegate()
48 {
49 return ( org.apache.maven.api.toolchain.PersistedToolchains ) super.getDelegate();
50 }
51
52 @Override
53 public boolean equals( Object o )
54 {
55 if ( this == o )
56 {
57 return true;
58 }
59 if ( o == null || !( o instanceof PersistedToolchains ) )
60 {
61 return false;
62 }
63 PersistedToolchains that = ( PersistedToolchains ) o;
64 return Objects.equals( this.delegate, that.delegate );
65 }
66
67 @Override
68 public int hashCode()
69 {
70 return getDelegate().hashCode();
71 }
72
73 public String getModelEncoding()
74 {
75 return getDelegate().getModelEncoding();
76 }
77
78 @Nonnull
79 public List<ToolchainModel> getToolchains()
80 {
81 return new WrapperList<ToolchainModel, org.apache.maven.api.toolchain.ToolchainModel>(
82 () -> getDelegate().getToolchains(), l -> update( getDelegate().withToolchains( l ) ),
83 d -> new ToolchainModel( d, this ), ToolchainModel::getDelegate );
84 }
85
86 public void setToolchains( List<ToolchainModel> toolchains )
87 {
88 if ( !Objects.equals( toolchains, getDelegate().getToolchains() ) )
89 {
90 update( getDelegate().withToolchains(
91 toolchains.stream().map( c -> c.getDelegate() ).collect( Collectors.toList() ) ) );
92 toolchains.forEach( e -> e.childrenTracking = this::replace );
93 }
94 }
95
96 public void addToolchain( ToolchainModel toolchain )
97 {
98 update( getDelegate().withToolchains(
99 Stream.concat( getDelegate().getToolchains().stream(), Stream.of( toolchain.getDelegate() ) )
100 .collect( Collectors.toList() ) ) );
101 toolchain.childrenTracking = this::replace;
102 }
103
104 public void removeToolchain( ToolchainModel toolchain )
105 {
106 update( getDelegate().withToolchains(
107 getDelegate().getToolchains().stream()
108 .filter( e -> !Objects.equals( e, toolchain ) )
109 .collect( Collectors.toList() ) ) );
110 toolchain.childrenTracking = null;
111 }
112
113 protected boolean replace( Object oldDelegate, Object newDelegate )
114 {
115 if ( super.replace( oldDelegate, newDelegate ) )
116 {
117 return true;
118 }
119 if ( getDelegate().getToolchains().contains( oldDelegate ) )
120 {
121 List<org.apache.maven.api.toolchain.ToolchainModel> list = new ArrayList<>( getDelegate().getToolchains() );
122 list.replaceAll( d -> d == oldDelegate ? ( org.apache.maven.api.toolchain.ToolchainModel ) newDelegate : d );
123 update( getDelegate().withToolchains( list ) );
124 return true;
125 }
126 return false;
127 }
128
129 public static List<org.apache.maven.api.toolchain.PersistedToolchains> persistedToolchainsToApiV4( List<PersistedToolchains> list )
130 {
131 return list != null ? new WrapperList<>( list, PersistedToolchains::getDelegate, PersistedToolchains::new ) : null;
132 }
133
134 public static List<PersistedToolchains> persistedToolchainsToApiV3( List<org.apache.maven.api.toolchain.PersistedToolchains> list )
135 {
136 return list != null ? new WrapperList<>( list, PersistedToolchains::new, PersistedToolchains::getDelegate ) : null;
137 }
138
139 }