Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-11618

Prototype 1.7 is missing the instance 'toJSON' method

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      When the html5-notifier plugin is enabled, you cannot save a job with more than one build step. To reproduce, install the plugin and add a new job with two windows batch file or shell script build steps. If only one is created, it will save, but if two are created, you will see an error like the following:

      Failed to parse form data. Please report this problem as a bug
      JSON={"":"","builder":"\"[

      {\"command\":\"bar\",\"stapler-class\":\"hudson.tasks.Shell\",\"kind\":\"hudson.tasks.Shell\"}

      ,

      {\"command\":\"cd foo\",\"stapler-class\":\"hudson.tasks.Shell\",\"kind\":\"hudson.tasks.Shell\"}

      ]\"","description":"","hasSlaveAffinity":

      {"assignedLabelString":"windows&&expander"}

      ,"name":"debug_job2","properties":{"hudson-model-ParametersDefinitionProperty":{},"hudson-plugins-batch_task-BatchTaskProperty":{},"stapler-class-bag":"true"},"scm":{"value":"3"}}

      net.sf.json.JSONException: A JSONArray text must start with '[' at character 1 of "[

      {"command":"cd bar","stapler-class":"hudson.tasks.Shell","kind":"hudson.tasks.Shell"}

      ,

      {"command":"cd foo","stapler-class":"hudson.tasks.Shell","kind":"hudson.tasks.Shell"}

      ]"
      at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:512)
      at net.sf.json.JSONArray._fromJSONTokener(JSONArray.java:903)
      at net.sf.json.JSONArray._fromString(JSONArray.java:983)
      at net.sf.json.JSONArray.fromObject(JSONArray.java:141)
      at net.sf.json.JSONArray.fromObject(JSONArray.java:120)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:863)
      at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:853)
      at hudson.util.DescribableList.rebuildHetero(DescribableList.java:185)
      at hudson.model.Project.submit(Project.java:197)
      at hudson.model.Job.doConfigSubmit(Job.java:966)
      at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:643)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:616)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:282)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:149)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:88)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:104)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:234)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:561)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:646)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:477)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:159)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
      at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:95)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:87)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
      at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:61)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
      at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
      at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
      at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
      at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
      at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
      at java.lang.Thread.run(Thread.java:636)

      I think the problem is the \" at the start that's inserted there...

      Workaround is to uninstall the plugin.

        Attachments

          Issue Links

            Activity

            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Kohsuke Kawaguchi
            Path:
            war/src/main/webapp/scripts/prototype.js
            http://jenkins-ci.org/commit/jenkins/34e8117a64ce94a7e5da35be3bc3b077de16e1b2
            Log:
            JENKINS-11618 Adding back the 'toJSON' instance method.

            This change, in parallel to a fix in stapler bind.js, would maximize the
            backward compatibility.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: war/src/main/webapp/scripts/prototype.js http://jenkins-ci.org/commit/jenkins/34e8117a64ce94a7e5da35be3bc3b077de16e1b2 Log: JENKINS-11618 Adding back the 'toJSON' instance method. This change, in parallel to a fix in stapler bind.js, would maximize the backward compatibility.
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #1554
            JENKINS-11618 backporting the fix here. (Revision 794cc76676863233f4dd1897c4b2ef7810a927bd)
            JENKINS-11618 Adding back the 'toJSON' instance method. (Revision 34e8117a64ce94a7e5da35be3bc3b077de16e1b2)

            Result = SUCCESS
            Kohsuke Kawaguchi : 794cc76676863233f4dd1897c4b2ef7810a927bd
            Files :

            • war/src/main/webapp/scripts/prototype.js

            Kohsuke Kawaguchi : 34e8117a64ce94a7e5da35be3bc3b077de16e1b2
            Files :

            • war/src/main/webapp/scripts/prototype.js
            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #1554 JENKINS-11618 backporting the fix here. (Revision 794cc76676863233f4dd1897c4b2ef7810a927bd) JENKINS-11618 Adding back the 'toJSON' instance method. (Revision 34e8117a64ce94a7e5da35be3bc3b077de16e1b2) Result = SUCCESS Kohsuke Kawaguchi : 794cc76676863233f4dd1897c4b2ef7810a927bd Files : war/src/main/webapp/scripts/prototype.js Kohsuke Kawaguchi : 34e8117a64ce94a7e5da35be3bc3b077de16e1b2 Files : war/src/main/webapp/scripts/prototype.js
            Hide
            ohtake_tomohiro OHTAKE Tomohiro added a comment -

            FYI:
            As 1.454 was released to fix too restrictive HTML sanitization rules,
            1.455 will be the first version which bundles prototype 1.7.

            Show
            ohtake_tomohiro OHTAKE Tomohiro added a comment - FYI: As 1.454 was released to fix too restrictive HTML sanitization rules, 1.455 will be the first version which bundles prototype 1.7.
            Hide
            orrc Christopher Orr added a comment -

            JENKINS-13322 seems to relate to the use of prototype-1.7.js in this plugin.

            Any ideas? I tested on Jenkins 1.458.

            Show
            orrc Christopher Orr added a comment - JENKINS-13322 seems to relate to the use of prototype-1.7.js in this plugin. Any ideas? I tested on Jenkins 1.458.
            Hide
            jieryn jieryn added a comment -

            Please try with the latest 1.2 version of the plugin (released today) and open a new defect if it recurs.

            Show
            jieryn jieryn added a comment - Please try with the latest 1.2 version of the plugin (released today) and open a new defect if it recurs.

              People

              Assignee:
              jieryn jieryn
              Reporter:
              djs Dan Savilonis
              Votes:
              3 Vote for this issue
              Watchers:
              6 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: