ImageResourceUpdateHandler.java
3.45 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.cq.commons.jcr.JcrUtil
* com.day.cq.contentsync.config.ConfigEntry
* com.day.cq.contentsync.handler.ContentUpdateHandler
* com.day.cq.wcm.foundation.Image
* com.day.text.Text
* javax.jcr.Node
* javax.jcr.RepositoryException
* javax.jcr.Session
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.ReferencePolicy
* org.apache.sling.api.resource.Resource
* org.apache.sling.api.resource.ResourceResolver
* org.apache.sling.jcr.resource.JcrResourceResolverFactory
* org.slf4j.Logger
* org.slf4j.LoggerFactory
*/
package com.day.cq.wcm.contentsync.impl.handler;
import com.day.cq.commons.jcr.JcrUtil;
import com.day.cq.contentsync.config.ConfigEntry;
import com.day.cq.contentsync.handler.ContentUpdateHandler;
import com.day.cq.wcm.foundation.Image;
import com.day.text.Text;
import java.util.Calendar;
import java.util.Date;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.jcr.resource.JcrResourceResolverFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(metatype=0, factory="com.day.cq.contentsync.handler.ContentUpdateHandler/image")
public class ImageResourceUpdateHandler
implements ContentUpdateHandler {
private static final Logger log = LoggerFactory.getLogger(ImageResourceUpdateHandler.class);
@Reference(policy=ReferencePolicy.STATIC)
private JcrResourceResolverFactory resolverFactory;
public boolean updateCacheEntry(ConfigEntry configEntry, Long lastUpdated, String configCacheRoot, Session admin, Session session) {
ResourceResolver resolver = this.resolverFactory.getResourceResolver(admin);
Resource resource = resolver.getResource(configEntry.getContentPath());
Image img = new Image(resource);
img.setItemName("file", "image");
img.setItemName("fileReference", "imageReference");
img.setSelector("img");
try {
if (img.getLastModified() == null || lastUpdated < img.getLastModified().getTime().getTime()) {
String src = img.getSrc();
String parentPath = configCacheRoot + Text.getRelativeParent((String)src, (int)1);
Node parent = JcrUtil.createPath((String)parentPath, (String)"sling:Folder", (Session)admin);
Node image = (Node)resolver.getResource(resource.getPath() + "/image").adaptTo(Node.class);
JcrUtil.copy((Node)image, (Node)parent, (String)Text.getName((String)src));
admin.save();
return true;
}
}
catch (RepositoryException e) {
log.error("Unexpected error while updating logo: ", (Throwable)e);
}
return false;
}
protected void bindResolverFactory(JcrResourceResolverFactory jcrResourceResolverFactory) {
this.resolverFactory = jcrResourceResolverFactory;
}
protected void unbindResolverFactory(JcrResourceResolverFactory jcrResourceResolverFactory) {
if (this.resolverFactory == jcrResourceResolverFactory) {
this.resolverFactory = null;
}
}
}