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.InputStream;
28 import java.io.Reader;
29 import java.nio.file.Files;
30 import java.util.Map;
31 import java.util.Objects;
32
33 import org.apache.maven.api.settings.InputSource;
34 import org.apache.maven.settings.Settings;
35 import org.apache.maven.settings.v4.SettingsStaxReader;
36
37
38
39
40
41 @Named
42 @Singleton
43 public class DefaultSettingsReader implements SettingsReader {
44
45 @Override
46 public Settings read(File input, Map<String, ?> options) throws IOException {
47 Objects.requireNonNull(input, "input cannot be null");
48
49 try (InputStream in = Files.newInputStream(input.toPath())) {
50 InputSource source = new InputSource(input.toString());
51 return new Settings(new SettingsStaxReader().read(in, isStrict(options), source));
52 } catch (XMLStreamException e) {
53 throw new SettingsParseException(
54 e.getMessage(),
55 e.getLocation().getLineNumber(),
56 e.getLocation().getColumnNumber(),
57 e);
58 }
59 }
60
61 @Override
62 public Settings read(Reader input, Map<String, ?> options) throws IOException {
63 Objects.requireNonNull(input, "input cannot be null");
64
65 try (Reader in = input) {
66 InputSource source = (InputSource) options.get(InputSource.class.getName());
67 return new Settings(new SettingsStaxReader().read(in, isStrict(options), source));
68 } catch (XMLStreamException e) {
69 throw new SettingsParseException(
70 e.getMessage(),
71 e.getLocation().getLineNumber(),
72 e.getLocation().getColumnNumber(),
73 e);
74 }
75 }
76
77 @Override
78 public Settings read(InputStream input, Map<String, ?> options) throws IOException {
79 Objects.requireNonNull(input, "input cannot be null");
80
81 try (InputStream in = input) {
82 InputSource source = (InputSource) options.get(InputSource.class.getName());
83 return new Settings(new SettingsStaxReader().read(in, isStrict(options), source));
84 } catch (XMLStreamException e) {
85 throw new SettingsParseException(
86 e.getMessage(),
87 e.getLocation().getLineNumber(),
88 e.getLocation().getColumnNumber(),
89 e);
90 }
91 }
92
93 private boolean isStrict(Map<String, ?> options) {
94 Object value = (options != null) ? options.get(IS_STRICT) : null;
95 return value == null || Boolean.parseBoolean(value.toString());
96 }
97 }