Valuemix Concrete
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@46db9969"; 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> 
Find Out More

We're here to answer any questions or concerns you might have. We also appreciate any feedback you'd like to give. It's only through close relationships and an ongoing dialogue with our customers that we're able to better serve your needs.