This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository nuiton-web. See https://gitlab.nuiton.org/nuiton/nuiton-web.git commit 92ffa8baeab6a0f484b3e16ab8efb939c0fbc2e0 Author: CHRE <CHATELLIER@codelutin.com> Date: Wed Aug 10 10:06:32 2016 +0200 Fix build --- .../src/main/java/org/nuiton/rss/BaseServlet.java | 2 +- .../src/main/java/org/nuiton/rss/FeedType.java | 2 +- .../java/org/nuiton/rss/RSSGeneratorServlet.java | 2 +- .../src/main/java/org/nuiton/rss/RSSServlet.java | 2 +- .../java/org/nuiton/web/struts2/BaseAction.java | 2 +- .../OpenTopiaTransactionInterceptor.java | 24 +++++++++++----------- .../org/nuiton/web/struts2/taglib/FieldError2.java | 24 +++++++++++----------- .../annotations/RequiresAuthentication.java | 2 +- .../nuiton/web/tapestry5/components/FeedBack.java | 6 +++--- .../data/AbstractMappedGridDataSource.java | 4 ++-- .../services/AbstractAuthenticationFilter.java | 2 +- .../web/tapestry5/services/FormatBinding.java | 2 +- .../tapestry5/services/FormatBindingFactory.java | 2 +- .../web/tapestry5/services/NuitonModule.java | 2 +- .../tapestry5/services/ServiceAuthentication.java | 10 ++++----- .../services/ServiceAuthenticationImpl.java | 2 +- .../nuiton/web/filter/JpaTransactionFilter.java | 16 +++++++-------- .../nuiton/web/filter/TopiaTransactionFilter.java | 2 +- .../web/filter/TypedTopiaTransactionFilter.java | 18 ++++++++-------- .../java/org/nuiton/web/war/JettyLauncher.java | 4 ++-- nuiton-web/src/site/apt/TopiaFilter.apt.vm | 2 +- 21 files changed, 66 insertions(+), 66 deletions(-) diff --git a/nuiton-rss/src/main/java/org/nuiton/rss/BaseServlet.java b/nuiton-rss/src/main/java/org/nuiton/rss/BaseServlet.java index 98ad978..a71e927 100644 --- a/nuiton-rss/src/main/java/org/nuiton/rss/BaseServlet.java +++ b/nuiton-rss/src/main/java/org/nuiton/rss/BaseServlet.java @@ -32,7 +32,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** - * <p/> + * <p> * Servlet de base * * @param <D> la classe de l'object de delegation diff --git a/nuiton-rss/src/main/java/org/nuiton/rss/FeedType.java b/nuiton-rss/src/main/java/org/nuiton/rss/FeedType.java index 6724285..f90aba0 100644 --- a/nuiton-rss/src/main/java/org/nuiton/rss/FeedType.java +++ b/nuiton-rss/src/main/java/org/nuiton/rss/FeedType.java @@ -23,7 +23,7 @@ package org.nuiton.rss; /** * Enumeration of known feed's type. - * <p/> + * <p> * Used to generate some feed files. * * @author tony diff --git a/nuiton-rss/src/main/java/org/nuiton/rss/RSSGeneratorServlet.java b/nuiton-rss/src/main/java/org/nuiton/rss/RSSGeneratorServlet.java index d122f48..02b0c48 100644 --- a/nuiton-rss/src/main/java/org/nuiton/rss/RSSGeneratorServlet.java +++ b/nuiton-rss/src/main/java/org/nuiton/rss/RSSGeneratorServlet.java @@ -37,7 +37,7 @@ import java.util.HashMap; import java.util.Map; /** - * <p/> + * <p> * Servlet permettant de generer des flux generes par RSSGenerator et de * les publier. * diff --git a/nuiton-rss/src/main/java/org/nuiton/rss/RSSServlet.java b/nuiton-rss/src/main/java/org/nuiton/rss/RSSServlet.java index f3af0a2..8c22760 100644 --- a/nuiton-rss/src/main/java/org/nuiton/rss/RSSServlet.java +++ b/nuiton-rss/src/main/java/org/nuiton/rss/RSSServlet.java @@ -56,7 +56,7 @@ public class RSSServlet extends BaseServlet<RSSHelper> { /** * Le code JavaScript a utilise dans les pages clientes - * <p/> + * <p> * Provient du fichier rssinclude.js * cat rssinclude.js |sed 's/"/\\"/g' |sed -re 's/^(.*)$/"\1\\n" +/' */ diff --git a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/BaseAction.java b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/BaseAction.java index 6d62ba5..c4ffdb3 100644 --- a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/BaseAction.java +++ b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/BaseAction.java @@ -28,7 +28,7 @@ import java.util.Arrays; /** * Base action to use for a better usage of I18n. * - * @author tchemit <chemit@codelutin.com> + * @author tchemit <chemit@codelutin.com> * @since 1.1 */ public class BaseAction extends ActionSupport { diff --git a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/OpenTopiaTransactionInterceptor.java b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/OpenTopiaTransactionInterceptor.java index 8d7642f..30c43f5 100644 --- a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/OpenTopiaTransactionInterceptor.java +++ b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/OpenTopiaTransactionInterceptor.java @@ -43,45 +43,45 @@ import com.opensymphony.xwork2.util.TextParseUtil; /** * <!-- START SNIPPET: description --> - * <p/> + * <p> * The aim of this Interceptor is to manage a {@code transaction} all along * a action which implements {@link TopiaTransactionAware} contract. - * <p/> + * <p> * Technicaly, the action will receive only a proxy of a transaction and a real * transaction will only be created as soon as a method will be asked on it. - * <p/> + * <p> * The interceptor is abstract and let user to implement the way how to open a * new transaction via the method {@link #beginTransaction()}. - * <p/> + * <p> * Note that the transaction pushed in the action can be limited using a list * of methods to exclude on it. The list of methods to forbid can be customized * using the interceptor parameter {@link #excludeMethods}. - * <p/> + * <p> * Note also that the transaction is <strong>not</strong> commited nor closed. * If you want the transaction to be closed, you may use * {@link CloseTopiaTransactionFilter} by adding * it to your web.xml file. - * <p/> + * <p> * This interceptor, as it provides connection to database should be in the * interceptor stack before any other interceptor requiring access to database. * For example, it is a common behaviour to do such calls in a prepare method, * so make sure to place this interceptor before the {@code prepare} interceptor. * <!-- END SNIPPET: description --> - * <p/> - * <p/> <u>Interceptor parameters:</u> - * <p/> + * <p> + * <p> <u>Interceptor parameters:</u> + * <p> * <!-- START SNIPPET: parameters --> - * <p/> + * <p> * <ul> * <li>excludeMethods (optional) - Customized method names separated by coma to * forbid on the proxy of the transaction given to action. By default, if this * parameter is not filled, then we will use this one : * {@link #DEFAULT_EXCLUDE_METHODS}.</li> * </ul> - * <p/> + * <p> * <!-- END SNIPPET: parameters --> * - * @author tchemit <chemit@codelutin.com> + * @author tchemit <chemit@codelutin.com> * @author bleny <leny@codelutin.com> * @since 1.5 * @deprecated since 1.6, prefer use the neutral filter org.nuiton.web.filter.TopiaTransactionFilter from nuiton-web module diff --git a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java index 1657c99..dd0a077 100644 --- a/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java +++ b/nuiton-struts2/src/main/java/org/nuiton/web/struts2/taglib/FieldError2.java @@ -53,14 +53,14 @@ import java.util.List; /** * <!-- START SNIPPET: javadoc --> - * <p/> + * <p> * Render field errors if they exists. Specific layout depends on the particular theme. * The field error strings will be html escaped by default. - * <p/> + * <p> * <!-- END SNIPPET: javadoc --> - * <p/> - * <p/> <b>Examples</b> - * <p/> + * <p> + * <p> <b>Examples</b> + * <p> * <pre> * <!-- START SNIPPET: example --> * @@ -92,16 +92,16 @@ import java.util.List; * * <!-- END SNIPPET: example --> * </pre> - * <p/> - * <p/> - * <p/> <b>Description</b><p/> - * <p/> - * <p/> + * <p> + * <p> + * <p> <b>Description</b><p> + * <p> + * <p> * <pre> * <!-- START SNIPPET: description --> * - * Example 1: display all field errors<p/> - * Example 2: display field errors only for 'field1' and 'field2'<p/> + * Example 1: display all field errors<p> + * Example 2: display field errors only for 'field1' and 'field2'<p> * * <!-- END SNIPPET: description --> * </pre> diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/annotations/RequiresAuthentication.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/annotations/RequiresAuthentication.java index 59236c9..d82594f 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/annotations/RequiresAuthentication.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/annotations/RequiresAuthentication.java @@ -30,7 +30,7 @@ import java.lang.annotation.Target; /** * This annotation is used on pages and components that need authentication * to be rendered. - * <p/> + * <p> * Created: 3 mai 2010 * * @author fdesbois diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/components/FeedBack.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/components/FeedBack.java index 90cfc84..7b55efe 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/components/FeedBack.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/components/FeedBack.java @@ -53,14 +53,14 @@ import java.util.List; /** * Composant qui affiche des messages à l'utilisateur. - * <p/> + * <p> * Ce composant permet d'afficher des messages avec une apparence différente * selon leur type (info ou erreur). Lors de l'affichage de la page, les * messages seront affichés et la collection de messages sera vidée. - * <p/> + * <p> * Pour personnaliser l'apparence des messages il faut définir les classes * fb-error et fb-info dans le CSS. - * <p/> + * <p> * <pre> * Utilisation : * <t:feedback t:id="feedback"/> diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/data/AbstractMappedGridDataSource.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/data/AbstractMappedGridDataSource.java index 204823a..d7dd151 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/data/AbstractMappedGridDataSource.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/data/AbstractMappedGridDataSource.java @@ -35,9 +35,9 @@ import java.util.Map; /** * AbstractMappedGridDataSource - * <p/> + * <p> * TODO : javadoc - * <p/> + * <p> * Created: 18 janv. 2010 * * @param <K> Type of the map key diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/AbstractAuthenticationFilter.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/AbstractAuthenticationFilter.java index 829c4dc..7665bb6 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/AbstractAuthenticationFilter.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/AbstractAuthenticationFilter.java @@ -38,7 +38,7 @@ import java.lang.annotation.Annotation; /** * AbstractAuthenticationFilter - * <p/> + * <p> * Created: 3 mai 2010 * * @param <U> type of User diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBinding.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBinding.java index 82bb56c..39b99d3 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBinding.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBinding.java @@ -35,7 +35,7 @@ import java.util.List; * <pre> * ${format:key=value1,value2} or <t:component t:parameter="format:key=value1,value2"> * </pre> - * <p/> + * <p> * Created: 27 avr. 2010 * * @author fdesbois diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBindingFactory.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBindingFactory.java index 876e2e7..9021a6a 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBindingFactory.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/FormatBindingFactory.java @@ -43,7 +43,7 @@ import java.util.List; * configuration.add("format", new FormatBindingFactory(bindingSource)); * } * </pre> - * <p/> + * <p> * Created: 27 avr. 2010 * * @author fdesbois diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/NuitonModule.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/NuitonModule.java index 2504c84..5e25d89 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/NuitonModule.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/NuitonModule.java @@ -29,7 +29,7 @@ import org.apache.tapestry5.services.LibraryMapping; /** * NuitonModule - * <p/> + * <p> * Created: 4 mai 2010 * * @author fdesbois diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthentication.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthentication.java index b5aae9e..5fc5221 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthentication.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthentication.java @@ -48,22 +48,22 @@ package org.nuiton.web.tapestry5.services; * MappedConfiguration<Class<?>, * ApplicationStateContribution> configuration, * final ServiceAuthentication<MyUser> serviceAuthentication) { - * <p/> + * <p> * ApplicationStateCreator<MyUser> creator = * new ApplicationStateCreator<MyUser>() { - * <p/> + * <p> * @Override * public MyUser create() { * return serviceAuthentication.getNewUserInstance(); * } * }; - * <p/> + * <p> * configuration.add(MyUser.class, * new ApplicationStateContribution("session", creator)); * } * </pre> - * <p/> - * <p/> + * <p> + * <p> * Created: 3 mai 2010 * * @param <U> user type diff --git a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthenticationImpl.java b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthenticationImpl.java index b62657e..6543d74 100644 --- a/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthenticationImpl.java +++ b/nuiton-tapestry/src/main/java/org/nuiton/web/tapestry5/services/ServiceAuthenticationImpl.java @@ -47,7 +47,7 @@ import java.lang.annotation.Annotation; * No need to contribute to ApplicationStateManager to provide instantiation * of user. Even this service used the default constructor to instanciate a new * user. - * <p/> + * <p> * Created: 3 mai 2010 * * @param <U> user type diff --git a/nuiton-web/src/main/java/org/nuiton/web/filter/JpaTransactionFilter.java b/nuiton-web/src/main/java/org/nuiton/web/filter/JpaTransactionFilter.java index 2712178..3a7bffb 100644 --- a/nuiton-web/src/main/java/org/nuiton/web/filter/JpaTransactionFilter.java +++ b/nuiton-web/src/main/java/org/nuiton/web/filter/JpaTransactionFilter.java @@ -46,7 +46,7 @@ import java.util.Set; * This filter purpose is to inject in the request a entityManager from * {@link EntityManager} and deal with the complete lifecycle of a JPA * entityManager while a request. - * <p/> + * <p> * The injected JPA entityManager will be closed (if was really opened) at the end of * the request. * <h2>Configuration of the filter</h2> @@ -56,7 +56,7 @@ import java.util.Set; * which should never be called on the proxied entityManager. * When a such method is called on the entityManager then the filter will pass in * the hook {@link #onExcludeMethod(Object, Method, Object[])}. - * <p/> + * <p> * Default implementation of this hook is to throw an exception. * </li> * <li>{@code unusedMethods}: This parameters configure a set of method names @@ -64,27 +64,27 @@ import java.util.Set; * (via a {@link EntityManager}. * When a such method is called on the entityManager then the filter will pass in * the hook {@link #onUnusedMethod(Object, Method, Object[])}. - * <p/> + * <p> * Default implementation of this hook is to not return null values. * </li> * </ul> * <h2>Obtain the entityManager</h2> * The (proxied) entityManager is pushed as an attribute in the servlet request. - * <p/> + * <p> * The attribute name is defined by field {@link #requestAttributeName} * (default value is {@link #JPA_TRANSACTION_REQUEST_ATTRIBUTE}) and can be * changed. - * <p/> + * <p> * A convience method is created here to obtain the entityManager {@link #getTransaction(ServletRequest)} : * <pre> * EntityManager em = JpaTransactionFilter.getTransaction(ServletRequest); * </pre> - * <p/> + * <p> * If you prefer to not use this nice method, you can also do this: * <pre> * EntityManager em = (EntityManager) request.getAttribute(JpaTransactionFilter#JPA_TRANSACTION_REQUEST_ATTRIBUTE); * </pre> - * <p/> + * <p> * Or * <pre> * EntityManager em = (EntityManager) request.getAttribute(modifiedAttributeName); @@ -124,7 +124,7 @@ public abstract class JpaTransactionFilter implements Filter { /** * Name of the request attribute where to push the entityManager. - * <p/> + * <p> * By default will use value of * {@link #JPA_TRANSACTION_REQUEST_ATTRIBUTE}. */ diff --git a/nuiton-web/src/main/java/org/nuiton/web/filter/TopiaTransactionFilter.java b/nuiton-web/src/main/java/org/nuiton/web/filter/TopiaTransactionFilter.java index dcb3e0b..dc94c7a 100644 --- a/nuiton-web/src/main/java/org/nuiton/web/filter/TopiaTransactionFilter.java +++ b/nuiton-web/src/main/java/org/nuiton/web/filter/TopiaTransactionFilter.java @@ -27,7 +27,7 @@ import org.nuiton.topia.persistence.TopiaPersistenceContext; * Implementation of the {@link TypedTopiaTransactionFilter} using the * {@link TopiaPersistenceContext} as type. * - * @author tchemit <chemit@codelutin.com> + * @author tchemit <chemit@codelutin.com> * @since 1.6 */ public abstract class TopiaTransactionFilter extends TypedTopiaTransactionFilter<TopiaPersistenceContext> { diff --git a/nuiton-web/src/main/java/org/nuiton/web/filter/TypedTopiaTransactionFilter.java b/nuiton-web/src/main/java/org/nuiton/web/filter/TypedTopiaTransactionFilter.java index 91a6109..2d1d224 100644 --- a/nuiton-web/src/main/java/org/nuiton/web/filter/TypedTopiaTransactionFilter.java +++ b/nuiton-web/src/main/java/org/nuiton/web/filter/TypedTopiaTransactionFilter.java @@ -50,7 +50,7 @@ import java.util.Set; * This filter purpose is to inject in the request a transaction from * {@link TopiaPersistenceContext} and deal with the complete lifecycle of a topia * transaction while a request. - * <p/> + * <p> * The injected transaction will be closed (if was really opened) at the end of * the request. * <h2>Configuration of the filter</h2> @@ -60,7 +60,7 @@ import java.util.Set; * which should never be called on the proxied transaction. * When a such method is called on the transaction then the filter will pass in * the hook {@link #onExcludeMethod(Object, Method, Object[])}. - * <p/> + * <p> * Default implementation of this hook is to throw an exception. * </li> * <li>{@code unusedMethods}: This parameters configure a set of method names @@ -68,33 +68,33 @@ import java.util.Set; * {@link TopiaApplicationContext#newPersistenceContext()}. * When a such method is called on the transaction then the filter will pass in * the hook {@link #onUnusedMethod(Object, Method, Object[])}. - * <p/> + * <p> * Default implementation of this hook is to not return null values. * </li> * </ul> * <h2>Obtain the transaction</h2> * The (proxied) transaction is pushed as an attribute in the servlet request. - * <p/> + * <p> * The attribute name is defined by field {@link #requestAttributeName} * (default value is {@link #TOPIA_TRANSACTION_REQUEST_ATTRIBUTE}) and can be * changed. - * <p/> + * <p> * A convience method is created here to obtain the transaction {@link #getPersistenceContext(ServletRequest)} : * <pre> * PersistenceContext tx = TypedTopiaTransactionFilter.getPersistenceContext(ServletRequest); * </pre> - * <p/> + * <p> * If you prefer to not use this nice method, you can also do this: * <pre> * PersistenceContext tx = (PersistenceContext) request.getAttribute(TopiaTransactionFilter#TOPIA_TRANSACTION_REQUEST_ATTRIBUTE); * </pre> - * <p/> + * <p> * Or * <pre> * PersistenceContext tx = (PersistenceContext) request.getAttribute(modifiedAttributeName); * </pre> * - * @author tchemit <chemit@codelutin.com> + * @author tchemit <chemit@codelutin.com> * @since 1.15 */ public abstract class TypedTopiaTransactionFilter<PersistenceContext extends TopiaPersistenceContext> implements Filter { @@ -148,7 +148,7 @@ public abstract class TypedTopiaTransactionFilter<PersistenceContext extends Top /** * Name of the request attribute where to push the transaction. - * <p/> + * <p> * By default will use value of * {@link #TOPIA_TRANSACTION_REQUEST_ATTRIBUTE}. * diff --git a/nuiton-web/src/main/java/org/nuiton/web/war/JettyLauncher.java b/nuiton-web/src/main/java/org/nuiton/web/war/JettyLauncher.java index 12b5fb7..5a9f0cd 100644 --- a/nuiton-web/src/main/java/org/nuiton/web/war/JettyLauncher.java +++ b/nuiton-web/src/main/java/org/nuiton/web/war/JettyLauncher.java @@ -54,7 +54,7 @@ import java.net.URL; /** * War main class launcher (jetty based). - * <p/> + * <p> * To use it : * java -jar app-xxx.war * @@ -124,7 +124,7 @@ public class JettyLauncher implements ActionListener, MouseListener { /** * Read input stream as string. - * <p/> + * <p> * Code from commons io. * * @param stream stream to read diff --git a/nuiton-web/src/site/apt/TopiaFilter.apt.vm b/nuiton-web/src/site/apt/TopiaFilter.apt.vm index 7fe9442..63cdfb6 100644 --- a/nuiton-web/src/site/apt/TopiaFilter.apt.vm +++ b/nuiton-web/src/site/apt/TopiaFilter.apt.vm @@ -21,7 +21,7 @@ import org.nuiton.web.filter.TopiaTransactionFilter; /** * EchoBase implementation of the {@link TopiaTransactionFilter}. * - * @author tchemit <chemit@codelutin.com> + * @author tchemit <chemit@codelutin.com> * @since 0.1 */ public class EchoBaseTopiaTransactionFilter extends TopiaTransactionFilter { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.