1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.mycore.common;
20
21 import java.nio.file.Files;
22 import java.nio.file.Path;
23 import java.nio.file.Paths;
24 import java.util.Optional;
25
26 import org.apache.logging.log4j.LogManager;
27 import org.apache.logging.log4j.Logger;
28 import org.mycore.common.config.MCRConfiguration2;
29
30
31
32
33 public class MCRDeveloperTools {
34
35 private static final Logger LOGGER = LogManager.getLogger();
36
37
38
39
40 public static boolean overrideActive() {
41 return MCRConfiguration2.getString("MCR.Developer.Resource.Override").isPresent();
42 }
43
44
45
46
47
48
49
50
51 public static Optional<Path> getOverriddenFilePath(String path, boolean webResource) {
52 if (overrideActive()) {
53 final String[] pathParts = path.split("/");
54
55 return MCRConfiguration2
56 .getOrThrow("MCR.Developer.Resource.Override", MCRConfiguration2::splitValue)
57 .map(Paths::get)
58 .map(p -> webResource ? p.resolve("META-INF").resolve("resources") : p)
59 .map(p -> MCRUtils.safeResolve(p, pathParts))
60 .filter(Files::exists)
61 .peek(p -> LOGGER.debug("Found overridden Resource: {}", p.toAbsolutePath().toString()))
62 .findFirst();
63 }
64 return Optional.empty();
65 }
66 }