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  
24  import java.io.File;
25  import java.io.IOException;
26  import java.io.OutputStream;
27  import java.io.OutputStreamWriter;
28  import java.io.Writer;
29  import java.util.Map;
30  import java.util.Objects;
31  
32  import org.apache.maven.settings.Settings;
33  import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
34  import org.codehaus.plexus.util.WriterFactory;
35  
36  
37  
38  
39  
40  
41  @Named
42  @Singleton
43  public class DefaultSettingsWriter implements SettingsWriter {
44  
45      @Override
46      public void write(File output, Map<String, Object> options, Settings settings) throws IOException {
47          Objects.requireNonNull(output, "output cannot be null");
48          Objects.requireNonNull(settings, "settings cannot be null");
49  
50          output.getParentFile().mkdirs();
51  
52          write(WriterFactory.newXmlWriter(output), options, settings);
53      }
54  
55      @Override
56      public void write(Writer output, Map<String, Object> options, Settings settings) throws IOException {
57          Objects.requireNonNull(output, "output cannot be null");
58          Objects.requireNonNull(settings, "settings cannot be null");
59  
60          try (Writer out = output) {
61              new SettingsXpp3Writer().write(out, settings);
62          }
63      }
64  
65      @Override
66      public void write(OutputStream output, Map<String, Object> options, Settings settings) throws IOException {
67          Objects.requireNonNull(output, "output cannot be null");
68          Objects.requireNonNull(settings, "settings cannot be null");
69  
70          String encoding = settings.getModelEncoding();
71          
72          if (encoding == null || encoding.length() <= 0) {
73              encoding = "UTF-8";
74          }
75  
76          try (Writer out = new OutputStreamWriter(output, encoding)) {
77              write(out, options, settings);
78          }
79      }
80  }