Autocomplete update sends invalid XML response in Orbeon 3.8 CE

71 views
Skip to first unread message

Jens Thorsten Stumpf

unread,
Mar 31, 2015, 8:33:01 AM3/31/15
to orb...@googlegroups.com
Hi there,

I'm having an issue with the fr:autocomplete under Orbeon 3.8-CE.

We're using autocompletes to suggest a list of train stations to the form users:

    <fr:autocomplete ref="station/selected" resource="http://prototype.local/list?type=station&amp;items=15&amp;query={$fr-search-value}" max-results-displayed="15" f:url-norewrite="true"  show-full-itemset-dropdown="false">
        <xforms:itemset nodeset="//item">
            <xforms:label ref="text()"/>
            <xforms:value ref="@id"/>
        </xforms:itemset>
    </fr:autocomplete>


As soon as the autocomplete is becoming relevant (before it is hidden an the referenced node is not existent) an orbeon error dialog is raised in the browser:

An error has occurred

You may want to try one of the following:
...
Exception in client-side code.

Message: An invalid or illegal string was specified
File:
Line number: 113

On the console I can find something like this:

JavaScript error
orbeon-...8be7.js (line 113)
SyntaxError: An invalid or illegal string was specified

...ss];if(widget.extending!=null&&widget.appliesToControl(control)){return widget;}...

which is pointing to an error in the Yahoo YUI framework.
Actually I think this isn't the error itself but the first part that is relying on the place where the error is located.

Looking at the delivered Orbeon XForms
update message I find a piece of source code which doesn't seem to be valid to me (marked in red):

<xxf:event-response xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xxf:action>
<xxf:control-values>
<xxf:control id="xf-9≡xf-126" relevant="true"></xxf:control>
<xxf:control id="xf-9≡xf-126≡component-inner-group" relevant="true"></xxf:control>
<xxf:control id="xf-9≡xf-126≡search" relevant="true"></xxf:control>
<xxf:control id="xf-9≡xf-126≡xf-193" relevant="true"></xxf:control>
<xxf:control id="xf-9≡xf-126≡show-suggestions-button" label="<img alt="" src="/orbeon/xbl/orbeon/autocomplete/down-arrow.png">" relevant="true"></xxf:control>
<xxf:control id="xf-9≡xf-126≡itemset" relevant="true">true</xxf:control>
<xxf:control id="xf-9≡xf-126≡xf-197" relevant="true">15</xxf:control>
<xxf:control id="xf-9≡xf-126≡select1" relevant="true"></xxf:control>
<xxf:itemset id="xf-9≡xf-126≡select1">[{"label":"","value":""},{"label":"","value":""}]</xxf:itemset>
...

Obviously in the update a XML element is delivered within an attribute. I think this is the real reason for the error.
Can anybody shed light on the fact, why this is happening or how to avoid it?

The used Orbeon is build without any faults automatically or repoted issues by a Jenkins CI/CD system based on the 3.8 CE github branch.

Thank you very much for any advice in advance,

JT

Alessandro Vernet

unread,
Mar 31, 2015, 1:57:23 PM3/31/15
to orb...@googlegroups.com
Hi Jens,

This looks like a bug; would you be able to create a simple XForms file that we could  use to reproduce the problem, and check if it is indeed a bug?

Alex

--
You received this message because you are subscribed to the Google Groups "Orbeon Forms" group.
To unsubscribe from this group and stop receiving emails from it, send an email to orbeon+un...@googlegroups.com.
To post to this group, send email to orb...@googlegroups.com.

Jens Thorsten Stumpf

unread,
Apr 7, 2015, 6:27:41 AM4/7/15
to orb...@googlegroups.com
Hi Alex!

Actually -while trying to extract the example- I found out, that the problem occurs only if I use my modified "selfbuild" version - the modification takes the "original" war, extracts it's contents, adds my own apps and repacks it with the ant "war" task.
The problem seems to prevent the correct (see above) icon delivery for the autocomplete but doesn't damage anything else (the server is working fine for any other input).

Can you imagine what the problem is within the process of inflate, add XForms apps, pack?
Why does anything else work flawlessly?

Thanks a lot,

Jens

Alessandro Vernet

unread,
Apr 7, 2015, 9:10:00 PM4/7/15
to orb...@googlegroups.com
Hi Jens,

Yes, indeed, this is intriguing. But what "icon delivery" are you referring to? Also, maybe you can uncompress both your war and the original war in 2 directories, and do a diff between the 2, to see if you noticed any difference other than the one you injected.

Alex

Jens Thorsten Stumpf

