1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.repository.metadata.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.artifact.repository.metadata.Metadata;
34
35
36
37
38
39 @Named
40 @Singleton
41 public class DefaultMetadataReader implements MetadataReader {
42
43 public Metadata read(File input, Map<String, ?> options) throws IOException {
44 Objects.requireNonNull(input, "input cannot be null");
45
46 return read(Files.newInputStream(input.toPath()), options);
47 }
48
49 public Metadata read(Reader input, Map<String, ?> options) throws IOException {
50 Objects.requireNonNull(input, "input cannot be null");
51
52 try (Reader in = input) {
53 return new Metadata(new MetadataStaxReader().read(in, isStrict(options)));
54 } catch (XMLStreamException e) {
55 throw new MetadataParseException(
56 e.getMessage(),
57 e.getLocation().getLineNumber(),
58 e.getLocation().getColumnNumber(),
59 e);
60 }
61 }
62
63 public Metadata read(InputStream input, Map<String, ?> options) throws IOException {
64 Objects.requireNonNull(input, "input cannot be null");
65
66 try (InputStream in = input) {
67 return new Metadata(new MetadataStaxReader().read(in, isStrict(options)));
68 } catch (XMLStreamException e) {
69 throw new MetadataParseException(
70 e.getMessage(),
71 e.getLocation().getLineNumber(),
72 e.getLocation().getColumnNumber(),
73 e);
74 }
75 }
76
77 private boolean isStrict(Map<String, ?> options) {
78 Object value = (options != null) ? options.get(IS_STRICT) : null;
79 return value == null || Boolean.parseBoolean(value.toString());
80 }
81 }