1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.resourceloader;
35
36 import info.magnolia.resourceloader.classpath.ClasspathResourceOriginFactory;
37 import info.magnolia.resourceloader.classpath.LegacyClasspathResourceOriginFactory;
38 import info.magnolia.resourceloader.file.FileSystemResourceOriginFactory;
39 import info.magnolia.resourceloader.jcr.JcrResourceOriginFactory;
40 import info.magnolia.resourceloader.layered.LayeredResourceOrigin;
41 import info.magnolia.resourceloader.layered.LayeredResourceOriginFactory;
42
43 import java.util.Arrays;
44 import java.util.stream.Stream;
45
46 import javax.inject.Inject;
47 import javax.inject.Provider;
48 import javax.inject.Singleton;
49
50
51
52
53
54
55 @Singleton
56 public class DefaultResourceOrigins implements Provider<LayeredResourceOrigin> {
57
58 private final LayeredResourceOrigin layeredResourceOrigin;
59 private final ResourceOrigin[] resourceOrigins;
60
61
62
63
64 @Inject
65 public DefaultResourceOrigins(ClasspathResourceOriginFactory classpathOriginFactory,
66 LegacyClasspathResourceOriginFactory legacyClasspathOriginFactory,
67 FileSystemResourceOriginFactory fileSystemOriginFactory,
68 JcrResourceOriginFactory jcrOriginFactory,
69 LayeredResourceOriginFactory layeredOriginFactory) {
70
71 this.resourceOrigins = new ResourceOrigin[] {
72 jcrOriginFactory.create("jcr"),
73 fileSystemOriginFactory.create("filesystem"),
74 legacyClasspathOriginFactory.create("classpath-legacy"),
75 classpathOriginFactory.create("classpath")
76 };
77
78 layeredResourceOrigin = layeredOriginFactory.create("layered", resourceOrigins);
79 }
80
81 public Stream<ResourceOrigin> getAvailableOrigins() {
82 return Arrays.stream(resourceOrigins);
83 }
84
85 @Override
86 public LayeredResourceOrigin get() {
87 return layeredResourceOrigin;
88 }
89 }