From 00fe74134bd559758feb9d0c7ce431c1db4fe21f Mon Sep 17 00:00:00 2001
From: Jonas Blatt <jonasblatt@uni-koblenz.de>
Date: Sat, 5 Oct 2019 10:46:00 +0200
Subject: [PATCH] Add documentation for simple pojo classes

---
 .../fgbks/base/builder/AbstractBuilder.java      | 16 ++++++++++++++++
 .../fgbks/base/builder/DefaultBuilder.java       |  3 +++
 .../fgbks/base/domain/Description.java           |  5 +++++
 .../de/unikoblenz/fgbks/base/domain/Label.java   |  5 +++++
 .../de/unikoblenz/fgbks/base/domain/Message.java |  5 +++++
 .../de/unikoblenz/fgbks/base/domain/Name.java    |  5 +++++
 .../fgbks/base/domain/StringValue.java           |  5 +++++
 .../de/unikoblenz/fgbks/base/domain/Text.java    |  5 +++++
 .../fgbks/base/json/JsonConfiguration.java       |  3 +++
 .../json/JsonSimpleValueObjectSerializer.java    |  3 +++
 .../base/json/PrivateVisibilityStrategy.java     |  6 +++++-
 .../fgbks/base/utils/UniqueIdGenerator.java      |  7 +++++++
 .../fgbks/base/value/AbstractValueObject.java    |  7 +++++--
 .../fgbks/base/value/SimpleValueObject.java      |  3 +++
 .../unikoblenz/fgbks/base/value/ValueObject.java |  4 +++-
 15 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/AbstractBuilder.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/AbstractBuilder.java
index c40a5f46..a23b7d59 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/AbstractBuilder.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/AbstractBuilder.java
@@ -3,6 +3,12 @@ package de.unikoblenz.fgbks.base.builder;
 import java.io.Serializable;
 import java.lang.reflect.Field;
 
