IN2P3-Forge: Issueshttps://forge.in2p3.fr/https://forge.in2p3.fr/favicon.ico?16780521162021-03-29T12:03:34ZIN2P3-Forge
Redmine PyROS - Task #44388 (New): (GF2) SOURCE CODE MANAGEMENT (GITLAB)https://forge.in2p3.fr/issues/443882021-03-29T12:03:34ZPallier EtiennePyROS - Task #44356 (New): tester la nouvelle grammaire INDI sur un telescopehttps://forge.in2p3.fr/issues/443562021-03-25T17:38:50ZPallier Etienneoperations-portal-users - Feature #35045 (New): Tasks for the releasehttps://forge.in2p3.fr/issues/350452018-09-20T10:44:27ZL'Orphelin Cyrilcyril.lorphelin@cc.in2p3.fr
<p>With the new dashboard several tasks need to be performed .</p>
<ul>
<li>upgrade the schema</li>
<li>add tables</li>
</ul> Lavoisier - Bug #33857 (New): post-processors namespace mapping must be defined in viewhttps://forge.in2p3.fr/issues/338572018-06-18T13:29:47ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>It should be defined on element <processors>:<br /><pre>
<processors-list xmlns="http://software.in2p3.fr/lavoisier/application.xsd">
<processors xmlns:e="http://software.in2p3.fr/lavoisier/entries.xsd">
<element>
<element-create>new_element('e:truc')</element-create>
</element>
</processors>
</processors-list>
</pre></p> Lavoisier - Feature #33350 (New): add a XPath function multireplace()https://forge.in2p3.fr/issues/333502018-05-31T15:49:48ZReynaud SylvainSylvain.Reynaud@in2p3.fr
This function would support a variable number of arguments:
<ul>
<li>string: the input string</li>
<li>search: the substring to replace</li>
<li>replace: the replacement string for the first occurence of the search string</li>
<li>replace: the replacement string for the second occurence of the search string</li>
<li>...</li>
<li>replace: the replacement string for the Nth occurence of the search string</li>
</ul> Lavoisier - Feature #32928 (New): support enumeration in route.propertieshttps://forge.in2p3.fr/issues/329282018-05-18T14:23:38ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>{tenant:value1|value2} = tenant/{tenant}</p> Lavoisier - Feature #30741 (New): add research button on web sitehttps://forge.in2p3.fr/issues/307412018-04-04T10:53:55ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>with a javascript that automatically add "site:http://software.in2p3.fr/lavoisier" to the query, and send it to Google</p> Lavoisier - Feature #27576 (New): add a parameter "priority" on WhenCreatedTriggerhttps://forge.in2p3.fr/issues/275762018-02-02T15:18:04ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>WhenCreatedTrigger with the same priority will be executed simultaneously.<br />WhenCreatedTrigger with different priorities will be executed in order.</p> Lavoisier - Feature #27570 (New): NotifiedTrigger should bypass attribute @ignore-duringhttps://forge.in2p3.fr/issues/275702018-02-02T15:04:21ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #26907 (New): implement XPath function format-number()https://forge.in2p3.fr/issues/269072018-01-10T15:18:38ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p><ins>example</ins>: format-number(3.14, '##')</p> operations-portal-users - Bug #23257 (New): Downtime notification admin pagehttps://forge.in2p3.fr/issues/232572017-10-25T15:56:44ZL'Orphelin Cyrilcyril.lorphelin@cc.in2p3.fr
<p>The admin page is listing the list of notifications .<br />This part is working but when you want to edit one entry the load of the different rules is not working properly.<br />This part is not visible by users but it should be fixed.</p> Lavoisier - Bug #20738 (New): Stacktracehttps://forge.in2p3.fr/issues/207382017-08-30T10:39:18ZLavoisier Api
<p>Build Version: 2.1.2-SNAPSHOT<br />Build Date: Thu Apr 21 07:12:14 UTC 2016<br />Author: lavoisier<br />Description: Describe the context of the problem here...<br />Stack Trace: fr.in2p3.lavoisier.interfaces.error.AdaptorException: Exception raised for view 'VAPOR_ComputingShare' [Adaptor raised exception -- javax.naming.CommunicationException: connection closed [Root exception is java.io.IOException: connection closed]]<br /> at fr.in2p3.lavoisier.chaining.link.connector.SAXConnectorLink.generate(SAXConnectorLink.java:26)<br /> at fr.in2p3.lavoisier.chaining.Chain.generate(Chain.java:120)<br /> at fr.in2p3.lavoisier.chaining.Chain.writeToCache(Chain.java:109)<br /> at fr.in2p3.lavoisier.engine.view.ViewCached.refresh(ViewCached.java:151)<br /> at fr.in2p3.lavoisier.engine.task.CacheRefreshTask.run(CacheRefreshTask.java:22)<br /> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)<br /> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)<br /> at java.lang.Thread.run(Thread.java:748)<br />Caused by: javax.naming.CommunicationException: connection closed [Root exception is java.io.IOException: connection closed]<br /> at com.sun.jndi.ldap.LdapCtx.getSearchReply(LdapCtx.java:1920)<br /> at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.getNextBatch(AbstractLdapNamingEnumeration.java:130)<br /> at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.hasMoreImpl(AbstractLdapNamingEnumeration.java:217)<br /> at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.hasMore(AbstractLdapNamingEnumeration.java:189)<br /> at fr.in2p3.lavoisier.connector.LDAPConnector.writeToContentHandler(LDAPConnector.java:88)<br /> at fr.in2p3.lavoisier.chaining.link.connector.SAXConnectorLink.generate(SAXConnectorLink.java:24)<br /> ... 7 more<br />Caused by: java.io.IOException: connection closed<br /> at com.sun.jndi.ldap.LdapClient.ensureOpen(LdapClient.java:1592)<br /> at com.sun.jndi.ldap.LdapClient.getSearchReply(LdapClient.java:598)<br /> at com.sun.jndi.ldap.LdapCtx.getSearchReply(LdapCtx.java:1918)<br /> ... 12 more</p> Lavoisier - Bug #11100 (New): <element-ignore> should not remove the namespace declaration (xmlns)https://forge.in2p3.fr/issues/111002015-10-16T13:48:10ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p><ins>note</ins>: when a node is remove, then its namespace declarations are printed out to its first childs instead (by class OutputStreamContentHandler), but after that the namespace context is cleared, so the namespace declarations are missing in the following siblings.</p> TReqS - Bug #9736 (Suspended): hpss_SetLoginCred + hpss_PurgeLoginCredhttps://forge.in2p3.fr/issues/97362015-04-21T09:40:04ZChambon Bernard
<p>Doing some tests, encountered the following behaviour</p>
<ul>
<li>Case calling hpss_PurgeLoginCred either case failure<br />With user root123 fail (=PASS), then with user root <strong>hanging on hpss_SetLoginCred</strong> (=FAILURE)</li>
</ul>
<pre>
TRACE HPSSConnection - Login for user root123 ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root123, hpss_SetLoginCred return -1
TRACE HPSSConnection - Logout ...
TRACE HPSSConnection - Logout done
Calling HPSSConnection
TRACE HPSSConnection - logger already configured ...
TRACE HPSSConnection - Login for user root ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
^C
Here hpss_PurgeLoginCred hang forever !
</pre>
<ul>
<li>Case calling hpss_PurgeLoginCred only if hpss_SetLoginCred succeed <br />With user root123 fail (=PASS), then with <strong>user root fail</strong> (= FAILURE)</li>
</ul>
<pre>
Calling HPSSConnection
TRACE HPSSConnection - Login for user root123 ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root123, hpss_SetLoginCred return -1
Calling HPSSConnection
Exception catched : Authentication failed for user root123
TRACE HPSSConnection - logger already configured ...
TRACE HPSSConnection - Login for user root ...
TRACE HPSSConnection - Using authentication method 'unix'
ERROR HPSSConnection - Just before hpss_SetLoginCred
ERROR HPSSConnection - Just after hpss_SetLoginCred
ERROR HPSSConnection - Authentication failed for user root, hpss_SetLoginCred return -22
Exception catched : Authentication failed for user root
</pre> Lavoisier - Feature #9624 (New): when cache is empty and being built, user queries should be wait...https://forge.in2p3.fr/issues/96242015-04-01T18:30:44ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #9606 (New): add attribute @encoding to element <connector>https://forge.in2p3.fr/issues/96062015-03-31T18:29:06ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>Implementation: the value of this attribute MUST be used by the serializer (either DefaultSerializer or the serializer specified in the chain).</p> Lavoisier - Feature #9564 (New): reorganize <pre-renderer> sectionhttps://forge.in2p3.fr/issues/95642015-03-30T10:37:50ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>Initial proposition (to be discussed):<br /><pre><code class="xml syntaxhl"><span class="nt"><renderers</span> <span class="na">template=</span><span class="s">"default.html"</span><span class="nt">></span>
<span class="nt"><field></span>/*/@field<span class="nt"></field></span>
<span class="nt"><row</span> <span class="na">foreach=</span><span class="s">"/*/*/*"</span><span class="nt">></span>
<span class="nt"><column></span>@foo<span class="nt"></column></span>
<span class="nt"><column></span>bar<span class="nt"></column></span>
<span class="nt"></row></span>
<span class="c"><!-- plugins configuration override --></span>
<span class="nt"><renderer-2D</span> <span class="na">type=</span><span class="s">"CSVRenderer"</span> <span class="na">xmlns:r=</span><span class="s">"http://software.in2p3.fr/lavoisier/rendering.xsd"</span><span class="nt">></span>
<span class="nt"><element</span> <span class="na">out=</span><span class="s">"r:rendering"</span><span class="nt">/></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"separator"</span><span class="nt">></span>;<span class="nt"></parameter></span>
<span class="nt"></renderer-2D></span>
<span class="nt"><renderer-doc</span> <span class="na">type=</span><span class="s">"HTMLRenderer"</span> <span class="na">template=</span><span class="s">"myTemplate.html"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"?"</span><span class="nt">></span>?<span class="nt"></parameter></span>
<span class="nt"></renderer-doc></span>
<span class="nt"><renderer-doc</span> <span class="na">type=</span><span class="s">"JasperRenderer"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"jrxml"</span><span class="nt">></span>example.xml<span class="nt"></parameter></span>
<span class="nt"></renderer-doc></span>
<span class="nt"><renderer-tree</span> <span class="na">type=</span><span class="s">"XMLRenderer"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"indent"</span><span class="nt">></span>4<span class="nt"></parameter></span>
<span class="nt"></renderer-tree></span>
<span class="nt"></renderers></span>
</code></pre></p> Lavoisier - Feature #9563 (New): support <elements-ignore> into <element-create-as-parent>https://forge.in2p3.fr/issues/95632015-03-30T10:30:50ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #9562 (New): re-implement <pre-renderers> in streaming modehttps://forge.in2p3.fr/issues/95622015-03-30T10:25:12ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>Use Lavoisier's XML template engine instead of XSLT processor !</p> Lavoisier - Feature #8817 (New): develop a XML template optimizerhttps://forge.in2p3.fr/issues/88172014-12-19T17:10:43ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>This optimizer should detect portions of XPath that should be moved to variables.</p> ENX - Feature #8693 (New): sauver log_levelhttps://forge.in2p3.fr/issues/86932014-12-09T15:54:23ZNguyen-Kim Kaneknguyen@ipno.in2p3.fr
<p>Le log_level devrait être sauvé lors du !save</p> Lavoisier - Feature #8405 (New): implement XPath function choose_not_null(arg1, arg2)https://forge.in2p3.fr/issues/84052014-10-30T14:21:27ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #8404 (New): support parameters in <pre-renderers>https://forge.in2p3.fr/issues/84042014-10-30T11:03:09ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #8261 (New): support attribute @out-xpath on <element>https://forge.in2p3.fr/issues/82612014-10-17T19:15:48ZReynaud SylvainSylvain.Reynaud@in2p3.frLavoisier - Feature #8258 (New): add attribute @default to <renderers>https://forge.in2p3.fr/issues/82582014-10-17T19:07:58ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>Replace /info/accept with this attribute in views "form" and "debug"</p> Lavoisier - Feature #8241 (New): improve dropdown list of view "form"https://forge.in2p3.fr/issues/82412014-10-15T18:05:36ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>It would be useful to be able to generate the options list DYNAMICALLY (for example from a data view).</p> Lavoisier - Feature #8172 (New): support XPath function append()https://forge.in2p3.fr/issues/81722014-10-06T10:43:14ZReynaud SylvainSylvain.Reynaud@in2p3.fr
Arguments:
<ul>
<li>the subtree where to append the new subtree</li>
<li>the new subtree</li>
</ul>
Returns:
<ul>
<li>the root of the document containing the provided subtree</li>
</ul> Lavoisier - Feature #7619 (New): replace @INCLUDES with #include in properties fileshttps://forge.in2p3.fr/issues/76192014-07-04T11:17:36ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<ul>
<li>1 include per line</li>
<li>parse file as text to extract the #include lines</li>
</ul> Topology Manager - Feature #7486 (New): Modification of informationhttps://forge.in2p3.fr/issues/74862014-06-19T14:41:15ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>In protected mode, we should be able to modify easily simple information ...</p> Topology Manager - Feature #7483 (New): Protect modificationhttps://forge.in2p3.fr/issues/74832014-06-19T14:27:26ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Adding protection when deleting or adding a link</p> Lavoisier - Feature #7463 (New): add attribute tpl:url._https://forge.in2p3.fr/issues/74632014-06-17T16:54:40ZReynaud SylvainSylvain.Reynaud@in2p3.fr
Must automatically generates:
<ul>
<li><xsl:param name="base.url">System.getProperty('base.url')</xsl:param></li>
<li>tpl:_="concat($base.url, XPath)"</li>
</ul>
<p>if property base.url is NOT defined, then HTMLRenderer/DefaultRenderer must forward its dynamic value by adding:<br /><pre><code class="xml syntaxhl"><span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"parameters"</span><span class="nt">></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"base.url"</span> <span class="na">eval=</span><span class="s">"url()"</span><span class="nt">/></span>
<span class="nt"></parameter></span>
</code></pre></p> Lavoisier - Feature #7461 (New): add XPath function url()https://forge.in2p3.fr/issues/74612014-06-17T16:46:42ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>This function concatenates the base URL with the argument of the function.</p>
If property 'base.url' is defined:
<ul>
<li>then the base URL is property('base.url')</li>
<li>else the base URL is extracted from HTTP headers</li>
</ul> Lavoisier - Feature #6353 (New): support new parameter type "Language"https://forge.in2p3.fr/issues/63532014-03-04T15:10:47ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>The goal is to support langage-specific syntax-highlight in web console and configuration wizard (e.g. SQL, XQuery...).</p> Lavoisier - Feature #6325 (New): enable limiting the maximum output sizehttps://forge.in2p3.fr/issues/63252014-03-03T10:47:04ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>All the opened elements should be automatically closed in order to keep the XML output well formed.</p> Lavoisier - Feature #6303 (New): support attributes @package and @id on <config>https://forge.in2p3.fr/issues/63032014-02-27T17:00:28ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>This will replace metadata <category>.</p>
This must correspond to (or must be deduced from) file system:
<ul>
<li>@package must correspond to directory name</li>
<li>@id must correspond to file name</li>
</ul>
<p>Element <view> may support attribute @private="true|FALSE".</p>
When referencing a data view:
<ul>
<li>if it is in another package, then add package name : view('my.package.myView').</li>
<li>if it is in the same package, then package name will be automatically added.</li>
</ul> Lavoisier - Feature #6260 (New): support introspection of view-templatehttps://forge.in2p3.fr/issues/62602014-02-24T18:22:11ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<p>a process should be able to query the list of parameters of a view-template</p> Lavoisier - Feature #5558 (New): add XPath function build_xpath()https://forge.in2p3.fr/issues/55582013-11-22T14:51:40ZReynaud SylvainSylvain.Reynaud@in2p3.fr
<pre><code class="xml syntaxhl"><span class="nt"><view</span> <span class="na">name=</span><span class="s">"v"</span><span class="nt">></span>
<span class="nt"><argument</span> <span class="na">name=</span><span class="s">"site"</span><span class="nt">></span>NONE<span class="nt"></argument></span>
<span class="nt"><connector</span> <span class="na">type=</span><span class="s">"XMLConnector"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"content"</span><span class="nt">></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"CC-IN2P3"</span><span class="nt">></span>Lyon<span class="nt"></entry></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"LAPP"</span><span class="nt">></span>Annecy<span class="nt"></entry></span>
<span class="nt"><entry</span> <span class="na">key=</span><span class="s">"CERN"</span><span class="nt">></span>Geneve<span class="nt"></entry></span>
<span class="nt"></parameter></span>
<span class="nt"></connector></span>
<span class="nt"><processors></span>
<span class="c"><!-- the less flexible solution (the XPath is fixed in the view) --></span>
<span class="nt"><processor</span> <span class="na">type=</span><span class="s">"SelectProcessor"</span> <span class="na">match=</span><span class="s">"/*/*[@key=$site]"</span> <span class="na">disabled=</span><span class="s">"$site='NONE'"</span><span class="nt">/></span>
<span class="nt"></processors></span>
<span class="nt"></view></span>
<span class="c"><!-- the less efficient solution (requires a data structure to be built) --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v')/*/*[@key=$site]"</span><span class="nt">/></span>
<span class="c"><!-- argument 'site' is evaluated by view 'v' --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v/*/*[@key=$site]', arguments())"</span><span class="nt">/></span><span class="c"><!-- view 'v' must have <argument name="site"/> --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view('v/*/*[@key=arguments()[@key=&quot;site&quot;]])]', arguments())"</span><span class="nt">/></span>
<span class="c"><!-- argument 'site' is evaluated by current view --></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view(concat('v/*/*[@key=',quot($site),']'))"</span><span class="nt">/></span>
<span class="nt"><parameter</span> <span class="na">eval=</span><span class="s">"view(build_xpath('v/*/*[@key={$site}'))"</span><span class="nt">/></span>
</code></pre>
<p><ins>Note</ins>: build_xpath() must disable optimizer for {match()/@id}</p> ENX - Feature #5527 (New): Named register listhttps://forge.in2p3.fr/issues/55272013-11-18T17:30:28ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>It should be great to remove template-register.ads from driver files and to list the regsiter from a configuration file...</p>
<p>need to define a way to find this configuration file and some others details, but to do ...</p> ENX - Bug #5448 (New): configure enxhttps://forge.in2p3.fr/issues/54482013-10-30T10:24:16ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>If you do ./configure --enable-console, configure is "happy" ....</p>
<p>But I think something will be wrong ...</p>
<p>Either ENX is automatically put to enable, either configure should go on ERROR.</p>
<p>To choose ....</p> Lavoisier - Feature #5090 (New): add new adaptor type : <writer>https://forge.in2p3.fr/issues/50902013-09-17T15:49:22ZReynaud SylvainSylvain.Reynaud@in2p3.fr
Adaptors example:
<ul>
<li>SQLWriter</li>
<li>HTTPWriter</li>
<li>FileWriter</li>
<li>EmailWriter</li>
</ul>
<p>Usage example:<br /><pre><code class="xml syntaxhl"><span class="nt"><view</span> <span class="na">name=</span><span class="s">"ldap-to-sql"</span><span class="nt">></span>
<span class="nt"><connector</span> <span class="na">type=</span><span class="s">"LDAPConnector"</span><span class="nt">/></span>
<span class="nt"><writer</span> <span class="na">type=</span><span class="s">"SQLWriter"</span> <span class="na">match=</span><span class="s">"/o/cn[@id='fr']/ou[@id='in2p3']/dn"</span>
<span class="na">recovery-base-directory=</span><span class="s">"$TMP/recovery"</span> <span class="na">recovery-period=</span><span class="s">"PT1M"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"url"</span><span class="nt">></span>jdbc:...<span class="nt"></parameter></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"query"</span><span class="nt">></span>INSERT INTO my_table (?,?)<span class="nt"></parameter></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"parameters"</span><span class="nt">></span>
<span class="nt"><entry</span> <span class="na">eval=</span><span class="s">"@id"</span><span class="nt">/></span>
<span class="nt"><entry</span> <span class="na">eval=</span><span class="s">"ancestor::cn/@id"</span><span class="nt">/></span>
<span class="nt"></parameter></span>
<span class="nt"><trigger</span> <span class="na">type=</span><span class="s">"DeltaTimeTrigger"</span><span class="nt">></span>
<span class="nt"><parameter</span> <span class="na">name=</span><span class="s">"hours"</span><span class="nt">></span>1<span class="nt"></parameter></span>
<span class="nt"></trigger></span>
<span class="nt"></writer></span>
<span class="nt"></view></span>
</code></pre></p>
<p>Interface:<br /><pre><code class="java syntaxhl"><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">Writer</span> <span class="kd">extends</span> <span class="nc">Adaptor</span> <span class="o">{</span>
<span class="cm">/**
* @return the list of exceptions caused by bad configuration (event will not be retried).
*/</span>
<span class="kd">public</span> <span class="nc">Exception</span><span class="o">[]</span> <span class="nf">getConfigurationExceptions</span><span class="o">();</span>
<span class="cm">/**
* A resource can be for example: a connection to database, an URL to an AVAILABLE web service, a pointer to file...
* @throws ResourceAlreadyOpened if resource was already opened.
* @return true if opening resource is successful, else false.
*/</span>
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">openResource</span><span class="o">()</span> <span class="kd">throws</span> <span class="nc">ResourceAlreadyOpened</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">closeResource</span><span class="o">();</span>
<span class="o">}</span>
</code></pre></p>
<p>Algorithm:<br /><pre><code class="java syntaxhl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">WriterLink</span> <span class="o">{</span>
<span class="kd">private</span> <span class="nc">File</span> <span class="n">m_base_directory</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Duration</span> <span class="n">m_retry_period</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">EventStore</span> <span class="n">m_unrecoverable</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">EventStore</span> <span class="n">m_recoverable</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Writer</span> <span class="n">m_writer</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Set</span><span class="o"><</span><span class="nc">Exception</span><span class="o">></span> <span class="n">m_configuration_exceptions</span><span class="o">;</span>
<span class="kd">public</span> <span class="nf">WriterLink</span><span class="o">()</span> <span class="o">{</span>
<span class="n">m_configuration_exceptions</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">HashSet</span><span class="o"><</span><span class="nc">Exception</span><span class="o">>();</span>
<span class="n">m_configuration_exceptions</span><span class="o">.</span><span class="na">addAll</span><span class="o">(</span><span class="nc">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">getConfigurationExceptions</span><span class="o">()));</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">write</span><span class="o">(</span><span class="nc">Xml</span> <span class="n">view</span><span class="o">)</span> <span class="o">{</span>
<span class="nc">EventReader</span> <span class="n">input</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventReader</span><span class="o">(</span><span class="n">view</span><span class="o">);</span>
<span class="n">m_unrecoverable</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventStore</span><span class="o">(</span><span class="n">m_viewId</span><span class="o">);</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="nc">StartElement</span><span class="o">(</span><span class="s">"root"</span><span class="o">));</span>
<span class="k">while</span><span class="o">(!</span><span class="n">input</span><span class="o">.</span><span class="na">isEmpty</span><span class="o">()</span> <span class="o">&&</span> <span class="o">!</span><span class="n">isTriggered</span><span class="o">)</span> <span class="o">{</span>
<span class="nl">label:</span> <span class="k">while</span><span class="o">(!</span><span class="n">isTriggered</span><span class="o">)</span> <span class="o">{</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">openResource</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">WAS_ALREADY_OPENED:</span>
<span class="nc">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">m_retry_period</span><span class="o">);</span>
<span class="k">break</span> <span class="n">label</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_OPENED:</span>
<span class="k">break</span> <span class="n">label</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_CLOSED:</span>
<span class="nc">Thread</span><span class="o">.</span><span class="na">sleep</span><span class="o">(</span><span class="n">m_retry_period</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="n">m_recoverable</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">EventStore</span><span class="o">(</span><span class="n">m_viewId</span><span class="o">);</span>
<span class="k">try</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="n">event</span> <span class="o">:</span> <span class="n">input</span><span class="o">.</span><span class="na">getEvents</span><span class="o">())</span> <span class="o">{</span>
<span class="k">switch</span><span class="o">(</span><span class="n">event</span><span class="o">.</span><span class="na">getState</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">UNSELECTED:</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">SELECTED:</span>
<span class="k">this</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">.</span><span class="na">getCurrent</span><span class="o">());</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">DESCENDANT_OF_SELECTED:</span>
<span class="k">break</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">ResourceClosedException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="n">event</span> <span class="o">:</span> <span class="n">input</span><span class="o">.</span><span class="na">getEvents</span><span class="o">())</span> <span class="o">{</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">event</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">close</span><span class="o">();</span> <span class="c1">// remove the file if if contains no event</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">moveTo</span><span class="o">(</span><span class="n">input</span><span class="o">);</span>
<span class="o">}</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">close</span><span class="o">();</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="nc">EndElement</span><span class="o">(</span><span class="s">"root"</span><span class="o">));</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">close</span><span class="o">();</span> <span class="c1">// remove the file if it contains no event</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">write</span><span class="o">(</span><span class="nc">Element</span> <span class="n">current</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">ResourceClosedException</span> <span class="o">{</span>
<span class="k">try</span> <span class="o">{</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="n">m_configuration_exceptions</span><span class="o">.</span><span class="na">contains</span><span class="o">(</span><span class="n">e</span><span class="o">))</span> <span class="o">{</span>
<span class="n">m_unrecoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">switch</span> <span class="o">(</span><span class="n">m_writer</span><span class="o">.</span><span class="na">openResource</span><span class="o">())</span> <span class="o">{</span>
<span class="k">case</span> <span class="nl">WAS_ALREADY_OPENED:</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_OPENED:</span>
<span class="k">try</span> <span class="o">{</span>
<span class="n">m_writer</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="nc">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
<span class="n">m_recoverable</span><span class="o">.</span><span class="na">write</span><span class="o">(</span><span class="n">current</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">break</span><span class="o">;</span>
<span class="k">case</span> <span class="nl">IS_CLOSED:</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nf">ResourceClosedException</span><span class="o">();</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre></p> ENX - Feature #4652 (New): rename appenders.ad[sb]https://forge.in2p3.fr/issues/46522013-06-13T10:19:59ZDosme Nicolas
<p>this file name is used in other projects. We can avoid futur compilation's problems by renaming this two files.</p> Pipelet - Bug #4068 (New): Tagging works randomly with konquerorhttps://forge.in2p3.fr/issues/40682013-03-06T09:52:01ZBetoule Marcbetoule@lpnhe.in2p3.fr
<p>I can't manage to tag properly a segment when browsing the web interface with konqueror 4.8.4.<br />Three attempts in a row result in the creation of the following tags:<br />null<br />;montag (instead of montag)<br />;null</p> ENX - Task #3851 (New): [named register] Tagging new printhttps://forge.in2p3.fr/issues/38512013-01-22T17:02:39ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Tagging print package and updating web site</p>
New functionnality have been added :
<ul>
<li>is_numerical</li>
</ul> ENX - Bug #3834 (New): Removing data8 type for MM and MDhttps://forge.in2p3.fr/issues/38342013-01-17T18:08:22ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Finding something to replace it ....</p> ENX - Task #3833 (New): [named register] Modifying MD and MM command typehttps://forge.in2p3.fr/issues/38332013-01-17T18:06:36ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Adding the possibility to have a non numerical address.</p>
<p>Modifying documentation !</p> ENX - Task #3832 (New): [named register] New controlhttps://forge.in2p3.fr/issues/38322013-01-17T18:04:54ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Adding a list register <device name></p> ENX - Feature #2644 (New): Que faire en cas de multiple connexion sans quithttps://forge.in2p3.fr/issues/26442012-03-28T13:18:50ZGrave Xavier
<p>Le plugin ADF analyser pour AGATA/NARVAL se connecte de manière répétée au GEC. Lors de la phase de développement, de multiples appels ont eu lieu sans que la commande quit ne soit appelée. Assez rapidement on obtient un joli : <br /><result type="error">No more ID available.</result></p>
<p>Que faire dans ce cas ? Redémarrer le serveur ? Ou existe-t-il une commande magique pour libérer les id non utilisés depuis x secondes ou minutes ?</p> ENX - Feature #659 (New): Gestion des arbres DOMhttps://forge.in2p3.fr/issues/6592010-05-27T10:51:05ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>Remplacer les appels sax par des arbres DOM</p> ENX - Feature #656 (New): named registerhttps://forge.in2p3.fr/issues/6562010-05-26T13:15:23ZDosme Nicolas
<p>possibility to access register by name and not only by address</p> ENX - Feature #42 (New): Module ID Handlerhttps://forge.in2p3.fr/issues/422009-03-02T08:58:37ZLegay EricEric.Legay@csnsm.in2p3.fr
<p>redesign of the module handling the ID and the connected user.</p>
<p>Features needed:<br /> - History<br /> - Now device and driver should have a creator<br /> - ....</p>