diff --git a/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapterFactory.java b/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapterFactory.java
index b64e7dd..b3aa0cd 100644
--- a/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapterFactory.java
+++ b/configjsr/src/main/java/org/apache/tamaya/jsr382/JavaConfigAdapterFactory.java
@@ -151,6 +151,7 @@
      * Converts a JavaConfig {@link Converter} into a Tamaya {@link PropertyConverter}.
      * @param converter the JavaConfig {@link Converter} instance, not null.
      * @param <T> the target type
+     * @param priority the priority level of this converter.
      * @return the corresponding Tamaya {@link PropertyConverter} instance, never null.
      */
     public static <T> PropertyConverter<T> toPropertyConverter(Converter<T> converter, int priority) {
diff --git a/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
index b934b52..0fda50d 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/ConfigValidation.java
@@ -45,6 +45,7 @@
 
     /**
      * Access a singleton using the default classloader.
+     * @return a validation manager.
      */
     public static ConfigValidation getInstance() {
         return ServiceContextManager.getServiceContext(
@@ -55,6 +56,7 @@
     /**
      * Access a singleton using the given target classloader.
      * @param classLoader the classloader, not null.
+     * @return a validation manager.
      */
     public static ConfigValidation getInstance(ClassLoader classLoader){
         return ServiceContextManager.getServiceContext(classLoader).getService(ConfigValidation.class, ConfigValidation::new);
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractValidator.java b/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractValidator.java
index 15de27a..6a58c40 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractValidator.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/AbstractValidator.java
@@ -51,7 +51,7 @@
 
     /**
      * Get the area or paramter key.
-     * @return
+     * @return the key.
      */
     public String getKey() {
         return key;
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/AreaValidator.java b/validation/src/main/java/org/apache/tamaya/validation/spi/AreaValidator.java
index 79e5e27..94dc19d 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/AreaValidator.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/AreaValidator.java
@@ -182,6 +182,7 @@
         /**
          * Creates a new Builder.
          * @param name the fully qualified parameter name, not null.
+         * @param owner the owner name, not null.
          */
         public Builder(String name, Object owner) {
             this.name = Objects.requireNonNull(name);
diff --git a/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java b/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
index afce656..b5f8efb 100644
--- a/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
+++ b/validation/src/main/java/org/apache/tamaya/validation/spi/PropertyValidator.java
@@ -156,6 +156,7 @@
         /**
          * Creates a new Builder.
          * @param name the fully qualified parameter name, not null.
+         * @param owner the owner name, not null.
          */
         public Builder(String name, Object owner) {
             this.name = Objects.requireNonNull(name);
