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 java.io.File;
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.io.Reader;
25 import java.util.Map;
26 import java.util.Objects;
27 import javax.inject.Named;
28 import javax.inject.Singleton;
29 import org.apache.maven.api.settings.Settings;
30 import org.apache.maven.settings.v4.SettingsXpp3Reader;
31 import org.codehaus.plexus.util.ReaderFactory;
32 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
33
34
35
36
37
38
39 @Named
40 @Singleton
41 public class DefaultSettingsReader implements SettingsReader {
42
43 @Override
44 public Settings read(File input, Map<String, ?> options) throws IOException {
45 Objects.requireNonNull(input, "input cannot be null");
46
47 return read(ReaderFactory.newXmlReader(input), options);
48 }
49
50 @Override
51 public Settings read(Reader input, Map<String, ?> options) throws IOException {
52 Objects.requireNonNull(input, "input cannot be null");
53
54 try (Reader in = input) {
55 return new SettingsXpp3Reader().read(in, isStrict(options));
56 } catch (XmlPullParserException e) {
57 throw new SettingsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
58 }
59 }
60
61 @Override
62 public Settings read(InputStream input, Map<String, ?> options) throws IOException {
63 Objects.requireNonNull(input, "input cannot be null");
64
65 try (InputStream in = input) {
66 return new SettingsXpp3Reader().read(in, isStrict(options));
67 } catch (XmlPullParserException e) {
68 throw new SettingsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
69 }
70 }
71
72 private boolean isStrict(Map<String, ?> options) {
73 Object value = (options != null) ? options.get(IS_STRICT) : null;
74 return value == null || Boolean.parseBoolean(value.toString());
75 }
76 }