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.templatingkit.dam;
35
36 import info.magnolia.link.LinkUtil;
37 import info.magnolia.context.MgnlContext;
38 import info.magnolia.dam.api.Asset;
39 import info.magnolia.dam.api.AssetProviderCapability;
40 import info.magnolia.dam.api.RenditionAwareAssetProvider;
41 import info.magnolia.dam.core.config.DamCoreConfiguration;
42 import info.magnolia.dam.jcr.AssetNodeTypes;
43 import info.magnolia.dam.jcr.DamConstants;
44 import info.magnolia.dam.jcr.JcrAssetProvider;
45 import info.magnolia.module.site.ExtendedAggregationState;
46 import info.magnolia.module.site.Site;
47 import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
48 import info.magnolia.module.templatingkit.imaging.ImagingSupport;
49
50 import java.util.Calendar;
51 import java.util.EnumSet;
52
53 import javax.inject.Inject;
54 import javax.jcr.Node;
55
56 import org.apache.jackrabbit.JcrConstants;
57 import org.slf4j.Logger;
58 import org.slf4j.LoggerFactory;
59
60
61
62
63
64
65
66 @Deprecated
67 public class RenditionAwareJcrAssetProvider extends JcrAssetProvider implements RenditionAwareAssetProvider {
68
69 private static final Logger log = LoggerFactory.getLogger(JcrAssetProvider.class);
70
71 private STKTemplatingFunctions stkTemplatingFunctions;
72
73 @Inject
74 public RenditionAwareJcrAssetProvider(DamCoreConfiguration configuration, STKTemplatingFunctions stkTemplatingFunctions) {
75 super(configuration);
76 this.stkTemplatingFunctions = stkTemplatingFunctions;
77 }
78
79 @Override
80 protected EnumSet<AssetProviderCapability> setupProviderCapabilities() {
81 return EnumSet.of(AssetProviderCapability.query, AssetProviderCapability.queryWithProviderSpecificString, AssetProviderCapability.hierarchical, AssetProviderCapability.rendition);
82 }
83
84 @Override
85 public String getLink(Asset asset, String renditionName) throws AssetRenditionException {
86 ExtendedAggregationState aggregationState = (ExtendedAggregationState) MgnlContext.getAggregationState();
87
88 Site site = aggregationState.getSite();
89 final ImagingSupport imaging = (ImagingSupport) stkTemplatingFunctions.theme(site).getImaging();
90
91 try {
92
93
94 String link;
95
96 Node contentNode = AssetNodeTypes.AssetResource.getResourceNodeFromAsset(MgnlContext.getJCRSession(DamConstants.WORKSPACE).getNodeByIdentifier(asset.getItemKey().getAssetId()));
97 link = imaging.createLink(contentNode.getProperty(JcrConstants.JCR_DATA), renditionName);
98
99
100 Calendar lastModified = asset.getLastModified();
101 link = LinkUtil.addFingerprintToLink(link, lastModified);
102
103 return link;
104 } catch (Exception e) {
105 throw new AssetRenditionException("Asset rendition '" + renditionName + "' could not be generated.", e);
106 }
107 }
108
109 }