Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.giks.generic.service.service.BlogLocalService")  [in template "35243#35273#93820" at line 75, column 22]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign blgservice = serviceLocator.f...  [in template "35243#35273#93820" at line 75, column 1]
----
1<style> 
2.main-card .container > .row:first-child{ 
3    padding-bottom: 50px; 
4
5.main-card .container > .row:first-child .col-4{ 
6    display: flex; 
7    justify-content: center; 
8    align-items: center; 
9
10.main-card .container > .row:last-child .col-4{ 
11    padding: 0 !important; 
12
13.main-card h2{ 
14    text-transform: capitalize; 
15    font-size: 1.8rem; 
16
17.main-card .container > .row:last-child .col-4 > div{ 
18    border-left: 1px solid rgba(0, 0, 0, 0.125); 
19    padding: 0px 15px; 
20
21.main-card .container > .row:last-child .col-4 .card{ 
22    transition: cubic-bezier(0.075, 0.82, 0.165, 1); 
23    text-align: center; 
24    position: relative; 
25    display: flex; 
26
27.main-card .container > .row:last-child .col-4 .card .img-responsive{ 
28    max-width: 100%; 
29    height: auto; 
30    width: 100%; 
31    object-fit: cover; 
32
33<#--.main-card .container > .row:last-child .col-4 .card .card-title{ 
34    display: none; 
35    transition: cubic-bezier(0.075, 0.82, 0.165, 1); 
36
37.main-card .container > .row:last-child .col-4 .card:hover .card-title{ 
38    background-color: #0000004f; 
39    position: absolute; 
40    display: block; 
41    transition: cubic-bezier(0.075, 0.82, 0.165, 1); 
42    top:0; 
43    height: 100%; 
44    display: flex; 
45    align-items: center; 
46    justify-content: center; 
47
48.main-card .container > .row:last-child .col-4 .card:hover .card-title h4{ 
49    color: #fff; 
50}--> 
51.main-card p{ 
52    text-align: justify; 
53}    
54.main-card ul li{ 
55    list-style:none; 
56
57.main-card  a:hover{ 
58    text-decoration: none; 
59
60.portlet-content{ 
61    overflow: hidden; 
62    padding: 0px !important; 
63
64.portlet-header h2.portlet-title-text{ 
65    display: none !important; 
66
67.figure img{ 
68    border-radius: 0px !important; 
69
70</style> 
71<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() /> 
72<#assign httpServletRequest = serviceContext.getRequest() /> 
73<#assign blogservice= serviceLocator.findService("com.liferay.blogs.service.BlogsEntryLocalService")/> 
74<#assign assetservice= serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
75<#assign blgservice= serviceLocator.findService("com.giks.generic.service.service.BlogLocalService")/> 
76<#if (httpServletRequest.getParameter("blogId"))?? > 
77    <#assign friendyUrl=themeDisplay.getLayout().getFriendlyURL()/> 
78	<#assign urlTitle=""/> 
79	<#list friendyUrl?split("/") as x> 
80		urlTitle = x; 
81	</#list> 
82    <#assign blog=blgservice.getBlogByUrlTitle(urlTitle) />     
83    <section class="main-card"> 
84        <div class="container"> 
85            <div class="row"> 
86                <div class="col-4"> 
87                    <h1>${blog.getTitle()}</h1> 
88                </div> 
89                <div class="col-8">     
90                    <figure class="figure"> 
91                        <img src="${blog.getSmallImageURL(ThemeDisplay)}" class="figure-img img-fluid rounded" alt="img"> 
92                    </figure> 
93                </div> 
94            </div> 
95            <div class="row mb-2"> 
96                <div class="col-md-12"> 
97                <ul class="nav flex-row justify-content-end"> 
98                                        <li class="mx-2"> 
99                                            <div id="facebook"> 
100                                                <a class="" href="javascript:void(window.open('https://www.facebook.com/sharer.php?u=' + encodeURIComponent(document.location) + '?t=' + encodeURIComponent(document.title),'_blank'))"> 
101                                                    <span class="hide">Facebook</span> 
102<svg class="lexicon-icon lexicon-icon-social-facebook" role="presentation" viewBox="0 0 512 512"> 
103	<path class="lexicon-icon-outline" d="M483.7,0H28.3C12.6,0,0,12.6,0,28.3v455.5C0,499.4,12.6,512,28.3,512h245.2V313.7h-66.7v-77.3h66.7v-57c0-66.1,40.4-102.1,99.4-102.1c28.3,0,52.5,2.1,59.6,3v69.1h-40.9c-32.1,0-38.3,15.2-38.3,37.6v49.3h76.5l-10,77.3h-66.6V512h130.5c15.6,0,28.3-12.7,28.3-28.3V28.3C512,12.6,499.3,0,483.7,0z"></path> 
104</svg>                                                </a> 
105                                            </div> 
106                                        </li> 
107                                        <li class="mx-2"> 
108                                            <div id="twitter"> 
109                                                <a class="" href="javascript:void(window.open('https://twitter.com/share?url=' + encodeURIComponent(document.location) + '&amp;text=' + encodeURIComponent(document.title) + '&amp;via=fabienb&amp;hashtags=koandesign','_blank'))"> 
110                                                    <span class="hide">Twitter</span> 
111<svg class="lexicon-icon lexicon-icon-twitter" role="presentation" viewBox="0 0 512 512"> 
112	<path class="lexicon-icon-outline" d="M512.015 97.213c-18.842 8.368-39.089 14.015-60.332 16.531 21.68-12.991 38.358-33.589 46.2-58.108-20.306 12.026-42.776 20.774-66.71 25.485-19.164-20.423-46.462-33.179-76.688-33.179-58.020 0-105.039 47.048-105.039 105.039 0 8.222 0.936 16.238 2.721 23.934-87.308-4.389-164.698-46.2-216.516-109.749-9.041 15.508-14.22 33.559-14.22 52.812 0 36.457 18.55 68.612 46.727 87.425-17.234-0.556-33.414-5.267-47.575-13.137 0 0.439 0 0.877 0 1.317 0 50.91 36.222 93.336 84.266 102.99-8.807 2.399-18.082 3.687-27.679 3.687-6.759 0-13.343-0.673-19.779-1.901 13.371 41.723 52.169 72.123 98.135 72.942-35.959 28.176-81.252 44.971-130.465 44.971-8.486 0-16.853-0.498-25.046-1.464 46.493 29.815 101.704 47.195 161.041 47.195 193.226 0 298.879-160.075 298.879-298.879 0-4.565-0.117-9.070-0.293-13.576 20.481-14.776 38.3-33.267 52.374-54.334v0z"></path> 
113</svg>                                                </a> 
114                                            </div> 
115                                        </li> 
116                                        <li class="mx-2"> 
117                                            <div id="linked-in"> 
118                                                <a class="" href="javascript:void(window.open('https://www.linkedin.com/shareArticle?url=' + encodeURIComponent(document.location) + '&amp;title=' + encodeURIComponent(document.title),'_blank'))" > 
119                                                    <span class="hide">LinkedIn</span> 
120<svg class="lexicon-icon lexicon-icon-social-linkedin" role="presentation" viewBox="0 0 512 512"> 
121	<path class="lexicon-icon-outline" d="M474.1,0H37.8C16.9,0,0,16.5,0,36.9V475c0,20.4,16.9,37,37.8,37h436.4c20.9,0,37.9-16.6,37.9-36.9V36.9C512,16.5,495,0,474.1,0z M151.9,436.3h-76V191.9h76V436.3z M69.8,114.6c0-60.6,88.1-60.6,88.1,0C157.9,175,69.8,173,69.8,114.6z M436.3,436.3h-75.9V317.5c0-28.3-0.5-64.8-39.5-64.8c-39.5,0-45.5,30.9-45.5,62.8v120.8h-75.8V191.9h72.8v33.4h1c10.1-19.2,34.9-39.5,71.8-39.5c76.9,0,91.1,50.6,91.1,116.4L436.3,436.3L436.3,436.3z"></path> 
122</svg>                                                </a> 
123                                            </div> 
124                                        </li> 
125                                    </ul> 
126                                    </div> 
127            </div> 
128            <div class="row"> 
129                <main class="col-8"> 
130                    <p>${blog.getContent()}</p> 
131                </main> 
132                <aside class="col-4"> 
133                    <div> 
134                        <h2>You might be interested in</h2> 
135                        <hr>  
136                        <#assign assetEntryList=assetservice.getAssetEntries(-1, -1)/> 
137                        <#if assetEntryList?has_content> 
138                            <#list assetEntryList as entry> 
139                                <#assign blogPkid=entry.getClassPK()?number/> 
140                             
141                                <#if blogPkid==blogsId> 
142                                    <#assign assetEntryId=entry.getEntryId()/> 
143                                    <#assign alltags=[]/> 
144                                    <#assign alltags= assetservice.getAssetTagPrimaryKeys(assetEntryId)/> 
145                                    <#assign count=0/> 
146                                    <#list 0..alltags?size-1 as i> 
147                                        <#assign tagId="${alltags[i]}"/> 
148                                        <#assign blogIdNumber=tagId?number/> 
149                                        <#assign alltag= assetservice.getAssetTagAssetEntries(blogIdNumber)/> 
150                                        <#list alltag as j > 
151                                            <#if count<3> 
152                                                <#assign blogid="${j.getClassPK()}"/> 
153                                                <#assign blg=blogid?number/> 
154                                                <#assign blogdisplay=blogservice.getBlogsEntry(blg)/> 
155                                                <#if blg==blogsId> 
156                                                 
157                                                <#else> 
158                                                    <#assign count++/> 
159                                                    <div class="card"> 
160                                                        <a href="/blogs/blogs-details?blogId=${blogdisplay.getEntryId()?string}"> 
161                                                            <img class="img-responsive" src="${blogdisplay.getSmallImageURL(ThemeDisplay)}" alt="${blogdisplay.getTitle()}" /> 
162                                                            <div class="card-title" title=""> 
163                                                                <h4>${blogdisplay.getTitle()}</h4> 
164                                                            </div> 
165                                                        </a> 
166                                                    </div> 
167                                                </#if> 
168                                            </#if> 
169                                        </#list> 
170                                    </#list> 
171                                </#if> 
172                            </#list> 
173                        </#if> 
174                    </div> 
175                </aside> 
176            </div> 
177        </div> 
178    </section> 
179</#if>