unread,
Apr 8, 2015, 8:26:28 AM4/8/15
to orb...@googlegroups.com
Hi Alex!

So the following is the output of diff for the two wars:

Only in my/: META-INF
Only in my/WEB-INF/resources/apps: agency
Only in my/WEB-INF/resources/apps: order
Only in my/WEB-INF/resources/apps: ra
Only in my/WEB-INF/resources/apps: test
diff -ryw -W 225 --suppress-common-lines my/WEB-INF/resources/config/log4j.xml orig/WEB-INF/resources/config/log4j.xml
         to be dealing with multiple files generated by the RollingFileAppender.                              |          to be dealing with multiple files generated by the RollingFileAppender. -->
         See: http://logging.apache.org/log4j/docs/api/org/apache/log4j/FileAppender.html -->                 <
        <param name="File" value="/var/log/tomcat7/orbeon-test.log"/>                                         |         <param name="File" value="../logs/orbeon.log"/>
         is created and the file used for logging is truncated.                                               |          is created and the file used for logging is truncated. -->
         See: http://logging.apache.org/log4j/docs/api/org/apache/log4j/RollingFileAppender.html -->          <
        <param name="File" value="/var/log/tomcat7/orbeon-test.log"/>                                         |         <param name="File" value="../logs/orbeon.log"/>
                                                                                                              >     <category name="org.orbeon.filter.limiter">
                                                                                                              >         <priority value="debug"/>
                                                                                                              >     </category>
                                                                                                              >
    <category name="org.orbeon.oxf.webapp.OPSSessionListener">                                                |     <category name="org.orbeon.oxf.webapp.OrbeonSessionListener">
    <category name="org.orbeon.oxf.webapp.OPSServletContextListener">                                         |     <category name="org.orbeon.oxf.webapp.OrbeonServletContextListener">
diff -ryw -W 225 --suppress-common-lines my/WEB-INF/resources/config/not-found.xhtml orig/WEB-INF/resources/config/not-found.xhtml
        <title>XForms Service</title>                                                                      |         <title>Orbeon Forms - Page Not Found</title>
        <meta http-equiv="refresh" content="10;URL='/../../'" />                                              <
        <h1>XForms Service - Seite nicht verfügbar</h1>                                                    |         <h1>Orbeon Forms - Page Not Found</h1>
            Leider steht die gewählte Seite nicht zur Verfügung.                                              |             We are sorry, but the resource you have requested is not available on this server.
        </p>                                                                                                  <
        <p>                                                                                                   <
            Wir leiten Sie in zehn Sekunden weiter auf unsere <a href="/../../">Homepage</a>...               <
Only in my/WEB-INF/resources/config: orbeon-public.xml
Only in my/WEB-INF/resources/config: properties-local-dev.xml
Only in my/WEB-INF/resources/config: properties-local.xml
Only in my/WEB-INF/resources/config: theme-my-embeddable.xsl
Only in my/WEB-INF/resources/config: theme-my.xsl

I can't see any significant differences that should have implications.
But nevertheless, here are the properties:

This is the properties-local.xml used:
<properties xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oxf="http://www.orbeon.com/oxf/processors" xmlns:xi="http://www.w3.org/2001/XInclude">

    <property as="xs:boolean" name="oxf.xforms.use-aria" value="true"/>

    <!-- Encryption properties -->
    <property as="xs:string" name="oxf.crypto.password" value="***"/>
    <property as="xs:boolean" name="oxf.xforms.encrypt-item-values" value="false"/>

    <!-- Global properties -->
    <property as="xs:anyURI" name="oxf.log4j-config" value="oxf:/config/log4j.xml"/>
    <property as="xs:integer" name="oxf.cache.size" value="1000"/>
    <property as="xs:integer" name="oxf.cache.xpath.size" value="5000"/>

    <!-- Epilogue configuration -->
    <!--<property as="xs:anyURI" name="oxf.epilogue.theme.embeddable" value="oxf:/config/theme-my-embeddable.xsl"/>-->
    <property as="xs:anyURI" name="oxf.epilogue.theme.renderer" value="oxf:/config/theme-plain.xsl"/>
    <property as="xs:boolean" name="oxf.epilogue.output-xhtml" value="true"/>
    <property as="xs:boolean" name="oxf.epilogue.embeddable" value="false"/>

    <!-- Processor-specific properties -->
    <property as="xs:integer" processor-name="oxf:request" name="max-upload-size" value="1000000"/>
    <property as="xs:integer" processor-name="oxf:request" name="max-upload-memory-size" value="10240"/>

    <!-- Processor-specific properties -->
    <property as="xs:boolean" name="oxf.xforms.xforms11-switch" value="true"/>
    <property as="xs:string" name="oxf.xforms.order" value="label control help alert hint"/>
    <!--<property as="xs:anyURI" name="oxf.epilogue.theme" value="oxf:/config/theme-my.xsl"/>-->

    <property as="xs:NMTOKENS" name="oxf.xforms.logging.debug" value="model model-serialized-instance submission submission-details submission-body control event action document analysis analysis-xbl-tree server server-body html html-static-state resources state resolver utils"/>

</properties>


This is the properties-local-dev.xml used:
<properties xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oxf="http://www.orbeon.com/oxf/processors" xmlns:xi="http://www.w3.org/2001/XInclude">
<properties xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oxf="http://www.orbeon.com/oxf/processors" xmlns:xi="http://www.w3.org/2001/XInclude">

    <property as="xs:boolean" name="oxf.show-version" value="true"/>
    <property as="xs:boolean" name="oxf.http.exceptions" value="true"/>

    <property as="xs:string" processor-name="oxf:builtin-saxon" name="location-mode" value="smart"/>
    <property as="xs:string" processor-name="oxf:unsafe-builtin-saxon" name="location-mode" value="smart"/>

    <property as="xs:string" name="oxf.xforms.location-mode" value="smart"/>

    <property as="xs:boolean" name="oxf.xforms.minimal-resources" value="false"/>
    <property as="xs:boolean" name="oxf.xforms.combine-resources" value="false"/>
    <property as="xs:boolean" name="oxf.xforms.resources.encode-version" value="false"/>
    <property as="xs:integer" name="oxf.xforms.show-recoverable-errors" value="10"/>

</properties>


This is the orbeon-public.xml used:
<public-key>MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZp RV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fn xqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuE C/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJ FnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImo g9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAPYZzfKpHE/oX8nuflYegHP3WDwzLtppKqNw VUE5BelKCp9j/YAtDotkN+cE7eSgi/6qV/lnGkfjkn0pxxLAXr6JhnilFKTZAH0JJPG63CR/FutH iZ+A4j72U1JgILcBg0pUjuNCqh+DKNC+hM1sKUetkHqOTW0y8+XWOb9aN8qf</public-key>



Do you run any special tasks before publishing your CE-war-File? Which version of ant and which runtime environment do you use?
Are there any special variables/environment variables set on building the war?

The following are the definitions of the ant tasks performed by us:

    <target name="init" description="Initial operations: delete old build, set path etc.">
        <pathconvert property="build.war" refid="war-file" />
        <delete dir="${build.dir}" verbose="true" includeemptydirs="true" failonerror="false" />
    </target>

    <target name="deploy.repack" depends="init" description="build steps for modified Orbeon Forms WAR">
        <unzip dest="${build.dir}" src="${build.war}" overwrite="true" />
        <antcall target="inject" />
        <!--<zip zipfile="${dist.dir}/orbeon.war" basedir="${build.dir}" compress="true" update="false" />-->
        <war destfile="${dist.dir}/orbeon.war" basedir="${build.dir}" compress="true" update="false" />
        <antcall target="deploy" />
    </target>

    <target name="inject" description="Add own apps to Orbeon Forms WAR">
        <copy todir="${build.dir}" overwrite="true">
            <fileset dir="${source.dir}" includes="**" />
        </copy>
    </target>

    <target name="deploy" depends="create.properties.local" description="Takes care of the deployment e.g. local deployments">
        <antcall target="deploy.local" />
        <antcall target="deploy.jenkins" />
    </target>

    <target name="deploy.jenkins" if="env.JENKINS_HOME" description="Deployment on jenkins deployment server">
        <echo message="Deployment is done by jenkins" level="info" />
    </target>

    <target name="deploy.local" if="deploy.local.dir" unless="env.JENKINS_HOME" description="Deploys the educt locally">
        <echo message="Deploy locally to ${deploy.local.dir}" level="info" />
        <copy file="${dist.dir}/orbeon.war" todir="${deploy.local.dir}" verbose="true" overwrite="true" force="true" />
    </target>


With "
icon delivery" I refer to the line I suspected to be erroneous:

    <xxf:control id="xf-9≡xf-126≡show-suggestions-button" label="<img alt="" src="/orbeon/xbl/orbeon/autocomplete/down-arrow.png">" relevant="true"></xxf:control>
(For details see my first message).

