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 java.io.File;
22 import java.io.IOException;
23 import java.io.InputStream;
24 import java.io.Reader;
25 import java.util.Map;
26 import java.util.Objects;
27
28 import org.apache.maven.artifact.repository.metadata.Metadata;
29 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
30 import org.codehaus.plexus.component.annotations.Component;
31 import org.codehaus.plexus.util.ReaderFactory;
32 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
33
34
35
36
37
38
39 @Component(role = MetadataReader.class)
40 public class DefaultMetadataReader implements MetadataReader {
41
42 public Metadata read(File input, Map<String, ?> options) throws IOException {
43 Objects.requireNonNull(input, "input cannot be null");
44
45 Metadata metadata = read(ReaderFactory.newXmlReader(input), options);
46
47 return metadata;
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 MetadataXpp3Reader().read(in, isStrict(options));
55 } catch (XmlPullParserException e) {
56 throw new MetadataParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
57 }
58 }
59
60 public Metadata read(InputStream input, Map<String, ?> options) throws IOException {
61 Objects.requireNonNull(input, "input cannot be null");
62
63 try (InputStream in = input) {
64 return new MetadataXpp3Reader().read(in, isStrict(options));
65 } catch (XmlPullParserException e) {
66 throw new MetadataParseException(e.getMessage(), e.getLineNumber(), e.getColumnNumber(), e);
67 }
68 }
69
70 private boolean isStrict(Map<String, ?> options) {
71 Object value = (options != null) ? options.get(IS_STRICT) : null;
72 return value == null || Boolean.parseBoolean(value.toString());
73 }
74 }