1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.settings.io;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23 import javax.xml.stream.XMLStreamException;
24
25 import java.io.File;
26 import java.io.IOException;
27 import java.io.OutputStream;
28 import java.io.Writer;
29 import java.nio.file.Files;
30 import java.util.Map;
31 import java.util.Objects;
32
33 import org.apache.maven.settings.Settings;
34 import org.apache.maven.settings.v4.SettingsStaxWriter;
35
36
37
38
39
40 @Named
41 @Singleton
42 public class DefaultSettingsWriter implements SettingsWriter {
43
44 @Override
45 public void write(File output, Map<String, Object> options, Settings settings) throws IOException {
46 Objects.requireNonNull(output, "output cannot be null");
47 Objects.requireNonNull(settings, "settings cannot be null");
48
49 output.getParentFile().mkdirs();
50
51 write(Files.newOutputStream(output.toPath()), options, settings);
52 }
53
54 @Override
55 public void write(Writer output, Map<String, Object> options, Settings settings) throws IOException {
56 Objects.requireNonNull(output, "output cannot be null");
57 Objects.requireNonNull(settings, "settings cannot be null");
58
59 try (Writer out = output) {
60 new SettingsStaxWriter().write(out, settings.getDelegate());
61 } catch (XMLStreamException e) {
62 throw new IOException("Error writing settings", e);
63 }
64 }
65
66 @Override
67 public void write(OutputStream output, Map<String, Object> options, Settings settings) throws IOException {
68 Objects.requireNonNull(output, "output cannot be null");
69 Objects.requireNonNull(settings, "settings cannot be null");
70
71 try (OutputStream out = output) {
72 new SettingsStaxWriter().write(out, settings.getDelegate());
73 } catch (XMLStreamException e) {
74 throw new IOException("Error writing settings", e);
75 }
76 }
77 }