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