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