An error occurred while processing the template.
Java method "com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl.search(long, long, long, String, String, long, String, String[], String[], String, String, String, String, boolean)" threw an exception when invoked on com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl object "com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl@15aab655"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign relatedDocuments = journalSea...  [in template "20116#20152#168572" at line 267, column 1]
----
1<style> 
2	article p { 
3		color: #000; 
4
5	article hr { 
6		margin: 40px 0; 
7
8	.buttons-wrapper { 
9		border-top: 2px solid #45474e; 
10		border-bottom: 2px solid #45474e; 
11
12	.buttons-container { 
13		padding: 40px 0px;  
14
15	.buttons-container .btn { 
16		border-radius: 0px; 
17		padding: 10px 50px; 
18		color: #FFF; 
19		background-color: #003876; 
20		margin: 30px 0px; 
21
22	.summary__description { 
23		font-size: 24px; 
24		line-height: 36px; 
25		letter-spacing: 0.5px; 
26		font-family: "Roboto",sans-serif; 
27		margin-bottom: 40px; 
28
29	.features-container { 
30			margin: 40px 0px; 
31
32	.buttons-container .btn.contact-us { 
33		background-color: #003876; 
34
35	.buttons-container .btn.get-quote { 
36	    background-color:#b32c32; 
37
38
39	.portlet-journal-content .journal-content-article .features-list table img{ 
40		max-width: 180px; 
41
42	.buttons-container span { 
43		vertical-align: middle; 
44		padding-left: 5px; 
45
46	 
47	.buttons-container .btn i { 
48		background-repeat: no-repeat; 
49		background-size: contain; 
50		height: 32px; 
51		width: 32px; 
52		display: inline-block; 
53		vertical-align: middle; 
54
55	.locate-us i { 
56		background-image: url("/documents/45807659/45840069/icon-map.png/11d8bb8e-f815-32b5-2f85-a56aa78232bb?t=1522186225695"); 
57
58	.get-quote i { 
59		background-image: url("/documents/45807659/45840069/icon-quote.png/e36b8940-2bcb-d2e8-176c-37f5b9b96bfc?t=1522186252612"); 
60		width: 24px; 
61
62	.contact-us i { 
63		background-image: url("/documents/45807659/45840069/icon-contact.png/df1fe862-f3fa-671f-ae94-38b843f76af8?t=1524172877042"); 
64
65	.features-list ul { 
66		list-style: none; 
67		padding: 0; 
68
69	.features-list li { 
70		padding-left: 1.3em; 
71
72	.features-list li:before { 
73		content: "\f00c";  
74		font-family: FontAwesome; 
75		display: inline-block; 
76		margin-left: -1.3em;  
77		width: 1.3em;  
78		font-size: 10px; 
79
80	.features-image img { 
81		max-height: 250px; 
82		width: 100%; 
83
84	.file-download img { 
85		max-height: 35px; 
86		margin-right: 5px; 
87		margin-top: 5px; 
88
89	.locate-us-container { 
90		text-align: right; 
91
92	.get-quote-container { 
93		text-align: center; 
94
95	article .row.content-wrapper { 
96		margin-top: 40px; 
97
98	@media (max-width:767px) { 
99		.locate-us-container, .get-quote-container, .contact-us-container { 
100			text-align: center; 
101
102		.get-quote-container .btn { 
103			margin:  0px;             
104
105		.buttons-container .btn { 
106			width: 100%; 
107			font-size: 20px; 
108
109
110	@media (min-width:768px) and (max-width:1024px){ 
111		.buttons-container .btn { 
112			padding: 10px 40px; 
113
114
115	.file-detail { 
116		margin-bottom: 28px; 
117		height: 120px; 
118		padding: 0 20px 0 0 !important; 
119
120	.attachments-wrapper { 
121		font-size: 15px; 
122
123	.summary__title, .summary__title h1 { 
124		font-size: 40px; 
125		margin-bottom: 40px; 
126		font-weight: bold; 
127
128	.summary__collapsable-title { 
129		margin: 25px 0; 
130		padding: 15px; 
131		color: #ffffff; 
132		font-size: 16px; 
133		letter-spacing: 0.3px; 
134
135	.summary__collapsable-heading { 
136		background-color: #f5f5f5; 
137		padding: 20px 15px; 
138		font-size: 24px; 
139		font-weight: 600; 
140		margin-bottom: 20px !important; 
141
142	.summary__collapsable-content { 
143		padding: 0 30px 30px 30px; 
144
145	.summary__collapsible-arrow, .summary__collapsible-arrow:hover, 
146	.summary__collapsible-arrow:focus { 
147		color: #1a1c20; 
148
149	.summary__collapsable-attachment-title { 
150		font-weight: bold; 
151		font-size: 16px; 
152		margin: 15px 0; 
153
154	.summary__collapsable-attachment-icon { 
155		margin-right: 10px; 
156		height: 40px; 
157
158	.summary__collapsable-attachment-arrow { 
159		top: 2px; 
160		margin-left: 10px; 
161
162	.summary__collapsable-attachment-icon { 
163		width: 31px; 
164		height: 40px; 
165		background-position: -657px -592px; 
166
167	.summary__collapsable-attachment { 
168		display: flex; 
169
170	.summary__collapsable-attachment-name { 
171		margin-top: 10px; 
172
173	.summary__collapsable-image { 
174		background-repeat: no-repeat; 
175		background-size: contain; 
176		height: 100px; 
177		margin-bottom: 20px; 
178		background-position: center; 
179
180	a.b-cemex-button { 
181		color: #000; 
182
183	.file-description { 
184		font-size: 18px; 
185		font-weight: bold; 
186		line-height: 1.56; 
187		color: #1a1c20; 
188		letter-spacing: 0.4px; 
189		margin-bottom: 19px 
190
191	.benefitsAndApplications { 
192		display: table-row; 
193
194	.benefitsAndApplications .section { 
195		display: table-cell; 
196		background-color: #e4e4e4; 
197		padding: 15px; 
198
199	.benefitsAndApplications .separator { 
200		display: table-cell; 
201		width: 20px; 
202		border: none; 
203		background-color: #FFF; 
204
205	.benefitsAndApplications .section h3 { 
206		padding: 10px 0; 
207		background-color: #b6b6b6; 
208		text-align: center; 
209		color: #FFF; 
210
211	.benefitsAndApplications .section h4 { 
212		font-weight: bold; 
213		margin: 15px; 
214
215	@media (max-width:767px) { 
216		.benefitsAndApplications { 
217			display: block; 
218
219		.benefitsAndApplications .section { 
220			display: block; 
221			width: 100%; 
222
223		.benefitsAndApplications .separator { 
224			height: 20px; 
225
226
227	.applications { 
228		display: block; 
229		width: 100%; 
230
231	.applications .section { 
232		background-color: #e4e4e4; 
233		padding: 15px; 
234
235	.applications .section h3 { 
236		padding: 10px 0; 
237		background-color: #b6b6b6; 
238		text-align: center; 
239		color: #FFF; 
240
241	.applications .section h4 { 
242		font-weight: bold; 
243		margin: 15px; 
244
245</style> 
246<#assign journalArticleId = .vars['reserved-article-id'].data> 
247<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
248<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
249<#assign journalArticle = journalArticleLocalService.getArticle(groupId, journalArticleId)/> 
250<#assign articleResource = journalArticle.getArticleResource() /> 
251<#assign articleResourcePK = articleResource.getPrimaryKey() /> 
252<#assign categoryList=assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
253<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
254<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
255<#if categoryList?size gt 0> 
256    <#assign mainCategory = categoryList[0] /> 
257</#if> 
258<#if categoryList?size gt 0> 
259<#assign categories = []/> 
260<#list categoryList as category> 
261	<#assign categories = categories + [category.getCategoryId()?string]/> 
262</#list> 
263<#assign journalSearchService = serviceLocator.findService("com.base22.liferay.journal.search.service.JournalSearchLocalService") /> 
264<#assign userId = themeDisplay.getUserId() /> 
265<#assign plid = themeDisplay.getPlid() /> 
266<#assign structures = ["189596"] /> 
267<#assign relatedDocuments = journalSearchService.search(userId, plid, companyId, "", "", groupId, locale, structures, categories, null, "must", null, null, true) /> 
268</#if> 
269					 
270<article class="container"> 
271	<div class="row" style="margin-top:40px"> 
272		<div class="col-xs-12 col-sm-12 col-md-offset-2 col-md-8 col-lg-offset-2 col-lg-8"> 
273			<#if displayTitle?? && displayTitle.getData()?? && displayTitle.getData()?trim != ""> 
274			<header class="row"> 
275				<div class="summary__title"><h1>${displayTitle.getData()}</h1></div> 
276			</header> 
277			</#if> 
278 
279			<#if summary?? && summary.getData()?? && summary.getData()!=""> 
280			<div class="row summary__intro-container"> 
281					<div class="col-md-12"> 
282						<div class="summary__description"> 
283							${summary.getData()} 
284						</div> 
285					</div> 
286			</div> 
287			</#if> 
288 
289				<div class="row buttons-wrapper"> 
290				<div class="col-xs-12 buttons-container"> 
291					<div class="col-xs-12 col-sm-4 contact-us-container"> 
292						<a href="https://www.cemex.co.uk/technical-product-support-helpline" id="prodSupPhone" class="btn contact-us"> 
293							<i aria-hidden="true"></i> 
294							<span>Product Support</span> 
295						</a> 
296					</div> 
297					<div class="col-xs-12 col-sm-4 get-quote-container"> 
298						<#if overrideGetQuoteURL?? && overrideGetQuoteURL.getData()?? && overrideGetQuoteURL.getData()?trim != ""> 
299							<a href="${overrideGetQuoteURL.getData()}" class="btn get-quote"> 
300								<i aria-hidden="true"></i> 
301								<span>Get a Quote</span> 
302							</a> 
303						<#else> 
304						<a href="/quote-requests-link" class="btn get-quote"> 
305							<i aria-hidden="true"></i> 
306							<span>Get a Quote</span> 
307						</a> 
308						</#if> 
309					</div> 
310					<div class="col-xs-12 col-sm-4 locate-us-container"> 
311						<a href="/find-your-location.aspx<#if mainCategory?? && mainCategory.getDescription()?trim != "">?categoryid=${mainCategory.getDescription(locale)}</#if>" class="btn locate-us"> 
312							<i aria-hidden="true"></i> 
313							<span>Locate Us</span> 
314						</a> 
315					</div> 
316				</div>     
317			</div> 
318 
319			<#if (thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!="") || (features?? && features.getData()?? && features.getData()!="")> 
320			<div class="row features-wrapper"> 
321				<div class="col-xs-12 features-container"> 
322					<#if features?? && features.getData()?? && features.getData()!=""> 
323						<div class="<#if thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!="">col-xs-6<#else>col-xs-12</#if> col-sm-6 features-list"> 
324							${features.getData()} 
325						</div> 
326					</#if> 
327					<#if thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!=""> 
328						<div class="<#if features?? && features.getData()?? && features.getData()!="">col-xs-6<#else>col-xs-12</#if> col-sm-6 features-image"> 
329							<img src="${thumbnail.getData()}" alt="${displayTitle.getData()}"> 
330						</div> 
331					</#if> 
332				</div> 
333			</div> 
334			</#if> 
335 
336			<#if body?? && body.getData()?? && body.getData()!=""> 
337			<div class="row content-wrapper"> 
338				<div class="col-xs-12 content-container"> 
339					${body.getData()} 
340				</div> 
341			</div> 
342			</#if> 
343 
344			<div class="row"> 
345				<#if section?? && section.getSiblings()?has_content> 
346					<#list section.getSiblings() as cur_section> 
347						 
348						<#assign collapsible_index = cur_section.getName() + cur_section_index /> 
349						 
350						<#assign collapsible_title = "" /> 
351						<#assign cur_attachment = "" /> 
352						<#assign cur_body = "" /> 
353 
354						<#list cur_section.getChildren() as children> 
355						 
356							<#if ( children.getName() == "title" ) > 
357								<#assign collapsible_title = children.getData() /> 
358							</#if> 
359							<#if ( children.getName() == "file" ) > 
360								<#assign cur_attachment = children.getData() /> 
361							</#if> 
362							<#if ( children.getName() == "content" ) > 
363								<#assign cur_body = children.getData() /> 
364							</#if> 
365 
366						</#list> 
367 
368						<#if collapsible_title?trim != ""> 
369						<div class="row summary__collapsable-heading b-collapsable__border-left" style="background-color: white;" > 
370							<div class="col-xs-11"> 
371								<h2>${collapsible_title}</h2> 
372							</div> 
373							<div class="col-xs-1"> 
374								<a class="summary__collapsible-arrow" role="button" 
375								data-toggle="collapse" href="#${collapsible_index}" 
376								aria-expanded="true" aria-controls="${collapsible_index}"> 
377									<span class="glyphicon glyphicon-menu-up" 
378									aria-hidden="true"></span> 
379								</a> 
380							</div> 
381						</div> 
382						</#if> 
383						<div class="collapse row in" id="${collapsible_index}" aria-expanded="true" <#if collapsible_title?trim == "">style="display: block;"</#if>> 
384							<div class="summary__collapsable-content"> 
385 
386							<#if cur_body != "" > 
387								${cur_body} 
388							</#if> 
389 
390							<#if cur_attachment != ""> 
391									<@generateAttachmentElement cur_attachment ""/> 
392							</#if> 
393 
394							</div> 
395						</div> 
396					</#list> 
397				</#if> 
398			</div> 
399		</div> 
400	</div> 
401	<#include "${templatesPath}/46036047" /> 
402 
403	<#if relatedDocuments?? && relatedDocuments.getResults()?has_content> 
404		<#if (!hideRelatedDocuemnts?? || !getterUtil.getBoolean(hideRelatedDocuemnts.getData()))> 
405			<div class="row" style="margin-top:40px"> 
406				<div class="col-xs-12 col-sm-12 col-md-offset-2 col-md-8 col-lg-offset-2 col-lg-8"> 
407					<div class="row summary__collapsable-heading b-collapsable__border-left" style="background-color: white;"> 
408						<div class="col-xs-11"> 
409							<h2>Related Documents</h2> 
410						</div> 
411						<div class="col-xs-1"> 
412							<a class="summary__collapsible-arrow" role="button" 
413							data-toggle="collapse" href="#relatedDocuments" 
414							aria-expanded="true" aria-controls="relatedDocuments"> 
415								<span class="glyphicon glyphicon-menu-up" 
416								aria-hidden="true"></span> 
417							</a> 
418						</div> 
419					</div> 
420					<div class="collapse row in" id="relatedDocuments" aria-expanded="true"> 
421						<div class="row attachments-wrapper "> 
422							<#if (attachments?? && attachments.getSiblings()?has_content) > 
423								<#list attachments.getSiblings() as attachment> 
424									<#if attachment?? && attachment.getData()?? && attachment.getData()!=""> 
425										<@generateAttachmentElement attachmentURL=attachment.getData() title=""/> 
426									</#if> 
427								</#list> 
428							</#if> 
429							<#if (!hideRelatedDocuemnts?? || !getterUtil.getBoolean(hideRelatedDocuemnts.getData())) && (relatedDocuments?? && relatedDocuments.getResults()?has_content)> 
430								<#attempt> 
431									<#list relatedDocuments.getResults() as entry> 
432										<#if entry.getValue("attachment")?trim != "" > 
433											<#assign attachment = entry.getValue("attachment")?eval/> 
434											<@generateAttachmentElement attachmentURL="/documents/" + attachment.groupId + "/" + attachment.folderId + "/" + attachment.fileName + "/" + attachment.uuid title=entry.getValue("displayTitle") /> 
435										</#if> 
436									</#list> 
437									 
438								<#recover> 
439									<!-- something went wrong --> 
440								</#attempt> 
441							</#if> 
442						</div> 
443					</div> 
444				</div> 
445			</div> 
446		</#if> 
447	</#if> 
448</article> 
449		 
450<script> 
451	(function(window, $, undefined) { 
452		var onReady = function() { 
453			var $collapsibleArrows = $('.summary__collapsable-heading > div > a'), 
454				$attachmentsContainer = $('.attachments-wrapper'); 
455 
456			$collapsibleArrows.on('click', function(event) { 
457				event.preventDefault(); 
458				var $currentSpan = $(this).find('span'); 
459				var $currentHeading = $(this).closest('div.summary__collapsable-heading'); 
460				if($(this)[0].getAttribute('aria-expanded') == "true"){ 
461					$currentSpan.removeClass(); 
462					$currentSpan.addClass("glyphicon glyphicon-menu-down"); 
463					$currentHeading.css("background-color", "#f5f5f5"); 
464				} else { 
465					$currentSpan.removeClass(); 
466					$currentSpan.addClass("glyphicon glyphicon-menu-up"); 
467					$currentHeading.css("background-color", "white"); 
468
469			}); 
470			var elements = location.href.split("#") 
471			if(elements.length > 1 && $("#" + elements[1]).length > 0){ 
472				setTimeout(function(){ 
473					//$("#" + elements[1]).parent().parent().find("a.summary__collapsible-arrow").trigger('click'); 
474					var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 
475					if($("#" + elements[1]).offset().top > h) 
476						$("#content-footer-wrapper").scrollTop(($("#" + elements[1]).offset().top-80)); 
477					 
478				},400); 
479				 
480			} else { 
481				//$($collapsibleArrows[0]).trigger('click'); 
482				//if ( $attachmentsContainer.children().length > 0  ) { 
483				//    $attachmentsContainer.removeClass('hidden'); 
484				//} 
485
486		}; 
487		AUI().ready(onReady); 
488	})(window, jQuery); 
489</script> 
490	 
491<#if generateJsonld?? && getterUtil.getBoolean(generateJsonld.getData())> 
492	<script type="application/ld+json"> 
493
494		"@context": "http://schema.org", 
495		"@type": "Product", 
496		"name": "${displayTitle.getData()}", 
497		"image": "<#if thumbnail?? >${thumbnail.getData()}</#if>", 
498		"description": "${summary.getData()?trim}", 
499		"url" : "https://www.cemex.co.uk${themeDisplay.getURLCurrent()}", 
500		<#if categoryList?size gt 1>"brand" : "${categoryList[1].getName()}",</#if> 
501		<#if categoryList?size gt 0>"category" : "${categoryList[0].getName()}",</#if> 
502		<#if isRelatedTo?trim != "">"isRelatedTo" : [${isRelatedTo}],</#if> 
503		"manufacturer" : "CEMEX S.A.B. de C.V." 
504
505	</script> 
506</#if> 
507 
508<#macro generateAttachmentElement attachmentURL title> 
509	<#assign counter = 0 > 
510	<#list attachmentURL?split("/") as chunkURL> 
511		<#if counter == 2> 
512			<#assign groupId = chunkURL?number > 
513		</#if> 
514		<#if counter == 5> 
515			<#if chunkURL?index_of("?") != -1> 
516				<#assign uuId = chunkURL?substring(0, chunkURL?index_of("?")) > 
517			<#else> 
518				<#assign uuId = chunkURL > 
519			</#if> 
520		</#if> 
521		<#assign counter = counter+1 > 
522	</#list> 
523 
524	<#assign fileEntry = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />  
525	<#assign file=fileEntry.getFileEntryByUuidAndGroupId(uuId, getterUtil.getLong(groupId)) > 
526	<#assign fileName = file.getTitle()> 
527	<#assign fileDescription = file.getDescription()> 
528 
529	<div class="col-xs-12 col-md-6 file-detail"> 
530		<div class="file-description"><#if fileDescription?trim != "" >${fileDescription}<#else>${title}</#if></div> 
531		<div class="file-download"><img src="/documents/45807659/45840069/pdf-icon.png/e7af5019-3956-922d-161b-0de750ccadd1?t=1519847131363" alt="${fileDescription}"><a href="${attachmentURL}">${fileName}</a></div> 
532	</div> 
533</#macro>