|
23 | 23 | import java.util.Map; |
24 | 24 | import java.util.Optional; |
25 | 25 |
|
| 26 | +import org.apache.maven.api.Session; |
26 | 27 | import org.apache.maven.api.annotations.Nonnull; |
| 28 | +import org.apache.maven.api.annotations.Nullable; |
27 | 29 | import org.apache.maven.api.di.Inject; |
28 | 30 | import org.apache.maven.api.di.Named; |
| 31 | +import org.apache.maven.api.di.Priority; |
| 32 | +import org.apache.maven.api.di.Provides; |
29 | 33 | import org.apache.maven.api.di.Singleton; |
| 34 | +import org.apache.maven.api.di.Typed; |
30 | 35 | import org.apache.maven.api.services.Lookup; |
31 | 36 | import org.apache.maven.api.services.ToolchainFactoryException; |
| 37 | +import org.apache.maven.api.services.ToolchainManagerException; |
32 | 38 | import org.apache.maven.execution.MavenSession; |
33 | 39 | import org.apache.maven.impl.MappedList; |
34 | 40 | import org.apache.maven.toolchain.model.ToolchainModel; |
35 | 41 | import org.slf4j.Logger; |
36 | 42 |
|
37 | 43 | @Named |
38 | 44 | @Singleton |
39 | | -public class DefaultToolchainManager implements ToolchainManager, ToolchainManagerPrivate { |
| 45 | +@Deprecated(since = "4.0.0") |
| 46 | +public class ToolchainManagerFactory { |
40 | 47 |
|
41 | 48 | private final Lookup lookup; |
42 | 49 | private final Logger logger; |
43 | 50 |
|
44 | 51 | @Inject |
45 | | - public DefaultToolchainManager(Lookup lookup) { |
| 52 | + ToolchainManagerFactory(Lookup lookup) { |
46 | 53 | this(lookup, null); |
47 | 54 | } |
48 | 55 |
|
49 | | - protected DefaultToolchainManager(Lookup lookup, Logger logger) { |
| 56 | + protected ToolchainManagerFactory(Lookup lookup, Logger logger) { |
50 | 57 | this.lookup = lookup; |
51 | 58 | this.logger = logger; |
52 | 59 | } |
53 | 60 |
|
| 61 | + @Provides |
| 62 | + @Typed({ToolchainManager.class, ToolchainManagerPrivate.class}) |
| 63 | + @Named // qualifier is required for SiduDIBridge to work |
| 64 | + DefaultToolchainManagerV3 v3Manager() { |
| 65 | + return new DefaultToolchainManagerV3(); |
| 66 | + } |
| 67 | + |
| 68 | + @Provides |
| 69 | + @Priority(10) |
| 70 | + @Typed(org.apache.maven.api.services.ToolchainManager.class) |
| 71 | + DefaultToolchainManagerV4 v4Manager() { |
| 72 | + return new DefaultToolchainManagerV4(); |
| 73 | + } |
| 74 | + |
54 | 75 | private org.apache.maven.impl.DefaultToolchainManager getDelegate() { |
55 | 76 | return getToolchainManager(lookup, logger); |
56 | 77 | } |
@@ -86,43 +107,80 @@ public org.apache.maven.api.Toolchain createToolchain( |
86 | 107 | public Optional<org.apache.maven.api.Toolchain> createDefaultToolchain() |
87 | 108 | throws ToolchainFactoryException { |
88 | 109 | return Optional.ofNullable(v3Factory.createDefaultToolchain()) |
89 | | - .map(DefaultToolchainManager.this::getToolchainV4); |
| 110 | + .map(ToolchainManagerFactory.this::getToolchainV4); |
90 | 111 | } |
91 | 112 | }); |
92 | 113 | } |
93 | 114 | allFactories.putAll(v4Factories); |
94 | 115 | return new org.apache.maven.impl.DefaultToolchainManager(allFactories, logger) {}; |
95 | 116 | } |
96 | 117 |
|
97 | | - @Override |
98 | | - public Toolchain getToolchainFromBuildContext(String type, MavenSession session) { |
99 | | - return getDelegate() |
100 | | - .getToolchainFromBuildContext(session.getSession(), type) |
101 | | - .map(this::getToolchainV3) |
102 | | - .orElse(null); |
103 | | - } |
| 118 | + public class DefaultToolchainManagerV4 implements org.apache.maven.api.services.ToolchainManager { |
| 119 | + @Nonnull |
| 120 | + @Override |
| 121 | + public List<org.apache.maven.api.Toolchain> getToolchains( |
| 122 | + @Nonnull Session session, @Nonnull String type, @Nullable Map<String, String> requirements) |
| 123 | + throws ToolchainManagerException { |
| 124 | + return getDelegate().getToolchains(session, type, requirements); |
| 125 | + } |
104 | 126 |
|
105 | | - @Override |
106 | | - public List<Toolchain> getToolchains(MavenSession session, String type, Map<String, String> requirements) { |
107 | | - return new MappedList<>( |
108 | | - getDelegate().getToolchains(session.getSession(), type, requirements), this::getToolchainV3); |
109 | | - } |
| 127 | + @Nonnull |
| 128 | + @Override |
| 129 | + public Optional<org.apache.maven.api.Toolchain> getToolchainFromBuildContext( |
| 130 | + @Nonnull Session session, @Nonnull String type) throws ToolchainManagerException { |
| 131 | + return getDelegate().getToolchainFromBuildContext(session, type); |
| 132 | + } |
| 133 | + |
| 134 | + @Override |
| 135 | + public void storeToolchainToBuildContext( |
| 136 | + @Nonnull Session session, @Nonnull org.apache.maven.api.Toolchain toolchain) { |
| 137 | + getDelegate().storeToolchainToBuildContext(session, toolchain); |
| 138 | + } |
110 | 139 |
|
111 | | - @Override |
112 | | - public ToolchainPrivate[] getToolchainsForType(String type, MavenSession session) |
113 | | - throws MisconfiguredToolchainException { |
114 | | - try { |
115 | | - List<org.apache.maven.api.Toolchain> toolchains = getDelegate().getToolchains(session.getSession(), type); |
116 | | - return toolchains.stream().map(this::getToolchainV3).toArray(ToolchainPrivate[]::new); |
117 | | - } catch (org.apache.maven.api.services.ToolchainManagerException e) { |
118 | | - throw new MisconfiguredToolchainException(e.getMessage(), e); |
| 140 | + @Nonnull |
| 141 | + @Override |
| 142 | + public List<org.apache.maven.api.Toolchain> getToolchains(@Nonnull Session session, @Nonnull String type) |
| 143 | + throws ToolchainManagerException { |
| 144 | + return getDelegate().getToolchains(session, type); |
119 | 145 | } |
120 | 146 | } |
121 | 147 |
|
122 | | - @Override |
123 | | - public void storeToolchainToBuildContext(ToolchainPrivate toolchain, MavenSession session) { |
124 | | - org.apache.maven.api.Toolchain tc = getToolchainV4(toolchain); |
125 | | - getDelegate().storeToolchainToBuildContext(session.getSession(), tc); |
| 148 | + public class DefaultToolchainManagerV3 implements ToolchainManager, ToolchainManagerPrivate { |
| 149 | + |
| 150 | + @Override |
| 151 | + public Toolchain getToolchainFromBuildContext(String type, MavenSession session) { |
| 152 | + return getDelegate() |
| 153 | + .getToolchainFromBuildContext(session.getSession(), type) |
| 154 | + .map(ToolchainManagerFactory.this::getToolchainV3) |
| 155 | + .orElse(null); |
| 156 | + } |
| 157 | + |
| 158 | + @Override |
| 159 | + public List<Toolchain> getToolchains(MavenSession session, String type, Map<String, String> requirements) { |
| 160 | + return new MappedList<>( |
| 161 | + getDelegate().getToolchains(session.getSession(), type, requirements), |
| 162 | + ToolchainManagerFactory.this::getToolchainV3); |
| 163 | + } |
| 164 | + |
| 165 | + @Override |
| 166 | + public ToolchainPrivate[] getToolchainsForType(String type, MavenSession session) |
| 167 | + throws MisconfiguredToolchainException { |
| 168 | + try { |
| 169 | + List<org.apache.maven.api.Toolchain> toolchains = |
| 170 | + getDelegate().getToolchains(session.getSession(), type); |
| 171 | + return toolchains.stream() |
| 172 | + .map(ToolchainManagerFactory.this::getToolchainV3) |
| 173 | + .toArray(ToolchainPrivate[]::new); |
| 174 | + } catch (org.apache.maven.api.services.ToolchainManagerException e) { |
| 175 | + throw new MisconfiguredToolchainException(e.getMessage(), e); |
| 176 | + } |
| 177 | + } |
| 178 | + |
| 179 | + @Override |
| 180 | + public void storeToolchainToBuildContext(ToolchainPrivate toolchain, MavenSession session) { |
| 181 | + org.apache.maven.api.Toolchain tc = getToolchainV4(toolchain); |
| 182 | + getDelegate().storeToolchainToBuildContext(session.getSession(), tc); |
| 183 | + } |
126 | 184 | } |
127 | 185 |
|
128 | 186 | private org.apache.maven.api.Toolchain getToolchainV4(ToolchainPrivate toolchain) { |
|
0 commit comments