angle-left null European Space Imaging
An error occurred while processing the template.
The following has evaluated to null or missing:
==> journalArticleUtil.getJournalArticleByArticleId(journalArticleId) [in template "20099#20135#124179" at line 9, column 18]
----
Tip: If the failing expression is known to be 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: journalArticle = journalArticleUtil.g... [in template "20099#20135#124179" at line 9, column 1]
- Reached through: #assign-container [in template "20099#20135#124179" at line 1, column 1]
----
1<#assign 
2defaultImage = themeDisplay.getPathThemeImages() + '/default_image.png' 
3TAXONOMIES_DISPLAY_COUNT = 6 
4 
5journalArticleId = .vars['reserved-article-id'].data 
6servicePrice = '0.0' 
7groupId = themeDisplay.getLayout().getGroupId() 
8journalArticleUtil = serviceLocator.findService("com.eversis.esa.eomall.eomall.core.api.util.JournalArticleUtils") 
9journalArticle = journalArticleUtil.getJournalArticleByArticleId(journalArticleId) 
10journalArticleTitle = .vars['reserved-article-title'].data 
11resourceprimKey = journalArticle.getResourcePrimKey() 
12assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
13assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey) 
14assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
15organizationUtils = serviceLocator.findService("com.eversis.esa.eomall.eomall.core.api.util.OrganizationUtils") 
16organizationId = journalArticleUtil.getOrganizationIdByJournalArticle(journalArticle) 
17taxonomies = [] 
18taxonomiesString = '' 
19organizationLogo = '' 
20organizationURL = '' 
21organizationPhoneNumber = '' 
22organizationFaxNumber = '' 
23organizationEmailAddress = '' 
24organizationAddress = '' 
25companyName = 'Company name' 
26portalBaseURL = themeDisplay.getPortalURL() 
27/> 
28 
29<#if organizationId != 0> 
30 <#assign organization = organizationUtils.getOrganizationById(organizationId) /> 
31 <#assign organizationLogo = organizationUtils.getOrganizationLogoImageURL(organizationId) /> 
32 <#assign organizationPhoneNumber = organizationUtils.getOrganizationPrimaryPhoneNumber(organizationId) /> 
33 <#assign organizationFaxNumber = organizationUtils.getOrganizationFaxNumber(organizationId) /> 
34 <#assign organizationEmailAddress = organizationUtils.getOrganizationPrimaryEmailAddress(organizationId) /> 
35 <#assign organizationURL = organizationUtils.getOrganizationPrimaryWebsiteURL(organizationId) /> 
36 <#assign organizationTaxonomies = organizationUtils.getOrganizationTaxonomies(organizationId) /> 
37 <#assign companyName = organization.getName() /> 
38 <#assign organizationAddress = organization.getAddress().getStreet1() + ' ' + ' ' + organization.getAddress().getZip() + ' ' + organization.getAddress().getCity() /> 
39 <#assign organizationAddress = organizationAddress?trim /> 
40 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey)/> 
41 <#list assetEntry.getCategories() as category> 
42 <#assign vocabulary = assetVocabularyLocalService.getVocabulary(category.vocabularyId) /> 
43 <#if vocabulary.getName() == 'Market Sector' || vocabulary.getName() == 'Thematic'> 
44 <#assign taxonomies = taxonomies + [category.getName()] /> 
45 </#if> 
46 </#list> 
47 <#list organizationTaxonomies as category> 
48 <#assign vocabulary = assetVocabularyLocalService.getVocabulary(category.vocabularyId) /> 
49 <#if vocabulary.getName() == 'Market Sector' || vocabulary.getName() == 'Thematic'> 
50 <#if !taxonomies?seq_contains(category.getName())> 
51 <#assign taxonomies = taxonomies + [category.getName()] /> 
52 </#if> 
53 </#if> 
54 </#list> 
55 <#assign taxonomiesString = taxonomies[0..*TAXONOMIES_DISPLAY_COUNT]?join('; ') /> 
56 
57 <script type="application/ld+json"> 
58
59 "@context": "https://schema.org", 
60 "@type": "Organization", 
61 "email": "${organizationEmailAddress}", 
62 "faxNumber": "${organizationFaxNumber}", 
63 "location": { 
64 "@type": "PostalAddress", 
65 "addressCountry": { 
66 "@type": "Country", 
67 "name": "${organization.getAddress().getCountry()}" 
68 }, 
69 "postalCode": "${organization.getAddress().getZip()}", 
70 "streetAddress": "${organization.getAddress().getStreet1()}" 
71 }, 
72 "logo": "${portalBaseURL}${organizationLogo}", 
73 "telephone": "${organizationPhoneNumber}", 
74 "url": "${organizationURL}" 
75
76 </script> 
77</#if> 
78 
79<#compress> 
80<div class="company article"> 
81 <div class="row page__section background--section"> 
82 <div class="col-12"> 
83 <div class="row"> 
84 <h5 class="col-12 text-center margin-bottom-0 text-uppercase"><@liferay.language key="Company.Company" /></h5> 
85 <h1 class="col-12 text-center margin-bottom-30">${companyName}</h1> 
86 <p class="col-12 col-sm-10 offset-sm-1 col-md-8 offset-md-2 col-lg-6 offset-lg-3 text-center">${company_mission.getData()}</p> 
87 </div> 
88 
89 <div class="row margin-bottom-20 justify-content-sm-between"> 
90 <div class="col-12 col-sm-3 col-md-2 text-center text-sm-left mb-3 mb-sm-0"> 
91 <#if organizationLogo?? && organizationLogo !=""> 
92 <img class="company__logo" alt="${organization.getName()} logo" title="${organization.getName()}" src="${organizationLogo}" onerror='this.src="${defaultImage}"' /> 
93 <#else> 
94 <picture> 
95 <img class="company__logo" src="${defaultImage}"> 
96 </picture> 
97 </#if> 
98 </div> 
99 <div class="col-12 col-sm-3 col-md-2 text-center d-flex justify-content-end align-self-end"> 
100 <#if company_demolink.company_demolink_link_text.getData()?has_content> 
101 <a class="button button--light" 
102 href="${company_demolink.company_demolink_link_url.getData()}" target="_blank" 
103 onclick="gaOutboundLink('${company_demolink.company_demolink_link_url.getData()}', 'company demo link', true); return false">${company_demolink.company_demolink_link_text.getData()}</a> 
104 </#if> 
105 </div> 
106 </div> 
107 <div class="row"> 
108 <div class="col-sm-12 d-flex align-items-center justify-content-center height-100"> 
109 <div class="border w-100"> 
110 <div class="ratio-box ratio-box--16-9"> 
111 <#if main_header_image.getData()?? && main_header_image.getData() !=""> <img class="company__image" alt="${main_header_image.getAttribute("alt")}" 
112 data-fileentryid="${main_header_image.getAttribute("fileEntryId")}" src="${main_header_image.getData()}" class="col-sm-12" onerror='this.src="${defaultImage}"' /> 
113 <#else> 
114 <picture> 
115 <img src="${defaultImage}"> 
116 </picture> 
117 </#if> 
118 </div> 
119 </div> 
120 </div> 
121 </div> 
122 </div> 
123 </div> 
124 <div class="row page__section"> 
125 <div class="col-12"> 
126 <div class="row margin-bottom-35"> 
127 <div class="col-12"> 
128 <h4 class="text-capitalize d-inline-block"><@liferay.language key="Company.About" /></h4> 
129 <div class="margin-left-10 product__share_trigger relative d-inline-block"> 
130 <i class="icon eo-icon-share"></i> 
131 <div class="product__share"> 
132 <span data-link="#share-facebook" data-title="${journalArticleTitle}" data-description="${company_mission.getData()}" class="padding-right-15"><i class="eo-icon-facebook"></i></span> 
133 <span data-link="#share-linkedin" data-title="${journalArticleTitle}" data-description="${company_mission.getData()}" class="padding-right-15"><i class="eo-icon-linkedin"></i></span> 
134 <span data-link="#share-twitter" data-title="${journalArticleTitle}" data-description="${company_mission.getData()}"><i class="eo-icon-twitter"></i></span> 
135 </div> 
136 </div> 
137 <p>${company_description.getData()}</p> 
138 <p class="text-uppercase margin-bottom-40 font-bold">${taxonomiesString}</p> 
139 </div> 
140 <div class="col-md-6 col-lg-5 company__details layout-grid"> 
141 <div class="layout-grid__row"> 
142 <div class="layout-grid__column font-light"> 
143 <div class="layout-grid__cell"><@liferay.language key="Company.Certifcation" /></div> 
144 </div> 
145 <div class="layout-grid__column padding-right-0 font-bold"> 
146 <div class="relative ms-break-all layout-grid__cell"> 
147 <#if certification?? && certification.company_certificate.getSiblings()?has_content> 
148 <#if (certification.company_certificate.getSiblings()?size > 1)> 
149 <div class="list-toggle-expand"></div> 
150 </#if> 
151 <ul class="list list--expandable"> 
152 <#list certification.company_certificate.getSiblings() as company_certificate> 
153 <li class="item__list">${company_certificate.getData()?has_content?then(company_certificate.getData(), '&mdash;')}</li> 
154 </#list> 
155 </ul> 
156 </#if> 
157 </div> 
158 </div> 
159 </div> 
160 <div class="layout-grid__row"> 
161 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Website" /></div> </div> 
162 <div class="layout-grid__column"> <div class="layout-grid__cell"> <a class="font-bold ms-break-all" href="${organizationURL}" target="_blank"> ${organizationURL?has_content?then(organizationURL, '&mdash;')}</a> 
163 </div> </div> 
164 </div> 
165 <div class="layout-grid__row"> 
166 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Registration-Number" /></div> </div> 
167 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${company_registration_number.getData()?has_content?then(company_registration_number.getData(), '&mdash;')}</div> </div> 
168 </div> 
169 <div class="layout-grid__row"> 
170 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Address" /></div> </div> 
171 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${organizationAddress?has_content?then(organizationAddress, '&mdash;')}</div> </div> 
172 </div> 
173 <div class="layout-grid__row"> 
174 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Telephone" /></div> </div> 
175 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${organizationPhoneNumber?has_content?then(organizationPhoneNumber, '&mdash;')}</div> </div> 
176 </div> 
177 <div class="layout-grid__row"> 
178 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Fax" /></div> </div> 
179 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${organizationFaxNumber?has_content?then(organizationFaxNumber, '&mdash;')}</div> </div> 
180 </div> 
181 <div class="layout-grid__row"> 
182 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Email" /></div> </div> 
183 <div class="layout-grid__column"> <div class="layout-grid__cell"><a class="font-bold" href="mailto:${organizationEmailAddress}">${organizationEmailAddress?has_content?then(organizationEmailAddress, '&mdash;')}</a></div> </div> 
184 </div> 
185 <div class="layout-grid__row"> 
186 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Name" /></div> </div> 
187 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${contact_name.getData()?has_content?then(contact_name.getData(), '&mdash;')}</div> </div> 
188 </div> 
189 <div class="layout-grid__row"> 
190 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Position" /></div> </div> 
191 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${contact_position.getData()?has_content?then(contact_position.getData(), '&mdash;')}</div> </div> 
192 </div> 
193 <div class="layout-grid__row"> 
194 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Telephone" /></div> </div> 
195 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${contact_telephone.getData()?has_content?then(contact_telephone.getData(), '&mdash;')}</div> </div> 
196 </div> 
197 <div class="layout-grid__row"> 
198 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Email" /></div> </div> 
199 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${contact_email.getData()?has_content?then(contact_email.getData(), '&mdash;')}</div> </div> 
200 </div> 
201 <div class="layout-grid__row"> 
202 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Value-chain" /></div> </div> 
203 <div class="layout-grid__column font-bold"> 
204 <div class="align-items-center justify-content-start relative layout-grid__cell flex-wrap"> 
205 <#if company_value_chain?? && company_value_chain.company_valuechain_entry.getSiblings()?has_content> 
206 <#if (company_value_chain.company_valuechain_entry.getSiblings()?size > 1)> 
207 <div class="list-toggle-expand"></div> 
208 </#if> 
209 <ul class="list list--expandable"> 
210 <#list company_value_chain.company_valuechain_entry.getSiblings() as company_valuechain_entry> 
211 <li class="list__item">${company_valuechain_entry.getData()?has_content?then(company_valuechain_entry.getData(), '&mdash;')}</li> 
212 </#list> 
213 </ul> 
214 </#if> 
215 </div> 
216 </div> 
217 </div> 
218 <div class="layout-grid__row"> 
219 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.HQ-location" /></div> </div> 
220 <div class="layout-grid__column font-bold"> <div class="layout-grid__cell">${company_hqlocation.getData()?has_content?then(company_hqlocation.getData(), '&mdash;')}</div> </div> 
221 </div> 
222 </div> 
223 <div class="col-12 col-md-6 col-lg-6 offset-lg-1"> 
224 <div> 
225 <#if (CompanyAddress?? && CompanyAddress.getData() != "")> 
226 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(CompanyAddress.getData())> 
227 <#assign latitude = geolocationJSONObject.getDouble("latitude")> 
228 <#assign longitude = geolocationJSONObject.getDouble("longitude")> 
229  
230 <@liferay_map["map-display"] 
231 geolocation=true 
232 latitude=latitude 
233 longitude=longitude 
234 name="CompanyAddress${randomizer.nextInt()}" 
235 /> 
236 </#if> 
237 </div> 
238 </div> 
239 </div> 
240 <div class="text-right"> 
241 <button class="button button--contact-us" data-company-name="${companyName}" data-company-id="${organizationId}"><@liferay.language key="contact-us-button" /></button> 
242 </div> 
243 </div> 
244 </div> 
245</div> 
246</#compress>