<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Integrity error handling in web scripts in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231155#M184285</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Suppose that you have a custom model that defines an integrity constraint (eg you're testing that a file name fits the file name regexp). Suppose that you write a data web script (which takes json as input and outputs json as well) that lets you create nodes of your custom type. Now suppose that you want your web script to handle error cases gracefully, i.e. if the integrity constraint fails you want the script to return a 400 error code and push a nice explanatory message in the json return template. How would you go about doing this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm finding that at the web script level there is no way to get the integrity error, because apparently the integrity checker only runs when the transaction is committed… which occurs after the web script returns. This means that I get some nasty messages back from my script, like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"result" : "Node created",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"nodeRef":"workspace://SpacesStore/edfaddde-afd1-4e2f-9fdb-f8be85179c5a",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"name":"wrong? file: name!"&lt;BR /&gt;}&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "&lt;A href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&amp;lt;html xmlns="&lt;A href="http://www.w3.org/1999/xhtml" rel="nofollow noopener noreferrer"&gt;http://www.w3.org/1999/xhtml&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Web Script Status 500 - Internal Error&amp;lt;/title&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="/alfresco/css/base.css" type="text/css" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;img src="/alfresco/images/logo/AlfrescoLogo32.png" alt="Alfresco" /&amp;gt;&amp;lt;/td&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;span class="title"&amp;gt;Web Script Status 500 - Internal Error&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;The Web Script &amp;lt;a href="/alfresco/service/test/create?alf_ticket=TICKET_e3f29349013fcedc2c2a92f7e862b08c9a2c3f7d"&amp;gt;/alfresco/service/test/create&amp;lt;/a&amp;gt; has responded with a status of 500 - Internal Error.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;500 Description:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; An error inside the HTTP server which prevented it from fulfilling the request.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;nbsp;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Message:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Found 1 integrity violations:&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Etc. Also, the http status code is 200… which is &lt;/SPAN&gt;&lt;STRONG&gt;wrong&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note that the controller script does do something like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var node = companyhome.createNode(name, "my:customtype", props,&amp;nbsp;&amp;nbsp;&amp;nbsp;"cm:contains");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.node = node;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (error) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status.code = 500;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status.message="Unexpected error";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;model.error = error.message;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status.redirect=true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;But that doesn't help, since no exceptions are raised at this stage. I'm not very keen on writing a java-backed script and handling transactions manually, but right now I don't see what else I can do, other than pre-checking the regexp in javascript before invoking createNode (which would mean repeating myself; the integrity constraint at the model level should be sufficient in an ideal world).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: I'm running 3.0.1 Enterprise.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Sylvain.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 14 Aug 2009 14:01:49 GMT</pubDate>
    <dc:creator>schambon</dc:creator>
    <dc:date>2009-08-14T14:01:49Z</dc:date>
    <item>
      <title>Integrity error handling in web scripts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231155#M184285</link>
      <description>Hi all,Suppose that you have a custom model that defines an integrity constraint (eg you're testing that a file name fits the file name regexp). Suppose that you write a data web script (which takes json as input and outputs json as well) that lets you create nodes of your custom type. Now suppose t</description>
      <pubDate>Fri, 14 Aug 2009 14:01:49 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231155#M184285</guid>
      <dc:creator>schambon</dc:creator>
      <dc:date>2009-08-14T14:01:49Z</dc:date>
    </item>
    <item>
      <title>Re: Integrity error handling in web scripts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231156#M184286</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Integrity checks are performed when a transaction commits. To trigger these checks from within a webscript, you have to:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Ensure that the webscript itself is not a transaction (you can configure this in your desc.xml)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Create a Java-backed webscript&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. In your webscript, create a new transaction and attempt to commit it&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. Now, you can catch the error and process accordingly, possibly using your own custom 5xx error codes &amp;amp; ftl's&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Gluck,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rogier&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Sep 2009 06:40:01 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231156#M184286</guid>
      <dc:creator>rogier_oudshoor</dc:creator>
      <dc:date>2009-09-15T06:40:01Z</dc:date>
    </item>
    <item>
      <title>Re: Integrity error handling in web scripts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231157#M184287</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Integrity checks are performed when a transaction commits. To trigger these checks from within a webscript, you have to:&lt;BR /&gt;1. Ensure that the webscript itself is not a transaction (you can configure this in your desc.xml)&lt;BR /&gt;2. Create a Java-backed webscript&lt;BR /&gt;3. In your webscript, create a new transaction and attempt to commit it&lt;BR /&gt;4. Now, you can catch the error and process accordingly, possibly using your own custom 5xx error codes &amp;amp; ftl's&lt;BR /&gt;&lt;BR /&gt;Gluck,&lt;BR /&gt;&lt;BR /&gt;Rogier&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Can you please provide some example for the transaction and attempt to commit step?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Apr 2010 21:43:39 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231157#M184287</guid>
      <dc:creator>hyperation</dc:creator>
      <dc:date>2010-04-29T21:43:39Z</dc:date>
    </item>
    <item>
      <title>Re: Integrity error handling in web scripts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231158#M184288</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Can you please provide some example for the transaction and attempt to commit step?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Quoting from memory, it should be something like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;UserTransaction tx = transactionService.getUserTransaction(false);&lt;BR /&gt;tx.begin();&lt;BR /&gt;&lt;BR /&gt;// do something&lt;BR /&gt;&lt;BR /&gt;try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; tx.commit();&lt;BR /&gt;} catch (RollbackException re) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // something bad has happened and the transaction has been rolled back&lt;BR /&gt;&amp;nbsp;&amp;nbsp; // notify the client&lt;BR /&gt;}&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope that helps,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Sylvain.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 30 Apr 2010 07:26:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231158#M184288</guid>
      <dc:creator>schambon</dc:creator>
      <dc:date>2010-04-30T07:26:30Z</dc:date>
    </item>
    <item>
      <title>Re: Integrity error handling in web scripts</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231159#M184289</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks schambon, it works!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 03 May 2010 20:53:03 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/integrity-error-handling-in-web-scripts/m-p/231159#M184289</guid>
      <dc:creator>hyperation</dc:creator>
      <dc:date>2010-05-03T20:53:03Z</dc:date>
    </item>
  </channel>
</rss>

