1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.services.wcm.javascript;
18
19 import java.io.Reader;
20 import java.io.StringReader;
21
22 import javax.jcr.Node;
23
24 import org.exoplatform.portal.resource.Resource;
25 import org.exoplatform.portal.resource.ResourceResolver;
26 import org.exoplatform.services.log.ExoLogger;
27 import org.exoplatform.services.log.Log;
28 import org.exoplatform.services.wcm.portal.LivePortalManagerService;
29 import org.exoplatform.services.wcm.utils.WCMCoreUtils;
30 import org.exoplatform.web.application.javascript.JavascriptConfigService;
31
32
33
34
35
36
37
38
39 public class WCMJavascriptResourceResolver implements ResourceResolver {
40
41 private static final Log LOG = ExoLogger.getLogger(WCMJavascriptResourceResolver.class.getName());
42
43 private LivePortalManagerService livePortalManagerService_;
44 private JavascriptConfigService javascriptConfigService_;
45
46 public WCMJavascriptResourceResolver(LivePortalManagerService livePortalManagerService,
47 JavascriptConfigService javascriptConfigService) {
48 this.livePortalManagerService_ = livePortalManagerService;
49 this.javascriptConfigService_ = javascriptConfigService;
50 }
51
52 @Override
53 public Resource resolve(String path) throws NullPointerException {
54 if(!path.matches(XJavascriptService.JS_PATH_REGEXP)) return null;
55 String[] elements = path.split("/");
56 String portalName = elements[4];
57 try {
58 Node portalNode = livePortalManagerService_.getLivePortal(WCMCoreUtils.getSystemSessionProvider(), portalName);
59 final String jsData = WCMCoreUtils.getSiteGlobalActiveJs(portalNode);
60 if(jsData == null)
61 return null;
62 return new Resource(path) {
63 public Reader read() {
64 return new StringReader(jsData);
65 }
66 };
67 } catch(Exception e) {
68 if (LOG.isErrorEnabled()) {
69 LOG.error("Unexpected error happens", e);
70 }
71 }
72 return null;
73 }
74
75 }