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.module.resources.mapping;
35
36 import info.magnolia.cms.beans.config.URI2RepositoryMapping;
37 import info.magnolia.context.MgnlContext;
38 import info.magnolia.module.resources.ResourcesModule;
39 import info.magnolia.objectfactory.Components;
40
41 import javax.jcr.RepositoryException;
42 import javax.jcr.Session;
43
44 import org.apache.commons.lang3.StringUtils;
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48
49
50
51
52
53
54 @Deprecated
55 public class URI2ResourcesRepositoryMapping extends URI2RepositoryMapping {
56
57 private static Logger log = LoggerFactory.getLogger(URI2ResourcesRepositoryMapping.class);
58
59 private final ResourcesModule resourcesModule;
60
61 public URI2ResourcesRepositoryMapping() {
62 this(Components.getComponent(ResourcesModule.class));
63 }
64
65 public URI2ResourcesRepositoryMapping(ResourcesModule resourcesModule) {
66 this.resourcesModule = resourcesModule;
67 }
68
69 public URI2ResourcesRepositoryMapping(String uriPrefix, String repository, String handlePrefix) {
70 this(uriPrefix, repository, handlePrefix, Components.getComponent(ResourcesModule.class));
71 }
72
73 public URI2ResourcesRepositoryMapping(String uriPrefix, String repository, String handlePrefix, ResourcesModule resourcesModule) {
74 super(uriPrefix, repository, handlePrefix);
75
76 this.resourcesModule = resourcesModule;
77 }
78
79
80
81
82
83
84 @Override
85 public boolean matches(String uri) {
86 if (resourcesModule.getResourceFilter() == null || resourcesModule.getResourceFilter().vote(uri) > 0) {
87 return super.matches(uri);
88 }
89
90
91 return false;
92 }
93
94 @Override
95 public String getHandle(String uri) {
96 String handle;
97 handle = StringUtils.removeStart(uri, getURIPrefix());
98 if (StringUtils.isNotEmpty(getHandlePrefix())) {
99 handle = StringUtils.removeStart(handle, "/");
100 handle = getHandlePrefix() + "/" + handle;
101 }
102
103 handle = cleanHandle(handle);
104
105 try {
106 final Session session = MgnlContext.getJCRSession(getRepository());
107 if (!session.itemExists(handle)) {
108 String fileName = StringUtils.substringAfterLast(handle, "/");
109 String extension = StringUtils.substringAfterLast(fileName, ".");
110 handle = StringUtils.removeEnd(handle, "." + extension);
111 if (!session.itemExists(handle)) {
112 String maybeHandle = (getHandlePrefix().endsWith("/") ? "/" : "") + StringUtils.removeStart(handle, getHandlePrefix());
113
114 if (session.itemExists(maybeHandle) || (maybeHandle.lastIndexOf("/") > 0 && session.itemExists(StringUtils.substringBeforeLast(maybeHandle, "/")))) {
115 return maybeHandle;
116 }
117 }
118 }
119 } catch (RepositoryException e) {
120
121 log.debug(e.getMessage(), e);
122 }
123 return handle;
124 }
125 }