Se ha producido un error al procesar la plantilla.
Java method "es.insst.liferay.tctx.impl.CustomUtilImpl.getDLFileEntryFromURL(String)" threw an exception when invoked on es.insst.liferay.tctx.impl.CustomUtilImpl object "es.insst.liferay.tctx.impl.CustomUtilImpl@4e6ebfe1"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign file = customUtil.getDLFileEn...  [in template "20157#20197#111800" at line 108, column 37]
----
1<#-- 
2Formacion_home_ADT 
3Tipo : Publicador de contenidos Plantilla 
4--> 
5 
6<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
7<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
8<#assign httpServletRequest = serviceContext.getRequest()> 
9<#assign imagesPath = themeDisplay.getPathThemeImages() /> 
10 
11<#--Inicio creación de la URL para pasar el articleId al portlet de formularios de Solicitud de inscripción a cursos --> 
12<#assign journalArticleLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
13<#assign classPK = entry.getClassPK()/> 
14<#assign currentJournalArticle = journalArticleLocalServiceUtil.fetchLatestArticle(classPK)/> 
15<#assign currentarticleId = currentJournalArticle.getArticleId() /> 
16<#assign layoutLocalServiceUtil = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
17<#assign layoutFormulario = layoutLocalServiceUtil.getFriendlyURLLayout(currentJournalArticle.getGroupId(), false, "/solicitud-de-inscripcion-a-cursos")> 
18<#assign layoutPlidFormulario = layoutFormulario.getPlid()> 
19<#assign updateActionURL = portletURLFactory.create(httpServletRequest,"esinsstformularioswebinscripciones_WAR_esinsstformulariosweb", layoutPlidFormulario ,"RENDER_PHASE")> 
20${updateActionURL.setParameter( "articleId", currentarticleId )} 
21<#--Creación href URL para el botón de Inscripcion --> 
22<#assign actionURLID = "${updateActionURL.toString()}" > 
23 
24<#assign iconos={"image/png":"img", 
25"image/tiff":"img", 
26"image/gif":"img", 
27"image/jpeg":"img", 
28"image/bmp":"img", 
29"image/webp":"img", 
30"video/x-msvideo":"video", 
31"video/x-ms-wmv": "video", 
32"video/quicktime":"video", 
33"video/mpeg":"video", 
34"video/ogg":"video", 
35"video/mp4":"video", 
36"video/x-flv":"video"}> 
37 
38<#--Fin creación URL --> 
39 
40<section class="block-agenda"> 
41    <div class="row"> 
42        <#list entries as entry> 
43        <ul class="block-agenda-list"> 
44            <#if entry.getAssetRendererFactory().getType()=="content"> 
45 
46 
47 
48 
49                    <#assign docXml = saxReaderUtil.read(entry.getAssetRenderer().getArticle().getContentByLocale(locale)) /> 
50                    <#assign fechaInicio = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_inicio']/dynamic-content/text()"))/> 
51                    <!-- Estado, Fecha limite, Fecha actual --> 
52                    <#assign estado = docXml.valueOf("//dynamic-element[@name='Estado']/dynamic-content/text()")?trim /> 
53                    <#assign fechaLimite = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_limite']/dynamic-content/text()"))/> 
54                    <#assign fechaLimiteDate = dateUtil.newDate(fechaLimite) /> 
55                    <#assign fechaActualDate = .now/> 
56 
57                    <li class="col-xs-12 col-md-3"> 
58                        <#assign assetRenderer = entry.getAssetRenderer() /> 
59                        <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 
60 
61                        <#-- Descomponemos la url para poder pintar el detalle maximizado y volver al listado --> 
62                        <#assign page_link = viewURL?split("/-/")[0] /> 
63                        <#if page_link?starts_with("http://")> 
64                            <#assign page_link_no_https = page_link?split("http://")[1] /> 
65                        <#else> 
66                            <#assign page_link_no_https = page_link?split("https://")[1] /> 
67                        </#if> 
68                        <#assign inte = page_link_no_https?index_of("/") /> 
69                        <#assign page_link_relative = page_link_no_https?substring(inte, page_link_no_https?length) /> 
70 
71                        <#assign friendly_page_link = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
72                        <div class="block-agenda-no-frame"> 
73                            <div class="block-agenda-items"> 
74 
75                                <!-- Categoria --> 
76                                <#assign assetVocabularyLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
77                                <#assign estadoVocabulary = assetVocabularyLocalServiceUtil.getGroupVocabulary(entry.getGroupId(), "Tipo de Contenido") /> 
78                                <#if estadoVocabulary?has_content > 
79                                    <#list entry.getCategories() as categoryList> 
80                                        <#if categoryList.getVocabularyId() == estadoVocabulary.getVocabularyId()> 
81                                            <p class="agenda-items-ttle">${categoryList.getName()}</p> 
82                                        </#if> 
83                                    </#list> 
84                                </#if> 
85 
86                                <!-- Fecha de inicio --> 
87                                <#assign horasLectivas = docXml.valueOf("//dynamic-element[@name='Horas_lectivas']/dynamic-content/text()")?trim /> 
88                                <#if (fechaInicio > 0)> 
89                                    <#assign fechaInicio_DateObj =  dateUtil.newDate(fechaInicio) /> 
90                                    <p class="agenda-items-day"><span class="day">${dateUtil.getDate(fechaInicio_DateObj, "dd", locale)}&nbsp;</span>${dateUtil.getDate(fechaInicio_DateObj, "MM", locale)} ${dateUtil.getDate(fechaInicio_DateObj, "yyyy", locale)} <small>&#40;${horasLectivas}h&#41;</small></p> 
91                                </#if> 
92 
93                                <!-- Lugar --> 
94                                <#assign lugar = docXml.valueOf("//dynamic-element[@name='Lugar_de_imparticion_detallado']/dynamic-content/text()")/> 
95                                <#if !lugar?exists || !lugar?has_content> 
96                                    <#assign lugar = docXml.valueOf("//dynamic-element[@name='Lugar_de_imparticion']/dynamic-content/text()")/> 
97                                </#if> 
98                                <p class="agenda-items-where"> ${lugar}</p> 
99 
100                                <!-- titulo --> 
101                                <a href="${friendly_page_link}"> 
102                                    <p class="agenda-items-what">${entry.getTitle(locale)}</p> 
103                                </a> 
104 
105                                <!-- Programa --> 
106                                <#assign programa = docXml.valueOf("//dynamic-element[@name='Programa']/dynamic-content") /> 
107                                <#if programa?has_content> 
108                                    <#assign file = customUtil.getDLFileEntryFromURL(programa) /> 
109 
110                                        <#if iconos[file.getMimeType()]??> 
111                                            <#assign tipoIcono = iconos[file.getMimeType()]/> 
112                                        <#else> 
113                                            <#assign tipoIcono = "pdf"/> 
114                                        </#if> 
115                                        <div class="listado__item--reports"> 
116                                            <img src="${imagesPath}/icono-${tipoIcono}.png" alt=""> 
117                                            <a class="slider-card__linkAlternative" href="${programa}" target="_blank">${languageUtil.get(locale,'portal.programa')}</a><span class="txt-pdf">(${file.extension?upper_case}, ${customUtil.getFileSizeFormatted(file.size)})</span> 
118                                        </div> 
119 
120                                </#if> 
121 
122 
123                                <!-- Estado y Fecha limite --> 
124                                <#assign estado = docXml.valueOf("//dynamic-element[@name='Estado']/dynamic-content/text()")?trim /> 
125                                <#assign fechaLimite = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_limite']/dynamic-content/text()"))/> 
126                                <#if estado == "Abierto el plazo"> 
127 
128                                    <#if fechaLimite != 0> 
129                                        <#if fechaActualDate?date < fechaLimiteDate?date> 
130                                            <#if (fechaLimite > 0)> 
131                                                <#assign fechaLimite_DateObj =  dateUtil.newDate(fechaLimite) /> 
132                                                <div class="agenda-items-state"> 
133                                                    <ul> 
134                                                        <li class="state-ok">${estado}</li> 
135                                                        <li class="state-date">Fecha Límite: ${dateUtil.getDate(fechaLimite_DateObj, "dd/MM/yyyy", locale)}</li> 
136                                                    </ul> 
137                                                </div> 
138                                            </#if> 
139                                            <div class="agenda-items-btn-no-frame"> 
140                                                <a onclick="location.href='${actionURLID}'" type="button" class="btn btn-download btn-full btn-default btn-lg" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
141                                                    ${languageUtil.get(locale,'portal.home.solicitarInscripcion')} 
142                                                </a> 
143                                            </div> 
144                                        </#if> 
145                                    </#if> 
146                                <#else> 
147                                    <div class="agenda-items-state"> 
148                                        <ul> 
149                                            <li class="state-ko">${estado}</li> 
150                                        </ul> 
151                                    </div> 
152                                </#if> 
153                            </div> 
154                        </div> 
155                    </li> 
156                </#if> 
157        </ul> 
158        </#list> 
159    </div> 
160</section>