I skip adding the isolated test case because the test case is working fine with the war provided on the Orbeon download page (https://github.com/orbeon/orbeon-forms/releases/download/tag-release-4.8-ce/orbeon-4.8.0.201501090026-CE.zip). Though, if u like to, I can send you the example in a private message together with the parameters to query our backend services or the modified war-File.
Can you imagine any other check/verfification?

Any help is appreciated.

Regards,

Jens

Alessandro Vernet

unread,
Apr 10, 2015, 3:44:26 PM4/10/15
to orb...@googlegroups.com
Hi Jens,

About the "icon delivery", that label is correct. The value of the
`label` attribute is interpreted as HTML, and in this case it is an
image, which is fine.

About the issue with your updated war but not the original, maybe some
property is causing the problem? I would take your war, reproduce the
problem, and progressively remove changes all the way to making it
identical to the standard war, in order to pinpoint what change is
causing the issue.

Alex

On Wed, Apr 8, 2015 at 5:26 AM, Jens Thorsten Stumpf

Jens Thorsten Stumpf

unread,
May 19, 2015, 12:21:40 PM5/19/15
to orb...@googlegroups.com
Sorry for the long delay:

I found the properties item which is causing the problem:

    <property as="xs:boolean" name="oxf.epilogue.output-xhtml" value="true"/>

As soon as I enable it the autocomplete does throw an error.

Is it a bug, is the property somehow wrong/depricated or is the error somehow sensible?

Regards,

Jens

Erik Bruchez

unread,
May 19, 2015, 1:55:36 PM5/19/15
to orb...@googlegroups.com
Jens,

To clarify this thread, you are talking about 4.8, NOT 3.8.

One reason is that we haven't tested anything related to XHTML output for a
very long time! Do you need XHTML, or can you live with HTML?

-Erik

--
View this message in context: http://discuss.orbeon.com/Autocomplete-update-sends-invalid-XML-response-in-Orbeon-3-8-CE-tp4659733p4659954.html
Sent from the Orbeon Forms community mailing list mailing list archive at Nabble.com.

Jens Thorsten Stumpf

unread,
May 19, 2015, 2:48:35 PM5/19/15
to orb...@googlegroups.com

You're right, I'm talking about Orbeon 4.8.

Actually the form in question is embedded in an XHTML context and on some of our websites (which are not updated in the moment) the initial forms are delivered within the regular XHTML page.

So we can live with that for a while or might even get around that but it is going to be complicated.

Regards and thank you very much for your support in tracking down the problem,

Jens

--
You received this message because you are subscribed to a topic in the Google Groups "Orbeon Forms" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/orbeon/CA_rpHAPq8g/unsubscribe.
To unsubscribe from this group and all its topics, send an email to orbeon+un...@googlegroups.com.

Alessandro Vernet

unread,
May 22, 2015, 6:38:18 PM5/22/15
to orb...@googlegroups.com
Hi Jens,

Maybe the autocomplete bug with XHTML output isn't hard to fix, but going forward,  given that the XHTML output gets close to no use AFAIK, I think it would make more sense for us to deprecate it. If you, or someone else reading this, see that as a big problem, please let us know.

Alex

--
You received this message because you are subscribed to the Google Groups "Orbeon Forms" group.
To unsubscribe from this group and stop receiving emails from it, send an email to orbeon+un...@googlegroups.com.

Jens Thorsten Stumpf

unread,
May 23, 2015, 2:28:11 AM5/23/15
to orb...@googlegroups.com

Well, that's what I tried to say:

If I don't misunderstand the meaning of "outputting HTML instead of XHTML" it is going to be a problem (a problem as in producing invalid/not well formed pages) for us.

For some technical limitations of other software systems I can't explain in detail we are bound to XHTML.
There are several errors in the delivered page if we inject HTML instead of XHTML.

Some of our XHTML pages include an embedded "initial page state" fragment of an Orbeon XForms form.
We would have to do some really really dirty and nasty hacks to fix that.

Regards,

Jens

Alessandro Vernet

unread,
May 28, 2015, 10:10:51 PM5/28/15
to orb...@googlegroups.com
Hi Jens,

OK, got it. So, let's see what we can do about it! I tried but failed to reproduce the issue you're seeing with the autocomplete. I added the property <property as="xs:boolean" name="oxf.epilogue.output-xhtml" value="true"/>, ran the example at https://gist.github.com/avernet/8791e4c549f8bc2a50d2, but didn't see any problem.

Is this example working for you as well? If it is, and but your form is having an issue with the autocomplete, would you be able to share with us a minimal example that we can run here to reproduce the problem you're seeing?

Alex
Reply all
Reply to author
Forward
0 new messages