1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.logging.log4j.core.util;
19
20 import java.io.ByteArrayInputStream;
21 import java.io.ByteArrayOutputStream;
22 import java.io.File;
23 import java.io.FileInputStream;
24 import java.io.FileNotFoundException;
25 import java.io.IOException;
26 import java.io.InputStream;
27 import java.net.MalformedURLException;
28 import java.net.URI;
29 import java.net.URISyntaxException;
30 import java.net.URL;
31 import java.util.Objects;
32
33 import org.apache.logging.log4j.Level;
34 import org.apache.logging.log4j.core.config.ConfigurationFactory;
35 import org.apache.logging.log4j.core.config.ConfigurationSource;
36 import org.apache.logging.log4j.util.LoaderUtil;
37
38
39
40
41 public class Source {
42
43
44
45
46
47 private final File file;
48 private final URI uri;
49 private final String location;
50
51
52
53
54
55 public Source(ConfigurationSource source) {
56 this.file = source.getFile();
57 this.uri = source.getURI();
58 this.location = source.getLocation();
59 }
60
61
62
63
64
65
66
67 public Source(final File file) {
68 this.file = Objects.requireNonNull(file, "file is null");
69 this.location = file.getAbsolutePath();
70 this.uri = null;
71 }
72
73
74
75
76
77
78 public Source(final URI uri, final long lastModified) {
79 this.uri = Objects.requireNonNull(uri, "URI is null");
80 this.location = uri.toString();
81 this.file = null;
82 }
83
84
85
86
87
88
89
90 public File getFile() {
91 return file;
92 }
93
94
95
96
97
98
99
100 public URI getURI() {
101 return uri;
102 }
103
104
105
106
107
108
109
110 public String getLocation() {
111 return location;
112 }
113
114 @Override
115 public String toString() {
116 return location;
117 }
118
119 @Override
120 public boolean equals(Object o) {
121 if (this == o) {
122 return true;
123 }
124 if (!(o instanceof Source)) {
125 return false;
126 }
127 Source source = (Source) o;
128 return Objects.equals(location, source.location);
129 }
130
131 @Override
132 public int hashCode() {
133 return Objects.hash(location);
134 }
135 }