<div class="portlet-display-template-error">
	<span class="alert alert-error">
		Si è verificato un errore nell'elaborarazione del modello.	</span>

	<pre>For &quot;.&quot; left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==&gt; jsonArticle  [in template &quot;1315478#1315513#6748475&quot; at line 143, column 19]

----
FTL stack trace (&quot;~&quot; means nesting-related):
	- Failed at: ${jsonArticle.toString()}  [in template &quot;1315478#1315513#6748475&quot; in macro &quot;jsonoutput&quot; at line 143, column 17]
	- Reached through: @jsonoutput  [in template &quot;1315478#1315513#6748475&quot; in macro &quot;writeItems&quot; at line 122, column 13]
	- Reached through: @writeItems  [in template &quot;1315478#1315513#6748475&quot; at line 99, column 7]
----</pre>

	<div class="scroll-pane">
		<div class="inner-scroll-pane">



				<pre><span>1</span>&lt;#--&nbsp;</pre>


				<pre><span>2</span>    eCTRL Solutions&nbsp;</pre>


				<pre><span>3</span>    EROGATORE feeds per integrazione visitpiemonte&nbsp;</pre>


				<pre><span>4</span>    ver: 1.8.2 &nbsp;</pre>


				<pre><span>5</span>    data: 28/05/2021&nbsp;</pre>


				<pre><span>6</span>&nbsp;</pre>


				<pre><span>7</span>    DEBUG&nbsp;</pre>


				<pre><span>8</span>    Freemarker online: http://freemarker-online.kenshoo.com/&nbsp;</pre>


				<pre><span>9</span>  esempio:&nbsp;</pre>


				<pre><span>10</span>https://atlcuneo.d40.it/piemontefeed?p_p_id=Configurable&amp;p_p_lifecycle=2&amp;p_p_resource_id=json&amp;_Configurable_jsonParams={}&nbsp;</pre>


				<pre><span>11</span>&nbsp;</pre>


				<pre><span>12</span>ESPERIENZE:&nbsp;</pre>


				<pre><span>13</span>https://www.visitcuneese.it/piemontefeed?p_p_id=Configurable&amp;p_p_lifecycle=2&amp;p_p_resource_id=json&amp;_Configurable_jsonParams={%22structureKey%22:1365076}&nbsp;</pre>


				<pre><span>14</span>&nbsp;</pre>


				<pre><span>15</span> &nbsp;</pre>


				<pre><span>16</span>  --&gt;&nbsp;</pre>


				<pre><span>17</span>&nbsp;</pre>


				<pre><span>18</span>  &lt;#compress&gt;&nbsp;</pre>


				<pre><span>19</span>  &lt;#setting url_escaping_charset=&quot;UTF-8&quot;&gt;&nbsp;</pre>


				<pre><span>20</span>    &lt;#assign SuggestoMarketspaceAPI = serviceLocator.findService(&quot;eu.suggesto.marketspace.service.SmkspDataLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>21</span>    &lt;#assign suggestoMkspAPI = serviceLocator.findService(&quot;eu.suggesto.suggestogui.service.SuggestoGuiLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>22</span>    &lt;#assign SuggestoRecommenderServiceAPI = serviceLocator.findService(&quot;eu.suggesto.servicecs.service.SuggestoRecommenderLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>23</span>    &lt;#assign SuggestoCSServiceAPI = serviceLocator.findService(&quot;eu.suggesto.servicecs.service.SuggestoCSLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>24</span>    &lt;#assign d40Service = serviceLocator.findService(&quot;eu.suggesto.d40.builder.d40.service.TourismItemLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>25</span>    &lt;#assign dlFileEntryService = serviceLocator.findService(&quot;com.liferay.document.library.kernel.service.DLFileEntryLocalService&quot;)&gt;&nbsp;</pre>


				<pre><span>26</span>    &lt;#assign journalServiceAPI = serviceLocator.findService(&quot;com.liferay.journal.service.JournalArticleLocalService&quot;) /&gt;&nbsp;</pre>


				<pre><span>27</span>&nbsp;</pre>


				<pre><span>28</span>&nbsp;</pre>


				<pre><span>29</span>  &lt;#assign ddmStructureKey = &quot;*&quot; &gt;&nbsp;</pre>


				<pre><span>30</span>  &lt;#assign structureKey1 = &quot;1365076&quot;&gt;  &lt;#-- ESPERIENZE --&gt;&nbsp;</pre>


				<pre><span>31</span>  &lt;#assign structureKey2 = &quot;1332941&quot;&gt; &lt;#-- PUNTO DI INTERESSE--&gt;&nbsp;</pre>


				<pre><span>32</span>  &lt;#assign structureKey3 = &quot;1332945&quot;&gt; &lt;#-- LOCALITA --&gt;&nbsp;</pre>


				<pre><span>33</span>  &lt;#assign structureKey4 = &quot;1332909&quot;&gt; &lt;#-- ITINEARIO --&gt;&nbsp;</pre>


				<pre><span>34</span>  &lt;#assign structureKey5 = &quot;1332933&quot;&gt; &lt;#-- EVENTO --&gt;&nbsp;</pre>


				<pre><span>35</span>  &lt;#assign structureKey6 = &quot;1332937&quot;&gt; &lt;#-- OFFERTA --&gt;&nbsp;</pre>


				<pre><span>36</span>  &lt;#assign exportVisitPiemonteCategory=&quot;6748880&quot;&gt;&nbsp;</pre>


				<pre><span>37</span>  &lt;#assign szLocDef=&quot;it_IT&quot;&gt;&nbsp;</pre>


				<pre><span>38</span>  &lt;#assign locDef=localeUtil.fromLanguageId(szLocDef)&gt;&nbsp;</pre>


				<pre><span>39</span>  &lt;#assign JSONFactoryUtil = staticUtil[&quot;com.liferay.portal.kernel.json.JSONFactoryUtil&quot;]&gt;&nbsp;</pre>


				<pre><span>40</span>  &lt;#assign serviceName = &quot;0:esatlcuneo&quot; &gt;&nbsp;</pre>


				<pre><span>41</span>  &lt;#assign serverName=&quot;&quot;&gt;&nbsp;</pre>


				<pre><span>42</span>  &lt;#assign srvGroupId = groupId?string &gt;&nbsp;</pre>


				<pre><span>43</span>  &lt;#assign numPag = 1 &gt;&nbsp;</pre>


				<pre><span>44</span>  &lt;#assign numItems = 100 &gt;&nbsp;</pre>


				<pre><span>45</span>  &lt;#assign szJsonParams = result.getNamespacedParameters().getString(&quot;jsonParams&quot;) &gt;    &nbsp;</pre>


				<pre><span>46</span>  &lt;#if szJsonParams != &quot;&quot;&gt;&nbsp;</pre>


				<pre><span>47</span>      &lt;#assign jsonParams = jsonFactoryUtil.createJSONObject(szJsonParams) &gt;&nbsp;</pre>


				<pre><span>48</span>  &lt;#else&gt;&nbsp;</pre>


				<pre><span>49</span>      &lt;#assign jsonParams = jsonFactoryUtil.createJSONObject() &gt;&nbsp;</pre>


				<pre><span>50</span>  &lt;/#if&gt;&nbsp;</pre>


				<pre><span>51</span>  &lt;#if jsonParams.getString(&quot;pag&quot;)?has_content&gt;&nbsp;</pre>


				<pre><span>52</span>      &lt;#assign numPag = jsonParams.getString(&quot;pag&quot;)?number &gt;&nbsp;</pre>


				<pre><span>53</span>  &lt;/#if&gt;&nbsp;</pre>


				<pre><span>54</span>&nbsp;</pre>


				<pre><span>55</span>  &lt;#if jsonParams.getString(&quot;num&quot;)?has_content&gt;&nbsp;</pre>


				<pre><span>56</span>  &lt;#assign numItems = jsonParams.getString(&quot;num&quot;)?number &gt;&nbsp;</pre>


				<pre><span>57</span>  &lt;/#if&gt;&nbsp;</pre>


				<pre><span>58</span>  &lt;#assign skipItems = (numPag-1)*numItems &gt;&nbsp;</pre>


				<pre><span>59</span>  &lt;#assign query = jsonParams.getString(&quot;qry&quot;) &gt;&nbsp;</pre>


				<pre><span>60</span>  &lt;#assign structureKey = jsonParams.getString(&quot;structureKey&quot;,structureKey1) &gt;&nbsp;</pre>


				<pre><span>61</span>  &lt;#assign p1 = exportVisitPiemonteCategory &gt;&nbsp;</pre>


				<pre><span>62</span>  &lt;#assign today=dateUtil.parseDate(.now?string(&#39;dd&#39;)+&quot;/&quot;+.now?string(&#39;MM&#39;)+&quot;/&quot;+.now?string(&#39;yyyy&#39;),locDef) &gt;&nbsp;</pre>


				<pre><span>63</span>  &lt;#assign todayLong=today?long&gt;&nbsp;</pre>


				<pre><span>64</span>  &lt;#assign szExpDate=.now?string(&#39;yyyy&#39;)+.now?string(&#39;MM&#39;)+.now?string(&#39;dd&#39;)+.now?string(&#39;hh&#39;) +.now?string(&#39;mm&#39;) +.now?string(&#39;ss&#39;) &gt;&nbsp;</pre>


				<pre><span>65</span>  &lt;#assign szToday=.now?string(&#39;yyyy&#39;)+&quot;-&quot;+.now?string(&#39;MM&#39;)+&quot;-&quot;+.now?string(&#39;dd&#39;) &gt;&nbsp;</pre>


				<pre><span>66</span>&nbsp;</pre>


				<pre><span>67</span>  &lt;#assign querySlr = &quot;head:true AND status:0 AND expirationDate:[${szExpDate} TO *]  AND ddmStructureKey:${structureKey}  AND groupId:${groupId?string}&quot;&gt;&nbsp;</pre>


				<pre><span>68</span>  &lt;#assign queryEs&gt;&nbsp;</pre>


				<pre><span>69</span>  {&nbsp;</pre>


				<pre><span>70</span> 	&quot;query&quot;: {&nbsp;</pre>


				<pre><span>71</span> 		&quot;bool&quot;: {&nbsp;</pre>


				<pre><span>72</span> 			&quot;must&quot;: [{&nbsp;</pre>


				<pre><span>73</span> 					&quot;query_string&quot;: {&nbsp;</pre>


				<pre><span>74</span> 						&quot;query&quot;: &quot;${getJsonString(querySlr)}&quot;&nbsp;</pre>


				<pre><span>75</span> 					}&nbsp;</pre>


				<pre><span>76</span> 				}, {&nbsp;</pre>


				<pre><span>77</span> 					&quot;query_string&quot;: {&nbsp;</pre>


				<pre><span>78</span> 						&quot;query&quot;: &quot;assetCategoryIds:${p1}&quot;&nbsp;</pre>


				<pre><span>79</span> 					}&nbsp;</pre>


				<pre><span>80</span> 				}&nbsp;</pre>


				<pre><span>81</span> 			]&nbsp;</pre>


				<pre><span>82</span> 		}&nbsp;</pre>


				<pre><span>83</span> 	}&nbsp;</pre>


				<pre><span>84</span> }&nbsp;</pre>


				<pre><span>85</span> &lt;/#assign&gt;&nbsp;</pre>


				<pre><span>86</span> &lt;#assign resultQry = SuggestoRecommenderServiceAPI.search(&quot;0&quot;,serviceName,&quot;&quot;,queryEs,sortOrder,skipItems,numItems)&gt;&nbsp;</pre>


				<pre><span>87</span> &lt;#if  ! resultQry?has_content&gt;&nbsp;</pre>


				<pre><span>88</span>    {&nbsp;</pre>


				<pre><span>89</span>    &quot;metadata&quot;:{&quot;numFound&quot;:0,&quot;start&quot;:0},&nbsp;</pre>


				<pre><span>90</span>    &quot;docs&quot;:[],&nbsp;</pre>


				<pre><span>91</span>    &quot;service&quot;:&quot;${serviceName}&quot;,&nbsp;</pre>


				<pre><span>92</span>    &quot;queryEs&quot;:&quot;${getJsonString(queryEs)}&quot;,&nbsp;</pre>


				<pre><span>93</span>    &quot;sortOrder2&quot;:&quot;${getJsonString(sortOrder)}&quot;&nbsp;</pre>


				<pre><span>94</span>    }&nbsp;</pre>


				<pre><span>95</span> &lt;#else&gt;&nbsp;</pre>


				<pre><span>96</span>    &lt;#assign numFound =resultQry.getJSONObject(&quot;data&quot;).getJSONObject(&quot;response&quot;).getString(&quot;numFound&quot;)?number&gt;&nbsp;</pre>


				<pre><span>97</span>    &lt;#assign start =resultQry.getJSONObject(&quot;data&quot;).getJSONObject(&quot;response&quot;).getString(&quot;start&quot;)?number&gt;&nbsp;</pre>


				<pre><span>98</span>    &lt;#if numFound gt 0 &amp;&amp; start lt numFound&gt;&nbsp;</pre>


				<pre><span>99</span>      &lt;@writeItems/&gt; &nbsp;</pre>


				<pre><span>100</span>&lt;#--       ${resultQry.toString()} --&gt;&nbsp;</pre>


				<pre><span>101</span>    &lt;#else&gt;  &nbsp;</pre>


				<pre><span>102</span>        {&nbsp;</pre>


				<pre><span>103</span>          &quot;metadata&quot;:{&quot;numFound&quot;:${numFound},&quot;start&quot;:${start}},&nbsp;</pre>


				<pre><span>104</span>          &quot;docs&quot;:[],&nbsp;</pre>


				<pre><span>105</span>          &quot;queryEs&quot;:&quot;${getJsonString(queryEs)}&quot;&nbsp;</pre>


				<pre><span>106</span>        }&nbsp;</pre>


				<pre><span>107</span>    &lt;/#if&gt;  &nbsp;</pre>


				<pre><span>108</span> &lt;/#if&gt;   &nbsp;</pre>


				<pre><span>109</span>&nbsp;</pre>


				<pre><span>110</span>&nbsp;</pre>


				<pre><span>111</span>&nbsp;</pre>


				<pre><span>112</span>&nbsp;</pre>


				<pre><span>113</span>  &lt;#macro writeItems&gt;&nbsp;</pre>


				<pre><span>114</span>      &lt;#assign start =resultQry.getJSONObject(&quot;data&quot;).getJSONObject(&quot;response&quot;).getString(&quot;start&quot;)&gt;&nbsp;</pre>


				<pre><span>115</span>      &lt;#assign items =resultQry.getJSONObject(&quot;data&quot;).getJSONObject(&quot;response&quot;).getJSONArray(&quot;docs&quot;)&gt;&nbsp;</pre>


				<pre><span>116</span>      {&nbsp;</pre>


				<pre><span>117</span>&lt;#--        &quot;metadata&quot;:{&quot;numFound&quot;:${numFound},&quot;start&quot;:${start},&quot;querySlr&quot;:&quot;${getJsonString(querySlr)}&quot;,&quot;c1&quot;:&quot;${c1}&quot;,&quot;orderByColumn1&quot;:&quot;${orderByColumn1}&quot;,&quot;orderByType1&quot;:&quot;${orderByType1}&quot;,&quot;fields&quot;:&quot;${fields}&quot;,  --&gt;&nbsp;</pre>


				<pre><span>118</span>        &quot;metadata&quot;:{&quot;numFound&quot;:${numFound},&quot;start&quot;:${start},&quot;queryEs&quot;:&quot;${getJsonString(queryEs)}&quot;}, &nbsp;</pre>


				<pre><span>119</span>        &quot;docs&quot;:[&nbsp;</pre>


				<pre><span>120</span>            &lt;#list 0..items.length()-1 as i&gt;&nbsp;</pre>


				<pre><span>121</span>            &lt;#assign doc = items.getJSONObject(i)&gt;&nbsp;</pre>


				<pre><span>122</span>            &lt;@jsonoutput /&gt; &nbsp;</pre>


				<pre><span>123</span>            &lt;#if i !=items.length()-1&gt;,&lt;/#if&gt;&nbsp;</pre>


				<pre><span>124</span>            &lt;/#list&gt;&nbsp;</pre>


				<pre><span>125</span>        ]&nbsp;</pre>


				<pre><span>126</span>      }&nbsp;</pre>


				<pre><span>127</span>  &lt;/#macro&gt;&nbsp;</pre>


				<pre><span>128</span>&nbsp;</pre>


				<pre><span>129</span>  &lt;#macro jsonoutput&gt;&nbsp;</pre>


				<pre><span>130</span>      &lt;#assign articleId=doc.getString(&quot;articleId&quot;)&gt;&nbsp;</pre>


				<pre><span>131</span>      &lt;#assign articleGroupId=doc.getString(&quot;groupId&quot;)?number&gt;&nbsp;</pre>


				<pre><span>132</span>      &lt;#assign jaarticle=journalServiceAPI.getArticle(groupId,articleId)&gt;&nbsp;</pre>


				<pre><span>133</span>      &lt;#assign xmlarticle=jaarticle.getContent()&gt;&nbsp;</pre>


				<pre><span>134</span>        &lt;#assign viewUrl = suggestoMkspAPI.getArticleUrl(articleGroupId,&quot;&quot;, articleId,locDef,locDef,&#39;/det&#39;)&gt;&nbsp;</pre>


				<pre><span>135</span>      &lt;#assign jsonArticle=JSONFactoryUtil.convertXMLtoJSONMLObject(xmlarticle)&gt;&nbsp;</pre>


				<pre><span>136</span>      {&nbsp;</pre>


				<pre><span>137</span>      &quot;localid&quot;:&quot;${articleGroupId?string}-${articleId}&quot;,&nbsp;</pre>


				<pre><span>138</span>      &quot;last_update&quot;:&quot;${jaarticle.getModifiedDate()?date?iso_utc}T${jaarticle.getModifiedDate()?time?iso_utc}&quot;,&nbsp;</pre>


				<pre><span>139</span>      &quot;autore&quot;:&quot;${jaarticle.getUserName()}&quot;,&nbsp;</pre>


				<pre><span>140</span>      &quot;canonical&quot;:&quot;https://www.visitcuneese.it/${viewUrl}&quot;,&nbsp;</pre>


				<pre><span>141</span>      &quot;assetCategoryIds&quot;:${doc.assetCategoryIds},&nbsp;</pre>


				<pre><span>142</span>      &quot;assetCategoryTitles_it_IT&quot;:${doc.assetCategoryTitles_it_IT},&nbsp;</pre>


				<pre><span>143</span>      &quot;content&quot;:${jsonArticle.toString()}&nbsp;</pre>


				<pre><span>144</span>      }&nbsp;</pre>


				<pre><span>145</span>  &lt;/#macro&gt;&nbsp;</pre>


				<pre><span>146</span>&nbsp;</pre>


				<pre><span>147</span>    &lt;#function getJsonString str&gt;&nbsp;</pre>


				<pre><span>148</span>    &lt;#return str?js_string?replace(&quot;\\&#39;&quot;, &quot;&#39;&quot;)?replace(&quot;\\&gt;&quot;,&quot;&gt;&quot;)&gt;&nbsp;</pre>


				<pre><span>149</span>  &lt;/#function&gt;&nbsp;</pre>


				<pre><span>150</span>&nbsp;</pre>


				<pre><span>151</span>  &lt;/#compress&gt;&nbsp;</pre>
		</div>
	</div>
</div>