+/**
+ * A abstract builder for creating java pojo classes.
+ *
+ * @param <E> the type of the object being constructed
+ * @param <B> the instance type of the builder
+ */
 public abstract class AbstractBuilder<E, B extends AbstractBuilder<E, B>> implements Serializable {
 
   private static final String VALUE_FIELD_NAME = "value";
@@ -46,8 +52,18 @@ public abstract class AbstractBuilder<E, B extends AbstractBuilder<E, B>> implem
 
   protected abstract E newInstance();
 
+  /**
+   * Check if the fields in the value object are valid.
+   */
   protected abstract void validate();
 
+  /**
+   * Start the building process and return the finished object. While building the new object the
+   * function {@link DefaultBuilder#validate()} is called and should be passed without an exception.
+   * Every time this function is called a new instance of the type is returned.
+   *
+   * @return the new created object
+   */
   public E build() {
     validate();
     E result = value;
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/DefaultBuilder.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/DefaultBuilder.java
index 59bbb7d6..3b05f202 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/DefaultBuilder.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/builder/DefaultBuilder.java
@@ -31,6 +31,9 @@ public class DefaultBuilder<E> extends AbstractBuilder<E, DefaultBuilder<E>> {
     return this;
   }
 
+  /**
+   * {@inheritDoc}
+   */
   @Override
   protected void validate() {
     // nothing to validate
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Description.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Description.java
index 206d0ac0..5f9382fd 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Description.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Description.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a description.
+ */
 public class Description extends AbstractStringValueObject {
 
+  /** Create a new copy of the given description object. */
   public Description(Description initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a description object with the given {@code initialValue}. */
   public Description(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Label.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Label.java
index 2f462485..d7c899f1 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Label.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Label.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a label.
+ */
 public class Label extends AbstractStringValueObject {
 
+  /** Create a new copy of the given label object. */
   public Label(Label initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a label object with the given {@code initialValue}. */
   public Label(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Message.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Message.java
index cff5d051..76d1c718 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Message.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Message.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a message.
+ */
 public class Message extends AbstractStringValueObject {
 
+  /** Create a new copy of the given message object. */
   public Message(Message initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a message object with the given {@code initialValue}. */
   public Message(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Name.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Name.java
index cdba8c78..6cbfb2b5 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Name.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Name.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a name.
+ */
 public class Name extends AbstractStringValueObject {
 
+  /** Create a new copy of the given name object. */
   public Name(Name initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a name object with the given {@code initialValue}. */
   public Name(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/StringValue.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/StringValue.java
index 83cb5791..03b01255 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/StringValue.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/StringValue.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a string value.
+ */
 public class StringValue extends AbstractStringValueObject {
 
+  /** Create a new copy of the given string value object. */
   public StringValue(StringValue initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a string value object with the given {@code initialValue}. */
   public StringValue(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Text.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Text.java
index f57b2fab..cc58163c 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Text.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/domain/Text.java
@@ -2,12 +2,17 @@ package de.unikoblenz.fgbks.base.domain;
 
 import de.unikoblenz.fgbks.base.value.AbstractStringValueObject;
 
+/**
+ * A value object representing a text.
+ */
 public class Text extends AbstractStringValueObject {
 
+  /** Create a new copy of the given text object. */
   public Text(Text initialValue) {
     this(initialValue.getValue());
   }
 
+  /** Create a text object with the given {@code initialValue}. */
   public Text(String initialValue) {
     super(initialValue);
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java
index c8410ce3..bba70ba3 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java
@@ -6,6 +6,9 @@ import javax.json.bind.JsonbConfig;
 import javax.ws.rs.ext.ContextResolver;
 import javax.ws.rs.ext.Provider;
 
+/**
+ * A provider for the configuration of jsonb handling. See {@link ContextResolver}
+ */
 @Provider
 public class JsonConfiguration implements ContextResolver<Jsonb> {
 
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java
index a5a6eb7b..b3dcb66a 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java
@@ -5,6 +5,9 @@ import javax.json.bind.serializer.JsonbSerializer;
 import javax.json.bind.serializer.SerializationContext;
 import javax.json.stream.JsonGenerator;
 
+/**
+ * A json serializer for simple value objects ({@link SimpleValueObject})
+ */
 public class JsonSimpleValueObjectSerializer implements JsonbSerializer<SimpleValueObject> {
 
   @Override
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java
index 4eb02b8a..8ab6492b 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java
@@ -7,6 +7,10 @@ import javax.json.bind.annotation.JsonbProperty;
 import javax.json.bind.annotation.JsonbTransient;
 import javax.json.bind.config.PropertyVisibilityStrategy;
 
+/**
+ * The private visibility strategy is used in {@link JsonConfiguration} for the visibility for json
+ * serialization.
+ */
 public class PrivateVisibilityStrategy implements PropertyVisibilityStrategy {
 
   @Override
@@ -17,7 +21,7 @@ public class PrivateVisibilityStrategy implements PropertyVisibilityStrategy {
   @Override
   public boolean isVisible(Method method) {
     return Modifier.isPublic(method.getModifiers())
-            && !method.isAnnotationPresent(JsonbTransient.class)
+        && !method.isAnnotationPresent(JsonbTransient.class)
         || method.isAnnotationPresent(JsonbProperty.class);
   }
 }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java
index 58fb304e..2a1291c0 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/UniqueIdGenerator.java
@@ -1,11 +1,18 @@
 package de.unikoblenz.fgbks.base.utils;
 
+/**
+ * Generate a thread safe synchronized unique application scoped long id by calling the method
+ * {@link UniqueIdGenerator#getNextId()}
+ */
 public class UniqueIdGenerator {
 
   private static volatile long id = 0;
 
   private UniqueIdGenerator() {}
 
+  /**
+   * Return the next id. This method is synchronized.
+   */
   public static synchronized long getNextId() {
     return id++;
   }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractValueObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractValueObject.java
index 2a4f8c69..fe19ca33 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractValueObject.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/AbstractValueObject.java
@@ -6,6 +6,9 @@ import java.io.Serializable;
 import java.util.Arrays;
 import java.util.stream.Collectors;
 
+/**
+ * A abstract value object contains a array of objects.
+ */
 public abstract class AbstractValueObject implements Serializable, ValueObject {
 
   private transient Object[] values;
@@ -45,8 +48,8 @@ public abstract class AbstractValueObject implements Serializable, ValueObject {
   public String toString() {
     return "["
         + Arrays.stream(getValues())
-            .map(o -> nonNull(o) ? o.toString() : "null")
-            .collect(Collectors.joining(", "))
+        .map(o -> nonNull(o) ? o.toString() : "null")
+        .collect(Collectors.joining(", "))
         + "]";
   }
 
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/SimpleValueObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/SimpleValueObject.java
index 69272d0c..13103a43 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/SimpleValueObject.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/SimpleValueObject.java
@@ -1,5 +1,8 @@
 package de.unikoblenz.fgbks.base.value;
 
+/**
+ * A simple value object, which contains a value of a given type V.
+ */
 public interface SimpleValueObject<V> extends ValueObject {
 
   V getValue();
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/ValueObject.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/ValueObject.java
index 5b13cc6c..2cb3798f 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/ValueObject.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/value/ValueObject.java
@@ -2,7 +2,9 @@ package de.unikoblenz.fgbks.base.value;
 
 import java.io.Serializable;
 
-@SuppressWarnings("checkstyle:all")
+/**
+ * A interface for a value object.
+ */
 public interface ValueObject extends Serializable {
 
   String VALUE = "value";
-- 
GitLab