Se ha producido un error al procesar la plantilla.
Java method "com.liferay.portal.kernel.util.Http.URLtoString(String)" threw an exception when invoked on com.liferay.portal.template.TemplateContextHelper$HttpWrapper object "com.liferay.portal.template.TemplateContextHelper$HttpWrapper@1381e189"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local response = CONSTANTS.CURRENT_H...  [in template "fiesta-americana-theme_SERVLET_CONTEXT_/templates/utils/api-hotels.ftl" in function "getHotelWithRoomsByCodeAndBrandCode" at line 11, column 3]
	- Reached through: #assign dataHotel = getHotelWithRooms...  [in template "20115#20151#ROOM-DETAIL-HERO-TEMPLATE-1.0.0" at line 11, column 1]
----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
2 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#include "${fullTemplatesPath}/utils/api-hotels.ftl"> 
6<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
7<#include "${fullTemplatesPath}/utils/general.ftl"> 
8<#include "${fullTemplatesPath}/utils/media-links.ftl"> 
9<#include "${fullTemplatesPath}/utils/url.ftl"> 
10 
11<#assign dataHotel = getHotelWithRoomsByCodeAndBrandCode(HotelCode.getData(), BrandCode.getData())> 
12<#if dataHotel?? && dataHotel?has_content && dataHotel?size != 0> 
13  <#assign hotel = dataHotel[0]> 
14  <#if hotel.roomLinksContent?? && hotel.roomLinksContent?size != 0> 
15  <#if hotel.roomLinksContent?is_hash> 
16    <#assign dataRooms = [hotel.roomLinksContent]> 
17  <#else> 
18    <#assign dataRooms = hotel.roomLinksContent> 
19  </#if> 
20 
21  <#list dataRooms as Room> 
22    <#if Room.code == RoomCode.getData()> 
23      <#assign CurrentRoom = Room> 
24    </#if> 
25  </#list> 
26 
27<!-- partial: component/block/room-detail-hero/room-detail-hero.hbs --> 
28  <#if (CurrentRoom?has_content) > 
29  <section class="room-detail-hero content-spacing is-hidden" data-component="room-detail-hero" data-scroll-component> 
30    <div class="title-wrapper"> 
31      <div class="content-wrapper"> 
32        <span class="overline-type">${hotel.name}</span> 
33        <h2 class="heading-2 title"> 
34          <span>${CurrentRoom.name}</span> 
35          <span> 
36            <#--  [STATIC]Despierta con vistas al mar  --> 
37          </span> 
38        </h2> 
39      </div> 
40    </div> 
41 
42    <div class="content-wrapper"> 
43      <div class="info-wrapper"> 
44        <div class="facilities-desktop-wrapper"> 
45          <!-- repeated --> 
46          <ul class="facilities-list"> 
47            <#if CurrentRoom.totalCapacity?has_content> 
48            <li class="facility-item"> 
49              <!-- partial: component/general/icon/icon.hbs --> 
50              <span class="icon facility-icon" data-component="icon" data-icon="person-icon"></span> 
51              <!-- / component/general/icon/icon.hbs --> 
52              <span class="detail-type">${_CAPACITY[locale]?replace("%capacity%", CurrentRoom.totalCapacity)}</span> 
53            </li> 
54            </#if> 
55 
56            <#if CurrentRoom.beds?has_content> 
57            <li class="facility-item"> 
58              <!-- partial: component/general/icon/icon.hbs --> 
59              <span class="icon facility-icon" data-component="icon" data-icon="bed-icon"></span> 
60              <!-- / component/general/icon/icon.hbs --> 
61              <#if CurrentRoom.beds?is_string	> 
62              <span class="detail-type"></span> 
63              <#else> 
64              <span class="detail-type">${CurrentRoom.beds} ${_BED[locale]}${(CurrentRoom.beds != 1)?then("s", "")}</span> 
65              </#if> 
66            </li> 
67            </#if> 
68 
69            <#if CurrentRoom.dimension?has_content> 
70            <li class="facility-item"> 
71              <!-- partial: component/general/icon/icon.hbs --> 
72              <span class="icon facility-icon" data-component="icon" data-icon="size-icon"></span> 
73              <!-- / component/general/icon/icon.hbs --> 
74              <span class="detail-type">${CurrentRoom.dimension}</span> 
75            </li> 
76            </#if> 
77 
78            <#if CurrentRoom.amenities?has_content && CurrentRoom.amenities?size != 0> 
79            <li class="facility-item"> 
80              <!-- partial: component/general/icon/icon.hbs --> 
81              <span class="icon facility-icon" data-component="icon" data-icon="default-icon"></span> 
82              <!-- / component/general/icon/icon.hbs --> 
83              <span class="detail-type">${CurrentRoom.amenities[0]}</span> 
84            </li> 
85            </#if> 
86 
87          </ul> 
88        </div> 
89 
90        <div class="info-price-wrapper"> 
91 
92          <!-- partial: component/general/from-price/from-price.hbs --> 
93          <div class="from-price price-size-" data-component="from-price"> 
94            <span class="from-copy detail-type">${_STARTING_FROM[locale]}</span> 
95            <div class="price-wrapper"> 
96              <#--  TODO  grab from API  --> 
97              <span class="price-copy"> 
98                <#if hotel.startingFromHotel??> 
99                  ${hotel.startingFromHotel} 
100                <#else> 
101                  [data not available] 
102                </#if> 
103 
104              </span> 
105              <span class="currency-copy detail-type">${_CURRENCY[locale]}</span> 
106            </div> 
107          </div> 
108          <!-- / component/general/from-price/from-price.hbs --> 
109 
110          <!-- partial: component/general/cta-button/cta-button.hbs --> 
111          <@cta.button text="${_BOOK_HERE[locale]}" url=getBookingUrl(hotel) class="primary"/> 
112          <!-- / component/general/cta-button/cta-button.hbs --> 
113        </div> 
114      </div> 
115    </div> 
116 
117    <div class="visual-wrapper" data-carousel-container> 
118      <div class="visual-wrapper-overflow"> 
119        <ol class="visual-list" data-visual-carousel> 
120          <#assign images = [] /> 
121          <#if CurrentRoom.mediaLinks?? && CurrentRoom.mediaLinks?has_content> 
122            <#assign images = getRoomCarouselImageXL(CurrentRoom.mediaLinks)> 
123          </#if> 
124          <#list images as image> 
125          <li class="visual-item" data-visual-item> 
126            <!-- partial: component/general/picture/picture.hbs --> 
127            <picture class="main-visual" data-component="picture"> 
128              <#--  <source media="(min-width: 768px)" srcset="fiesta-americana/image/room-detail-hero/room-detail-hero-visual.jpg">  --> 
129              <img class="visual" src="${image.url}" alt="${image.title}"> 
130            </picture> 
131            <!-- / component/general/picture/picture.hbs --> 
132 
133          </li> 
134          </#list> 
135 
136        </ol> 
137      </div> 
138 
139      <div class="bullets-wrapper"> 
140 
141        <!-- partial: component/general/bullets/bullets.hbs --> 
142        <ol class="bullet-list" data-bullet-list data-component="bullets"> 
143          <#list images as image> 
144          <li class="bullet" data-bullet> 
145            <span class="icon"></span> 
146          </li> 
147          </#list> 
148        </ol> 
149        <!-- / component/general/bullets/bullets.hbs --> 
150      </div> 
151    </div> 
152 
153    <div class="caption-controls-wrapper content-wrapper"> 
154      <div class="counter-wrapper"> 
155        <div class="counter"> 
156          <span class="counter-number current" data-counter-current>01</span> 
157          <span class="counter-number total" data-counter-total>${(images?size < 10)?then('0', '')}${images?size}</span> 
158        </div> 
159        <span class="progress" data-progress></span> 
160      </div> 
161 
162      <div class="caption-controls"> 
163        <div class="description" data-carousel-list> 
164          <#list images as image> 
165            <p class="copy-1 copy" data-carousel-item>${image.title}</p> 
166          </#list> 
167        </div> 
168 
169        <div class="controls-wrapper"> 
170          <div class="button" data-button-previous> 
171 
172            <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
173            <div class="button-arrow direction-left size-big outlined " data-component="button-arrow"> 
174 
175              <!-- partial: component/general/icon/icon.hbs --> 
176              <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
177              <!-- / component/general/icon/icon.hbs --> 
178 
179              <!-- partial: component/general/icon/icon.hbs --> 
180              <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
181              <!-- / component/general/icon/icon.hbs --> 
182              <div class="chevron-wrapper"> 
183 
184                <!-- partial: component/general/icon/icon.hbs --> 
185                <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
186                <!-- / component/general/icon/icon.hbs --> 
187              </div> 
188            </div> 
189            <!-- / component/general/button-arrow/button-arrow.hbs --> 
190          </div> 
191          <div class="button" data-button-next> 
192 
193            <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
194            <div class="button-arrow direction-right size-big outlined " data-component="button-arrow"> 
195 
196              <!-- partial: component/general/icon/icon.hbs --> 
197              <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
198              <!-- / component/general/icon/icon.hbs --> 
199 
200              <!-- partial: component/general/icon/icon.hbs --> 
201              <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
202              <!-- / component/general/icon/icon.hbs --> 
203              <div class="chevron-wrapper"> 
204 
205                <!-- partial: component/general/icon/icon.hbs --> 
206                <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
207                <!-- / component/general/icon/icon.hbs --> 
208              </div> 
209            </div> 
210            <!-- / component/general/button-arrow/button-arrow.hbs --> 
211          </div> 
212        </div> 
213      </div> 
214    </div> 
215 
216    <div class="content-wrapper facilities-mobile-wrapper"> 
217      <!-- repeated --> 
218      <ul class="facilities-list"> 
219 
220        <#if CurrentRoom.totalCapacity?has_content> 
221        <li class="facility-item"> 
222          <!-- partial: component/general/icon/icon.hbs --> 
223          <span class="icon facility-icon" data-component="icon" data-icon="person-icon"></span> 
224          <!-- / component/general/icon/icon.hbs --> 
225          <span class="detail-type">${_CAPACITY[locale]?replace("%capacity%", CurrentRoom.totalCapacity)}</span> 
226        </li> 
227        </#if> 
228 
229        <#if CurrentRoom.beds?has_content> 
230        <li class="facility-item"> 
231          <!-- partial: component/general/icon/icon.hbs --> 
232          <span class="icon facility-icon" data-component="icon" data-icon="bed-icon"></span> 
233          <!-- / component/general/icon/icon.hbs --> 
234          <#if CurrentRoom.beds?is_string	> 
235              <span class="detail-type"></span> 
236              <#else> 
237              <span class="detail-type">${CurrentRoom.beds} ${_BED[locale]}${(CurrentRoom.beds != 1)?then("s", "")}</span> 
238              </#if> 
239        </li> 
240        </#if> 
241 
242 
243        <#if CurrentRoom.dimension?has_content> 
244        <li class="facility-item"> 
245          <!-- partial: component/general/icon/icon.hbs --> 
246          <span class="icon facility-icon" data-component="icon" data-icon="size-icon"></span> 
247          <!-- / component/general/icon/icon.hbs --> 
248          <span class="detail-type">${CurrentRoom.dimension}</span> 
249        </li> 
250        </#if> 
251 
252        <#if CurrentRoom.amenities?has_content && CurrentRoom.amenities?size != 0> 
253        <li class="facility-item"> 
254          <!-- partial: component/general/icon/icon.hbs --> 
255          <span class="icon facility-icon" data-component="icon" data-icon="default-icon"></span> 
256          <!-- / component/general/icon/icon.hbs --> 
257          <span class="detail-type">${CurrentRoom.amenities[0]}</span> 
258        </li> 
259        </#if> 
260      </ul> 
261    </div> 
262  </section> 
263  <#else> 
264    <h1>Error: no hay cuarto para la marca ${BrandCode.getData()}, hotel ${HotelCode.getData()}, cuarto ${RoomCode.getData()}</h1> 
265  </#if> 
266 
267  <#else> 
268    <h1>Error: No se encontraron habitaciones para la marca ${BrandCode.getData()}, hotel ${HotelCode.getData()}</h1> 
269  </#if> 
270<#else> 
271  <h1>Error: No se encontró hotel para la marca ${BrandCode.getData()}, hotel ${HotelCode.getData()}</h1> 
272</#if> 
273<!-- / component/block/room-detail-hero/room-detail-hero.hbs -->