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.InputStream;
27 import java.io.Reader;
28 import java.util.Map;
29 import java.util.Objects;
30
31 import org.apache.maven.settings.Settings;
32 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
33 import org.codehaus.plexus.util.ReaderFactory;
34 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
35
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 Settings settings = read(ReaderFactory.newXmlReader(input), options);
50
51 return settings;
52 }
53
54 @Override
55 public Settings read(Reader input, Map<String, ?> options) throws IOException {
56 Objects.requireNonNull(input, "input cannot be null");
57
58 try (Reader in = input) {
59 return new SettingsXpp3Reader().read(in, isStrict(options));
60 } catch (XmlPullParserException e) {
61 throw new SettingsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
62 }
63 }
64
65 @Override
66 public Settings read(InputStream input, Map<String, ?> options) throws IOException {
67 Objects.requireNonNull(input, "input cannot be null");
68
69 try (InputStream in = input) {
70 return new SettingsXpp3Reader().read(in, isStrict(options));
71 } catch (XmlPullParserException e) {
72 throw new SettingsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
73 }
74 }
75
76 private boolean isStrict(Map<String, ?> options) {
77 Object value = (options != null) ? options.get(IS_STRICT) : null;
78 return value == null || Boolean.parseBoolean(value.toString());
79 }
80 }