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 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.toolchain.model.PersistedToolchains;
34 import org.apache.maven.toolchain.v4.MavenToolchainsStaxReader;
35
36
37
38
39
40
41 @Named
42 @Singleton
43 public class DefaultToolchainsReader implements ToolchainsReader {
44
45 @Override
46 public PersistedToolchains 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 return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
51 } catch (XMLStreamException e) {
52 throw new ToolchainsParseException(
53 e.getMessage(),
54 e.getLocation().getLineNumber(),
55 e.getLocation().getColumnNumber(),
56 e);
57 }
58 }
59
60 @Override
61 public PersistedToolchains read(Reader input, Map<String, ?> options) throws IOException {
62 Objects.requireNonNull(input, "input cannot be null");
63
64 try (Reader in = input) {
65 return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
66 } catch (XMLStreamException e) {
67 throw new ToolchainsParseException(
68 e.getMessage(),
69 e.getLocation().getLineNumber(),
70 e.getLocation().getColumnNumber(),
71 e);
72 }
73 }
74
75 @Override
76 public PersistedToolchains read(InputStream input, Map<String, ?> options) throws IOException {
77 Objects.requireNonNull(input, "input cannot be null");
78
79 try (InputStream in = input) {
80 return new PersistedToolchains(new MavenToolchainsStaxReader().read(in, isStrict(options)));
81 } catch (XMLStreamException e) {
82 throw new ToolchainsParseException(
83 e.getMessage(),
84 e.getLocation().getLineNumber(),
85 e.getLocation().getColumnNumber(),
86 e);
87 }
88 }
89
90 private boolean isStrict(Map<String, ?> options) {
91 Object value = (options != null) ? options.get(IS_STRICT) : null;
92 return value == null || Boolean.parseBoolean(value.toString());
93 }
94 }