1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.toolchain.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.toolchain.model.PersistedToolchains;
32 import org.apache.maven.toolchain.v4.MavenToolchainsXpp3Reader;
33 import org.codehaus.plexus.util.ReaderFactory;
34 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
35
36
37
38
39
40
41
42 @Named
43 @Singleton
44 public class DefaultToolchainsReader implements ToolchainsReader {
45
46 @Override
47 public PersistedToolchains read(File input, Map<String, ?> options) throws IOException {
48 Objects.requireNonNull(input, "input cannot be null");
49
50 return read(ReaderFactory.newXmlReader(input), options);
51 }
52
53 @Override
54 public PersistedToolchains read(Reader input, Map<String, ?> options) throws IOException {
55 Objects.requireNonNull(input, "input cannot be null");
56
57 try (Reader in = input) {
58 return new PersistedToolchains(new MavenToolchainsXpp3Reader().read(in, isStrict(options)));
59 } catch (XmlPullParserException e) {
60 throw new ToolchainsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
61 }
62 }
63
64 @Override
65 public PersistedToolchains read(InputStream input, Map<String, ?> options) throws IOException {
66 Objects.requireNonNull(input, "input cannot be null");
67
68 try (InputStream in = input) {
69 return new PersistedToolchains(new MavenToolchainsXpp3Reader().read(in, isStrict(options)));
70 } catch (XmlPullParserException e) {
71 throw new ToolchainsParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
72 }
73 }
74
75 private boolean isStrict(Map<String, ?> options) {
76 Object value = (options != null) ? options.get(IS_STRICT) : null;
77 return value == null || Boolean.parseBoolean(value.toString());
78 }
79 }