Синтаксическая ошибка XML при обработке вывода JSON для фида атомов в веб-скрипте Alfresco

Я столкнулся с невероятно очень неприятной ошибкой. Это работало без проблем в пятницу, и я развернул его прошлой ночью, сегодня обнаружил, что измененная временная метка неправильно отформатирована для iso8690 (приложение, которое переваривает канал, очень строгое), поэтому я переформатировал его и создал банку для тестирования. Эта ошибка возникает:

05110009 Failed to execute script 'classpath*:alfresco/site-webscripts/org/foo/components/dashlets/recent-docs.get.js': 05110008 SyntaxError: illegally formed XML syntax (jar:file:/usr/share/tomcat6/shared/lib/recent-docs.jar!/alfresco/site-webscripts/org/foo/components/dashlets/recent-docs.get.js#20(eval)#1)

Поэтому я возвращаю изменения, и отображается точно такая же ошибка. Может ли кто-нибудь сказать мне, почему я получаю это? Я даже скопировал оригинальную банку обратно, та же ошибка.

Вот пример вывода JSON, сгенерированного веб-скриптом репо:

{
"documents": 
    [
        {
            "site": "swsdp",
            "nodeRef": "workspace://SpacesStore/1a0b110f-1e09-4ca2-b367-fe25e4964a4e",
            "id": "1a0b110f-1e09-4ca2-b367-fe25e4964a4e",
            "name": "Project Contract.pdf",
            "title": "Project Contract for Green Enery",
            "creator": "abeecher",
            "description": "Conract for the Green Energy project",
            "categories": [
                    ],
            "created": "15 Feb 2011 21:26:54 PM (UTC)",
            "modified": "14 Jun 2011 10:28:54 AM (UTC)"
        },
        {
            "site": "swsdp",
            "nodeRef": "workspace://SpacesStore/05dedd34-9d9d-48d9-9af6-c81b555541c9",
            "id": "05dedd34-9d9d-48d9-9af6-c81b555541c9",
            "name": "WebSiteReview.mp4",
            "title": "WebSiteReview.mp4",
            "creator": "abeecher",
            "description": "This is a video of the mock up to show the planned structure for the new web site.",
            "categories": [
                    ],
            "created": "08 Mar 2011 10:35:10 AM (UTC)",
            "modified": "08 Mar 2011 10:37:43 AM (UTC)"
        }
    ]
}

И поделиться материалом веб-скрипта

recent-docs.get.desc.xml

  <shortname>Recently Modified Documents</shortname>

  <description>Retrieve Recently Modified content for a site</description>

  <url>/components/recent-docs?site={site}</url>

  <arg>

    <shortname>site</shortname>

    <description><![CDATA[site name]]></description>

  </arg>

  <format default="html">argument</format>

  <authentication>user</authentication>

  <transaction>required</transaction>

  <cache>

    <neverCache>false</neverCache>

    <mustRevalidate/>

  </cache>

</webscript>

recent-docs.get.js

function main()

{

    for (var arg in args)

    {

      if (arg == "site")

      {

        model.site = args[arg];

      }

    }

        // call the repository to get recent documents

        var connector = remote.connect("alfresco"); 

        var json = connector.call("/recent-docs?site=" + escape(model.site));

        if (json.status == 200)

        {

                obj = eval("(" + json + ")");

                model.docs = obj["documents"];

        }

        else

        {

                obj = eval("(" + json + ")");

                obj.name = "Error";

                model.docs = obj;

        }



}



main();

recent-docs.get.atom.ftl

<feed xmlns="http://www.w3.org/2005/Atom">

  <generator version="${server.version}">Alfresco (${server.edition})</generator>

  <link rel="self" href="${absurl(url.full)?xml}" />

  <id>${absurl(url.full)?xml}</id>

  <title>Site: ${site}</title>

  <subtitle>Alfresco Recently Modified Documents</subtitle>  

  <updated>${xmldate(date)}</updated>

  <icon>${absurl(url.context)}/res/themes/default/images/app-logo-48.png</icon>

<#list docs as child>

  <entry xmlns='http://www.w3.org/2005/Atom'>

    <title>${child.name?html}</title>

    <link href="${absurl(url.context)}/page/document-details?nodeRef=${child.nodeRef}"/>

    <id>urn:uuid:${child.id}</id>

    <updated>${child.modified}</updated>

    <summary>

         ${msg("feed.uploaded", child.name, child.creator)}<br />

     <#if child.modifier?exists>${msg("feed.modified", child.modified, child.modifier)}<br /></#if>

     ${child.description!""}<br />

     <#if child.categories[0]?exists>

     ${msg("feed.categories")} <#list child.categories as category> ${category.name}<#if category_has_next>, </#if></#list></#if><br />

     </summary>

    <author> 

      <name>${child.creator}</name>

    </author> 

  </entry>

</#list>

</feed>

Я безуспешно пытался взломать это, пытаясь сделать разные вещи, у меня есть набор изменений, чтобы исправить шаблон атома, чтобы он был действительным документом атома, но мне нужно выяснить, почему появляется эта ошибка. Я думаю, это потому, что я не конвертирую все в строку в веб-скрипте репо (только время изменения/создания), но неясно, как мне его подготовить.

Обновить Я изменил шаблон атома для работы на стороне репозитория, и результат является действительным XML, так что, по крайней мере, это работает. Что касается общего доступа, я все еще вижу синтаксическую ошибку, которая вызывает проблемы, поскольку я планирую создать с ней дашлет.


person Ashex    schedule 11.06.2013    source источник
comment
Вы пытались получить xml-вывод FTL и запустить его через валидатор XML, чтобы проверить, действительно ли он правильный или нет?   -  person Gagravarr    schedule 11.06.2013
comment
Да, я раньше думал, что это правильно, но я не понимал, что это просто останавливается при первой ошибке (жалуется на кодирование). Я также написал шаблон html, который должен работать. Неважно, какой формат я использую, так как возникает одна и та же ошибка.   -  person Ashex    schedule 11.06.2013
comment
Я изменил шаблон атома для работы на стороне репо, и результат является допустимым XML, так что, по крайней мере, это работает. Что касается общего доступа, я все еще вижу синтаксическую ошибку, которая вызывает проблемы, поскольку я планирую создать с ней дашлет.   -  person Ashex    schedule 12.06.2013
comment
возможный дубликат Вызов веб-скрипта js из веб-скрипта Java в Alfresco   -  person Paul Sweatte    schedule 13.03.2014