Fix javadoc errors

Tasks.documentation.javadoc threw around 50 errors due to multiple inconsistencies within the javadoc comments.

Furthermore, the option 'failOnError' is now set to 'true' so that future Javadoc errors in our codebase are avoided.
This commit is contained in:
Till-André Diegeler
2025-03-25 00:05:14 +01:00
parent 1fea8429b1
commit d5362d634b
43 changed files with 110 additions and 138 deletions

View File

@@ -19,7 +19,7 @@ repositories.
- Useful plugins available
- Licensed under AGPL-3.0-only
This branch (`develop`) is for the development of SCM-Manager 2.x. If you are interested in the development of version
This branch (`develop`) is for the development of SCM-Manager. If you are interested in the development of version
1.x, please checkout the branch `support/1.x`.
## News

View File

@@ -44,7 +44,7 @@ class JavaModulePlugin implements Plugin<Project> {
}
project.tasks.withType(Javadoc) {
failOnError false
failOnError true
}
project.sonarqube {

View File

@@ -0,0 +1,9 @@
---
title: Javadoc
---
Die Javadoc finden Sie unter [javadoc](https://scm-manager.org/javadoc/).
### Entwicklungshinweis
Bitte beachten Sie, dass Fehler (Errors) in Javadoc-Kommentaren zum beabsichtigten Scheitern des Build-Prozesses führen.
Zudem wird dazu geraten, Warnhinweise bei neu hinzugefügten Javadoc-Kommentaren zu vermeiden.

View File

@@ -1,14 +1,14 @@
---
title: Dokumentation
subtitle: SCM-Manager Dokumentation
subtitle: SCM-Manager-Dokumentation
---
Diese Dokumentation beschreibt die Verwaltung und Verwendung vom SCM-Manager. Sie steht in verschiedenen Sprachen und Versionen zur Verfügung, die im Menü rechts ausgewählt werden können.
Der SCM-Manager 2 ist ein extrem leichtgewichtiges Source Code Management-Tool und kann über eine Vielzahl von Plugins individuell erweitert werden.
Der SCM-Manager ist ein extrem leichtgewichtiges Source-Code-Management-Tool und kann über eine Vielzahl von Plugins individuell erweitert werden.
Die Dokumentation zum SCM-Manager ist in fünf verschiedene Kategorien unterteilt:
- Der Abschnitt "Erste Schritte" beschreibt die Installation und die Konfiguration des SCM-Managers und beantwortet häufig gestellte Fragen.
- Der Bereich "Administration" handelt von Themen, die beim Betreiben einer Instanz von Belangen sind.
- Unter der Rubrik "Entwicklung" werden alle Informationen zusammengefasst, die für die Weiterentwicklung des SCM-Managers relevant sind. Hierbei wird beschrieben, wie der SCM-Manager gebaut werden kann und was es dabei zu Beachten gilt.
- Der Bereich "Pluginentwicklung" legt den Fokus auf den Prozess eben dieser.
- Unter dem Abschnitt "Anwenderorientiert" werden aus Anwendersicht die Funktionen des SCM-Managers in der Basis-Variante mit dem Mindest-Set an Plugins beschrieben. Die Features der optionalen Plugins werden in separaten Dokumentationen vorgestellt.
- Der Abschnitt Erste Schritte beschreibt die Installation und die Konfiguration des SCM-Managers und beantwortet häufig gestellte Fragen.
- Der Bereich Administration handelt von Themen, die beim Betreiben einer Instanz von Belangen sind.
- Unter der Rubrik Entwicklung werden alle Informationen zusammengefasst, die für die Weiterentwicklung des SCM-Managers relevant sind. Hierbei wird beschrieben, wie der SCM-Manager gebaut werden kann und was es dabei zu beachten gilt.
- Der Bereich Pluginentwicklung legt den Fokus auf den Prozess eben dieser.
- Unter dem Abschnitt Anwenderorientiert werden aus Anwendersicht die Funktionen des SCM-Managers in der Basis-Variante mit dem Mindestsatz an Plugins beschrieben. Die Features der optionalen Plugins werden in separaten Dokumentationen vorgestellt.

View File

@@ -45,7 +45,7 @@ Falls die Lebensdauer verringert wird, wird jeder bisher ausgestellter JWT ungü
Sollte in der `config.yml` des Servers die Option "endless JWT" aktiviert sein, dann wird diese Einstellung ignoriert.
#### Anonyme Zugriff
Der SCM-Manager 2 hat das Konzept für anonyme Zugriffe über einen "_anonymous"-Benutzer realisiert. Beim Aktivieren des anonymen Zugriffs wird ein neuer Benutzer erstellt mit dem Namen "_anonymous". Dieser Nutzer kann wie ein gewöhnlicher Benutzer für unterschiedliche Aktionen berechtigt werden. Bei einem Zugriff auf den SCM-Manager ohne Zugangsdaten wird dieser anonyme Benutzer verwendet.
Der SCM-Manager hat das Konzept für anonyme Zugriffe über einen "_anonymous"-Benutzer realisiert. Beim Aktivieren des anonymen Zugriffs wird ein neuer Benutzer erstellt mit dem Namen "_anonymous". Dieser Nutzer kann wie ein gewöhnlicher Benutzer für unterschiedliche Aktionen berechtigt werden. Bei einem Zugriff auf den SCM-Manager ohne Zugangsdaten wird dieser anonyme Benutzer verwendet.
Ist der anonyme Zugriff nur für Protokoll aktiviert, können die REST API und die VCS Protokolle anonym genutzt werden. Wurde der anonyme Zugriff vollständig aktiviert, ist auch ein Zugriff über den Webclient anonym möglich.
Beispiel: Falls der anonyme Zugriff aktiviert ist und der "_anonymous"-Benutzer volle Zugriffsrechte auf ein bestimmtes Git-Repository hat, kann jeder über eine Kommandozeile mit den klassischen Git-Befehlen ohne Zugangsdaten auf dieses Repository zugreifen. Zugriffe über SSH werden aktuell nicht unterstützt.

View File

@@ -9,7 +9,7 @@ title: Building SCM-Manager from Source
- Maven 3 or higher ([download](https://maven.apache.org/))
- Git ([download](https://git-scm.com/))
### Build SCM-Manager 2.x from Source
### Build SCM-Manager from Source
```bash
git clone https://github.com/scm-manager/scm-manager.git

View File

@@ -3,3 +3,7 @@ title: Javadoc
---
You can find the Javadoc at [javadoc](https://scm-manager.org/javadoc/).
### Development note
Please keep in mind that any newly introduced Javadoc error causes build breaks by design.
Furthermore, it is advised to avoid warnings in case of newly introduced Javadoc comments.

View File

@@ -2,7 +2,7 @@
title: DOD for UI development
---
Use this as a kind of a checklist whenever you develop something in the UI of SCM-Manager 2.x., regardless whether you are developing core features or plugins.
Use this as a kind of checklist whenever you develop something in the UI of SCM-Manager, regardless whether you are developing core features or plugins.
| | Don't forget to |
|---|-----------------|

View File

@@ -4,7 +4,7 @@ subtitle: SCM-Manager Documentation
---
This documentation describes the administration and usage of SCM-Manager. It is available in different languages and versions, which can be selected in the menu on the right.
SCM-Manager 2 is an extremely lightweight source code management tool that can be individually extended through a variety of plugins.
SCM-Manager is an extremely lightweight source code management tool that can be individually extended through a variety of plugins.
This documentation is divided into five categories:
- The section "Getting started" introduces the installation and configuration of SCM-Manager and answers frequently asked questions.

View File

@@ -44,7 +44,7 @@ If the amount of hours get reduced, each created JWT will be invalidated.
This setting will be ignored, if the endless JWT option is set to true in the server `config.yml`.
#### Anonymous Access
In SCM-Manager 2 the access for anonymous access is realized by using an "_anonymous" user. When the feature is activated, a new user with the name "_anonymous" is created. This user can be authorized just like any other user. This user is used for access to SCM-Manager without login credentials.
In SCM-Manager the access for anonymous access is realized by using an "_anonymous" user. When the feature is activated, a new user with the name "_anonymous" is created. This user can be authorized just like any other user. This user is used for access to SCM-Manager without login credentials.
If the anonymous mode is protocol only you may access the SCM-Manager via the REST API and VCS protocols. With fully enabled anonymous access you can also use the webclient without credentials.
Example: If anonymous access is enabled and the "_anonymous" user has full access on a certain Git repository, everybody can access this repository via command line and the classic Git commands without any login credentials. Access via SSH is not supported at this time.

View File

@@ -0,0 +1,2 @@
- type: fixed
description: Javadoc errors

View File

@@ -75,21 +75,21 @@ public abstract class ConfigurationAdapterBase<DAO, DTO extends HalRepresentatio
* If either one is missing, you will see {@link IllegalDaoClassException}s on your way.
* <br>
* The implementation may look like this:
* <pre>
* @Path("/v2/test")
* private static class TestConfigurationAdapter extends ConfigurationAdapterBase<TestConfiguration, TestConfigurationDto> {
* <pre><code>
* &commat;Path("/v2/test")
* private static class TestConfigurationAdapter extends ConfigurationAdapterBase&lt;TestConfiguration, TestConfigurationDto&gt; {
*
* @Inject
* public TestConfigurationResource(ConfigurationStoreFactory configurationStoreFactory, Provider<ScmPathInfoStore> scmPathInfoStoreProvider) {
* &commat;Inject
* public TestConfigurationResource(ConfigurationStoreFactory configurationStoreFactory, Provider&lt;ScmPathInfoStore&gt; scmPathInfoStoreProvider) {
* super(configurationStoreFactory, scmPathInfoStoreProvider, TestConfiguration.class, TestConfigurationDto.class);
* }
*
* @Override
* &commat;Override
* protected String getName() {
* return "testConfig";
* }
* }
* </pre>
* </code></pre>
*
* @param configurationStoreFactory The configuration store factory provided from injection.
* @param scmPathInfoStoreProvider The path info store provider provided from injection.

View File

@@ -29,7 +29,6 @@ import java.util.ServiceLoader;
* themselves. The ScmEventBus searches its implementation with the
* {@link ServiceLoader}.
*
* @apiviz.landmark
* @see EventBus
* @since 1.23
*/

View File

@@ -23,10 +23,9 @@
* <p>The data type provided by {@link sonia.scm.migration.UpdateStepTarget#getAffectedDataType()} can be an arbitrary
* string, but it is considered a best practice to use a qualified name, for example
* <ul>
* <li><code>com.example.myPlugin.configuration</code></li> for data in plugins, or
* <li><code>com.cloudogu.scm.repository</code></li> for core data structures.
* <li><code>com.example.myPlugin.configuration</code> for data in plugins, or</li>
* <li><code>com.cloudogu.scm.repository</code> for core data structures.</li>
* </ul>
* </p>
* <p>The version provided by {@link sonia.scm.migration.UpdateStepTarget#getTargetVersion()} is unrelated to other
* versions and therefore can be chosen freely, so that a data type can be updated without in various ways independent
* of other data types or the official version of the plugin or the core.
@@ -69,17 +68,16 @@
* </li>
* <li>Finally, these sorted steps are executed one after another calling
* {@link sonia.scm.migration.UpdateStep#doUpdate()} of each global step and
* {@link sonia.scm.migration.RepositoryUpdateStep#doUpdate(sonia.scm.migration.RepositoryUpdateContext)}</li> for each
* {@link sonia.scm.migration.RepositoryUpdateStep#doUpdate(sonia.scm.migration.RepositoryUpdateContext)} for each
* repository for repository specific update steps, updating the version for the data type accordingly (if there are
* both, global and repository specific update steps for a data type and target version, the global step is called
* first), then
* both global and repository specific update steps for a data type and target version, the global step is called
* first).
* </li>
* <li>If all works well, SCM-Manager then creates the runtime guice context by loading all further modules.</li>
* <li>If any of the update steps fails, the whole process is interrupted and SCM-Manager will not start up and will
* not record the version number of this update step.
* </li>
* </ul>
* </p>
* <p>Mind that an implementation of this class has to be annotated with {@link sonia.scm.plugin.Extension}, so that the
* step will be found. </p>
*/

View File

@@ -50,7 +50,6 @@ import java.io.IOException;
* }
* </code></pre>
*
* @apiviz.landmark
* @since 1.46
*/
public abstract class AdvancedHttpClient {

View File

@@ -28,7 +28,7 @@ import java.io.Serializable;
/**
* The {@link Person} (author) of a changeset.
*
* @person Sebastian Sdorra
* @author Sebastian Sdorra
*/
@EqualsAndHashCode
@Getter

View File

@@ -25,8 +25,6 @@ import java.util.function.Consumer;
/**
* The central class for managing {@link Repository} objects.
* This class is a singleton and is available via injection.
*
* @apiviz.uses sonia.scm.repository.RepositoryHandler
*/
public interface RepositoryManager
extends TypeManager<Repository, RepositoryHandler> {

View File

@@ -50,7 +50,7 @@ import java.util.function.Supplier;
* for ( FileObject fo : result ){
* System.out.println( fo.getPath() );
* }
* </pre></code>
* </code></pre>
*
* @since 1.17
*/

View File

@@ -59,7 +59,6 @@ import java.util.function.Consumer;
* .deleteFile("old/file/to/delete")
* .execute();
* </pre>
* </p>
*/
public class ModifyCommandBuilder {

View File

@@ -93,8 +93,6 @@ import static sonia.scm.NotFoundException.notFound;
* }
* </code></pre>
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.repository.api.RepositoryService
* @since 1.17
*/
@Singleton

View File

@@ -39,7 +39,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
* The unbundle command can restore an empty repository from a bundle. The
* bundle can be created with the {@link BundleCommandBuilder}.
*
* @author Sebastian Sdorra <s.sdorra@gmail.com>
* @author Sebastian Sdorra
* @since 1.43
*/
public final class UnbundleCommandBuilder

View File

@@ -23,7 +23,7 @@ import com.google.common.io.ByteSink;
/**
* Request for the bundle command.
*
* @author Sebastian Sdorra <s.sdorra@gmail.com>
* @author Sebastian Sdorra
* @since 1.43
*/
public final class BundleCommandRequest

View File

@@ -24,7 +24,7 @@ import java.io.IOException;
/**
* Service provider implementation for the unbundle command.
*
* @author Sebastian Sdorra <s.sdorra@gmail.com>
* @author Sebastian Sdorra
* @since 1.43
*/
public interface UnbundleCommand

View File

@@ -28,7 +28,7 @@ import java.util.function.Consumer;
/**
* Request object for the unbundle command.
*
* @author Sebastian Sdorra <s.sdorra@gmail.com>
* @author Sebastian Sdorra
* @since 1.43
*/
public final class UnbundleCommandRequest {

View File

@@ -52,8 +52,6 @@ import static java.util.Optional.of;
* If for one repository a working copy is requested, while another is in use already,
* the process will wait until the other process has finished.
* The number of directories cached is limited. By default, directories are cached for
* {@value DEFAULT_WORKING_COPY_POOL_SIZE} repositories. This can be changes with the system
* property '{@value WORKING_COPY_POOL_SIZE_PROPERTY}' (if this is set to zero, no caching will
* take place; to cache the directories for each repository without eviction simply set this to a
* high enough value).
* <br>

View File

@@ -54,7 +54,8 @@ import java.io.File;
* <br>
* The general process looks like this:
* <br>
* <img src="doc-files/SimpleWorkingCopyFactory_Sequence.png"/>
* <img src="doc-files/SimpleWorkingCopyFactory_Sequence.png" alt="Shows a sequence diagram illustrating the interaction between components in a system related to a working copy process."/>
*
* @param <R> Type of central repository location
* @param <W> Type of working copy for repository
* @param <C> Type of repository context
@@ -113,7 +114,7 @@ public abstract class SimpleWorkingCopyFactory<R, W, C extends RepositoryProvide
* Constructs a new {@link SimpleWorkingCopyFactory}
*
* @param workingCopyPool pool which provides working copies
* @param meterRegistry registry to collect metrics
* @param meterRegistry registry to collect metrics
*/
public SimpleWorkingCopyFactory(WorkingCopyPool workingCopyPool, MeterRegistry meterRegistry) {
this.workingCopyPool = workingCopyPool;

View File

@@ -22,8 +22,6 @@ import java.util.List;
* The blob store can be used store unstructured data in form of a {@link Blob}.
*
* @since 1.23
*
* @apiviz.uses sonia.scm.store.Blob
*/
public interface BlobStore extends MultiEntryStore<Blob>
{

View File

@@ -18,26 +18,23 @@ package sonia.scm.store;
/**
* The BlobStoreFactory can be used to create a new or get an existing {@link BlobStore}s.
* <br>
* You can either create a global {@link BlobStore} or a {@link BlobStore} for a specific repository. To create a global
* {@link BlobStore} call:
* <code><pre>
* blobStoreFactory
* .withName("name")
* .build();
* </pre></code>
* To create a {@link BlobStore} for a specific repository call:
* <code><pre>
* blobStoreFactory
* .withName("name")
* .forRepository(repository)
* .build();
* </pre></code>
* You can either create a global {@link BlobStore} or a {@link BlobStore} for a specific repository.
* <br/>
* <br/>
* Call this to create a global {@link BlobStore}:
* <br/>
* <code>
* blobStoreFactory.withName("name").build();
* </code>
* <br/>
* <br/>
* Call this to create a {@link BlobStore} for a specific repository:
* <br/>
* <code>
* blobStoreFactory.withName("name").forRepository(repository).build();
* </code>
*
* @since 1.23
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.store.BlobStore
*/
public interface BlobStoreFactory {

View File

@@ -17,32 +17,30 @@
package sonia.scm.store;
/**
* The ConfigurationEntryStoreFactory can be used to create new or get existing {@link ConfigurationEntryStore}s.
* <br>
* <b>Note:</b> the default implementation uses the same location as the {@link ConfigurationStoreFactory}, so be sure
* that the store names are unique for all {@link ConfigurationEntryStore}s and {@link ConfigurationEntryStore}s.
* <br>
* <br/>
* <br/>
* The ConfigurationEntryStoreFactory can be used to create new or get existing {@link ConfigurationEntryStore}s.
* <br/>
* <br/>
* You can either create a global {@link ConfigurationEntryStore} or a {@link ConfigurationEntryStore} for a specific
* repository. To create a global {@link ConfigurationEntryStore} call:
* <code><pre>
* configurationEntryStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .build();
* </pre></code>
* To create a {@link ConfigurationEntryStore} for a specific repository call:
* <code><pre>
* repository. Call this to create a global {@link ConfigurationEntryStore}:
* <br/>
* <code>configurationEntryStoreFactory.withType(PersistedType.class).withName("name").build();</code>
* <br/>
* <br/>
* Call this to create a {@link ConfigurationEntryStore} for a specific repository:
* <br/>
* <code>
* configurationEntryStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .forRepository(repository)
* .build();
* </pre></code>
* </code>
*
* @since 1.31
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.store.ConfigurationEntryStore
*/
public interface ConfigurationEntryStoreFactory {

View File

@@ -18,31 +18,21 @@ package sonia.scm.store;
/**
* The ConfigurationStoreFactory can be used to create new or get existing {@link ConfigurationStore} objects.
* <br>
* <b>Note:</b> the default implementation uses the same location as the {@link ConfigurationEntryStoreFactory}, so be
* sure that the store names are unique for all {@link ConfigurationEntryStore}s and {@link ConfigurationStore}s.
* <br>
* <br/>
* <br/>
* The ConfigurationStoreFactory can be used to create new or get existing {@link ConfigurationStore} objects.
* You can either create a global {@link ConfigurationStore} or a {@link ConfigurationStore} for a specific repository.
* To create a global {@link ConfigurationStore} call:
* <code><pre>
* configurationStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .build();
* </pre></code>
* To create a {@link ConfigurationStore} for a specific repository call:
* <code><pre>
* configurationStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .forRepository(repository)
* .build();
* </pre></code>
*
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.store.ConfigurationStore
* <br/>
* <br/>
* Call this to create a global {@link ConfigurationStore}:
* <code>configurationStoreFactory.withType(PersistedType.class).withName("name").build();</code>
* <br/>
* <br/>
* Call this to create a {@link ConfigurationStore} for a specific repository:
* <br/>
* <code>configurationStoreFactory.withType(PersistedType.class).withName("name").forRepository(repository).build();</code>
*/
public interface ConfigurationStoreFactory {

View File

@@ -18,28 +18,19 @@ package sonia.scm.store;
/**
* The DataStoreFactory can be used to create new or get existing {@link DataStore}s.
* <br>
* You can either create a global {@link DataStore} or a {@link DataStore} for a specific repository.
* To create a global {@link DataStore} call:
* <code><pre>
* dataStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .build();
* </pre></code>
* To create a {@link DataStore} for a specific repository call:
* <code><pre>
* dataStoreFactory
* .withType(PersistedType.class)
* .withName("name")
* .forRepository(repository)
* .build();
* </pre></code>
* <br/>
* <br/>
* Call this to create a global {@link DataStore}:
* <br/>
* <code>dataStoreFactory.withType(PersistedType.class).withName("name").build();</code>
* <br/>
* <br/>
* To create a {@link DataStore} for a specific repository:
* <br/>
* <code>dataStoreFactory.withType(PersistedType.class).withName("name").forRepository(repository).build();</code>
*
* @since 1.23
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.store.DataStore
*/
public interface DataStoreFactory {

View File

@@ -25,8 +25,6 @@ import java.util.Locale;
* template for the rendering process.
*
* @since 1.19
*
* @apiviz.uses sonia.scm.template.Template
*/
public interface TemplateEngine
{

View File

@@ -36,9 +36,6 @@ import java.util.Set;
* {@link TemplateEngineFactory} is available via injection.
*
* @since 1.19
*
* @apiviz.landmark
* @apiviz.uses sonia.scm.template.TemplateEngine
*/
@Singleton
public final class TemplateEngineFactory

View File

@@ -37,7 +37,7 @@ import static org.mockito.Mockito.when;
/**
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
@SuppressWarnings("unchecked")
@RunWith(MockitoJUnitRunner.class)

View File

@@ -38,7 +38,7 @@ import static org.mockito.Mockito.when;
/**
* Unit tests for {@link GitGcTask}.
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
@RunWith(MockitoJUnitRunner.class)
public class GitGcTaskTest

View File

@@ -24,7 +24,7 @@ import static org.junit.Assert.*;
/**
* Unit tests for {@link GitUserAgentProvider}.
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
public class GitUserAgentProviderTest {

View File

@@ -27,7 +27,7 @@ import java.util.Locale;
/**
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
public class HgUserAgentProviderTest
{

View File

@@ -26,7 +26,7 @@ import java.util.Locale;
/**
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
public class SvnUserAgentProviderTest
{

View File

@@ -98,7 +98,6 @@ public class IncomingRootResource {
* @param page
* @param pageSize
* @return
* @throws Exception
*/
@GET
@Path("{source}/{target}/changesets")

View File

@@ -33,7 +33,7 @@ import org.jboss.resteasy.core.ResteasyContext;
/**
* Binds the {@link RequestScoped} to the current HTTP request and
* makes all the classes available via the {@link javax.ws.rs.core.Context} annotation injectable.
* makes all the classes available via the {@link jakarta.ws.rs.core.Context} annotation injectable.
*/
public class RequestScopeModule extends AbstractModule
{

View File

@@ -57,8 +57,7 @@ import static sonia.scm.version.Version.parse;
* <li>a new entry in the new <code>repository-paths.xml</code> database is written,</li>
* <li>the data directory is moved or copied to a SCM v2 consistent directory. How this is done
* can be specified by a strategy (@see {@link MigrationStrategy}), that has to be set in
* a database file named <code>migration-plan.xml</code></li> (to create this file, use {@link DefaultMigrationStrategyDAO}),
* and
* a database file named <code>migration-plan.xml</code> (to create this file, use {@link DefaultMigrationStrategyDAO}), and</li>
* <li>the new <code>metadata.xml</code> file is created.</li>
* </ul>
* </li>

View File

@@ -44,7 +44,7 @@ import static org.mockito.Mockito.when;
/**
* Unit tests for {@link MDCFilter}.
*
* @author Sebastian Sdorra <sebastian.sdorra@gmail.com>
* @author Sebastian Sdorra
*/
@RunWith(MockitoJUnitRunner.Silent.class)
public class MDCFilterTest extends AbstractTestBase {

View File

@@ -29,7 +29,7 @@ import java.util.Locale;
/**
*
* @author Sebastian Sdorra <sebastian.sdorra@triology.de>
* @author Sebastian Sdorra
*/
public class BrowserUserAgentProviderTest
{