From 53e3a929c94737d19c90360c1d0a34b24f83a5fc Mon Sep 17 00:00:00 2001
From: Daniel <daniel@harvey>
Date: Fri, 3 May 2019 14:46:05 +0200
Subject: [PATCH] DOC: Documention source code.

---
 src/main/java/caosdb/server/CaosDBServer.java |  1 +
 .../server/accessControl/UserSources.java     |  4 +--
 .../AbstractCaosDBServerResource.java         | 27 +++++++++++++++++--
 .../caosdb/server/utils/ServerMessages.java   |  2 +-
 src/main/java/caosdb/server/utils/Utils.java  | 13 ++++++---
 .../TestAbstractCaosDBServerResource.java     |  4 +--
 .../java/caosdb/server/utils/UtilsTest.java   |  2 +-
 7 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/main/java/caosdb/server/CaosDBServer.java b/src/main/java/caosdb/server/CaosDBServer.java
index 22e941db..89ff1b71 100644
--- a/src/main/java/caosdb/server/CaosDBServer.java
+++ b/src/main/java/caosdb/server/CaosDBServer.java
@@ -859,6 +859,7 @@ class CaosDBComponent extends Component {
   @Override
   public void handle(final Request request, final Response response) {
     long t1 = System.currentTimeMillis();
+    // The server request ID is just a long random number
     request.getAttributes().put("SRID", Utils.getUID());
     response.setServerInfo(CaosDBServer.getServerInfo());
     super.handle(request, response);
diff --git a/src/main/java/caosdb/server/accessControl/UserSources.java b/src/main/java/caosdb/server/accessControl/UserSources.java
index 2097478c..a3f35c11 100644
--- a/src/main/java/caosdb/server/accessControl/UserSources.java
+++ b/src/main/java/caosdb/server/accessControl/UserSources.java
@@ -44,7 +44,7 @@ public class UserSources extends HashMap<String, UserSource> {
 
   public static final String ANONYMOUS_ROLE = "anonymous";
   private static final Logger logger = LoggerFactory.getLogger(UserSources.class);
-  public static final String KEY_DEAULT_REALM = "defaultRealm";
+  public static final String KEY_DEFAULT_REALM = "defaultRealm";
   public static final String KEY_REALMS = "defaultRealm";
   public static final String KEY_REALM_CLASS = "class";
 
@@ -162,7 +162,7 @@ public class UserSources extends HashMap<String, UserSource> {
   }
 
   public static String getDefaultRealm() {
-    return instance.map.getSectionProperty(Ini.DEFAULT_SECTION_NAME, KEY_DEAULT_REALM);
+    return instance.map.getSectionProperty(Ini.DEFAULT_SECTION_NAME, KEY_DEFAULT_REALM);
   }
 
   public static Set<String> resolve(final PrincipalCollection principals) {
diff --git a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java
index 709825c8..07fa3439 100644
--- a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java
+++ b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java
@@ -75,8 +75,8 @@ public abstract class AbstractCaosDBServerResource extends ServerResource {
   private final HashMap<String, String> flags = new HashMap<String, String>();
   private Long timestamp = null;
   private static final XMLParser xmlparser = new XMLParser();
-  protected String sRID = null;
-  private String cRID = null;
+  protected String sRID = null; // Server side request ID
+  private String cRID = null; // Client side request ID
   private String[] requestedItems = null;
   private ArrayList<Integer> requestedIDs = new ArrayList<Integer>();
   private ArrayList<String> requestedNames = new ArrayList<String>();
@@ -86,6 +86,11 @@ public abstract class AbstractCaosDBServerResource extends ServerResource {
     private static final long serialVersionUID = -6836378704013776849L;
   }
 
+  /**
+   * Returns the (probably unique) server request ID.
+   *
+   * @return The server request ID.
+   */
   public String getSRID() {
     return this.sRID;
   }
@@ -156,6 +161,19 @@ public abstract class AbstractCaosDBServerResource extends ServerResource {
   @Override
   protected void doRelease() {}
 
+  /**
+   * Creates the XML root.
+   *
+   * <p>The XML root node contains:
+   *
+   * <p>
+   *
+   * <ul>
+   *   <li>User info as per addUserInfo
+   *   <li>The sRID (server-side request ID)
+   *   <li>A timestamp
+   *   <li>The URI to this resource.
+   */
   protected Element generateRootElement() {
     final Element retRoot = new Element("Response");
 
@@ -413,6 +431,11 @@ public abstract class AbstractCaosDBServerResource extends ServerResource {
     return root;
   }
 
+  /**
+   * Returns the client request ID, which can be set by the client.
+   *
+   * @return The cRID.
+   */
   public String getCRID() {
     return cRID;
   }
diff --git a/src/main/java/caosdb/server/utils/ServerMessages.java b/src/main/java/caosdb/server/utils/ServerMessages.java
index 454834e2..12496218 100644
--- a/src/main/java/caosdb/server/utils/ServerMessages.java
+++ b/src/main/java/caosdb/server/utils/ServerMessages.java
@@ -292,7 +292,7 @@ public class ServerMessages {
       new Message(
           MessageType.Error,
           0,
-          "This password is too weak. It should be longer than 8 characters and contain at least one number, one symbol, one uppercase letter and one lowercase letter. ");
+          "This password is too weak. It should be longer than 8 characters and sufficiently random. ");
 
   public static final Message AFFILIATION_ERROR =
       new Message(
diff --git a/src/main/java/caosdb/server/utils/Utils.java b/src/main/java/caosdb/server/utils/Utils.java
index 2916b242..1e6b60d7 100644
--- a/src/main/java/caosdb/server/utils/Utils.java
+++ b/src/main/java/caosdb/server/utils/Utils.java
@@ -252,8 +252,9 @@ public class Utils {
   }
 
   /**
-   * Intended to convert sizes to human readably sizes. TODO: might be broken because of the log
-   * function above.
+   * Converts file sizes to human readably sizes.
+   *
+   * <p>For example, getReadableByteSize(2048) == "2KiB".
    */
   public static String getReadableByteSize(final Long fssize) {
     if (fssize == null) {
@@ -280,10 +281,10 @@ public class Utils {
 
   /**
    * Determines the strength of a password. Currently this just throws an error when the String
-   * password does not at least contain - An uppercase char - A lowercase char - A number - A
+   * `password` does not at least contain - An uppercase char - A lowercase char - A number - A
    * punctuation char and if the length is not at least 8 characters.
    *
-   * <p>correcthorsebatterystaple would be rejected.
+   * <p>correcthorsebatterystaple is also rejected.
    *
    * @param password The password to be checked.
    */
@@ -297,5 +298,9 @@ public class Utils {
     if (!(length && uppercase && lowercase && number && punct)) {
       throw ServerMessages.PASSWORD_TOO_WEAK;
     }
+
+    if (password.equals("correcthorsebatterystaple")) {
+      throw ServerMessages.PASSWORD_TOO_WEAK;
+    }
   }
 }
diff --git a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java
index 8f2cee53..81baabd4 100644
--- a/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java
+++ b/src/test/java/caosdb/server/resource/TestAbstractCaosDBServerResource.java
@@ -86,9 +86,7 @@ public class TestAbstractCaosDBServerResource {
     assertNotNull(userInfo);
   }
 
-  /**
-   * Creates a dummy usersources.ini and injects it into the server properties.
-   */
+  /** Creates a dummy usersources.ini and injects it into the server properties. */
   private void provideUserSourcesFile() throws IOException {
     String usersourcesFileName = tempFolder.newFile("usersources.ini").getAbsolutePath();
     String usersourcesContent =
diff --git a/src/test/java/caosdb/server/utils/UtilsTest.java b/src/test/java/caosdb/server/utils/UtilsTest.java
index 527428ee..c75d5a3a 100644
--- a/src/test/java/caosdb/server/utils/UtilsTest.java
+++ b/src/test/java/caosdb/server/utils/UtilsTest.java
@@ -2,7 +2,7 @@
  * ** header v3.0
  * This file is a part of the CaosDB Project.
  *
- * Copyright (C) 2018 Research Group Biomedical Physics,
+ * Copyright (C) 2019 Research Group Biomedical Physics,
  * Max-Planck-Institute for Dynamics and Self-Organization Göttingen
  *
  * This program is free software: you can redistribute it and/or modify
-- 
GitLab