Browse Source

Merge with pwm-project/pwm master branch

Joe Hawkins 8 years ago
parent
commit
99e9489fcc
100 changed files with 1005 additions and 322 deletions
  1. 329 0
      checkstyle.xml
  2. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.jar.md5
  3. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.jar.sha1
  4. 8 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom
  5. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom.md5
  6. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom.sha1
  7. 12 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml
  8. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml.md5
  9. 1 0
      local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml.sha1
  10. BIN
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar
  11. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar.md5
  12. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar.sha1
  13. 8 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom
  14. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom.md5
  15. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom.sha1
  16. 12 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml
  17. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml.md5
  18. 1 0
      local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml.sha1
  19. BIN
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar
  20. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar.md5
  21. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar.sha1
  22. 8 0
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom
  23. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom.md5
  24. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom.sha1
  25. 12 0
      local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml
  26. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml.md5
  27. 1 0
      local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml.sha1
  28. BIN
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar
  29. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar.md5
  30. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar.sha1
  31. 8 0
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom
  32. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom.md5
  33. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom.sha1
  34. 12 0
      local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml
  35. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml.md5
  36. 1 0
      local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml.sha1
  37. 50 3
      pom.xml
  38. 14 14
      src/main/angular/src/services/people.service.ts
  39. 1 1
      src/main/java/password/pwm/AppProperty.java
  40. 1 1
      src/main/java/password/pwm/Permission.java
  41. 1 1
      src/main/java/password/pwm/PwmAboutProperty.java
  42. 5 3
      src/main/java/password/pwm/PwmApplication.java
  43. 18 7
      src/main/java/password/pwm/PwmConstants.java
  44. 29 15
      src/main/java/password/pwm/PwmEnvironment.java
  45. 1 1
      src/main/java/password/pwm/PwmHttpFilterAuthenticationProvider.java
  46. 5 4
      src/main/java/password/pwm/VerificationMethodSystem.java
  47. 1 1
      src/main/java/password/pwm/bean/FormNonce.java
  48. 9 9
      src/main/java/password/pwm/bean/LocalSessionStateBean.java
  49. 17 13
      src/main/java/password/pwm/bean/LoginInfoBean.java
  50. 3 3
      src/main/java/password/pwm/bean/PrivateKeyCertificate.java
  51. 3 3
      src/main/java/password/pwm/bean/RemoteVerificationRequestBean.java
  52. 4 4
      src/main/java/password/pwm/bean/RemoteVerificationResponseBean.java
  53. 8 8
      src/main/java/password/pwm/bean/ResponseInfoBean.java
  54. 1 1
      src/main/java/password/pwm/bean/SessionLabel.java
  55. 1 1
      src/main/java/password/pwm/bean/SmsItemBean.java
  56. 2 2
      src/main/java/password/pwm/bean/TokenVerificationProgress.java
  57. 18 10
      src/main/java/password/pwm/bean/UserIdentity.java
  58. 12 9
      src/main/java/password/pwm/bean/UserInfoBean.java
  59. 7 7
      src/main/java/password/pwm/bean/pub/PublicUserInfoBean.java
  60. 12 12
      src/main/java/password/pwm/bean/pub/SessionStateInfoBean.java
  61. 3 1
      src/main/java/password/pwm/config/ActionConfiguration.java
  62. 4 4
      src/main/java/password/pwm/config/ChallengeItemConfiguration.java
  63. 33 23
      src/main/java/password/pwm/config/Configuration.java
  64. 15 2
      src/main/java/password/pwm/config/FormConfiguration.java
  65. 23 11
      src/main/java/password/pwm/config/FormUtility.java
  66. 1 1
      src/main/java/password/pwm/config/LDAPPermissionInfo.java
  67. 16 9
      src/main/java/password/pwm/config/PwmSetting.java
  68. 14 6
      src/main/java/password/pwm/config/PwmSettingCategory.java
  69. 18 2
      src/main/java/password/pwm/config/PwmSettingSyntax.java
  70. 1 1
      src/main/java/password/pwm/config/PwmSettingTemplate.java
  71. 1 1
      src/main/java/password/pwm/config/PwmSettingXml.java
  72. 2 0
      src/main/java/password/pwm/config/SettingReader.java
  73. 4 4
      src/main/java/password/pwm/config/SettingUIFunction.java
  74. 4 4
      src/main/java/password/pwm/config/StoredValue.java
  75. 14 10
      src/main/java/password/pwm/config/function/AbstractUriCertImportFunction.java
  76. 5 5
      src/main/java/password/pwm/config/function/ActionCertImportFunction.java
  77. 11 7
      src/main/java/password/pwm/config/function/LdapCertImportFunction.java
  78. 5 5
      src/main/java/password/pwm/config/function/NAAFCertImportFunction.java
  79. 27 6
      src/main/java/password/pwm/config/function/OAuthCertImportFunction.java
  80. 11 7
      src/main/java/password/pwm/config/function/SyslogCertImportFunction.java
  81. 9 5
      src/main/java/password/pwm/config/function/UserMatchViewerFunction.java
  82. 0 1
      src/main/java/password/pwm/config/option/DataStorageMethod.java
  83. 1 1
      src/main/java/password/pwm/config/option/IdentityVerificationMethod.java
  84. 3 3
      src/main/java/password/pwm/config/option/OTPStorageFormat.java
  85. 1 1
      src/main/java/password/pwm/config/option/TLSVersion.java
  86. 22 8
      src/main/java/password/pwm/config/profile/AbstractProfile.java
  87. 26 14
      src/main/java/password/pwm/config/profile/ChallengeProfile.java
  88. 2 2
      src/main/java/password/pwm/config/profile/DeleteAccountProfile.java
  89. 7 4
      src/main/java/password/pwm/config/profile/ForgottenPasswordProfile.java
  90. 8 3
      src/main/java/password/pwm/config/profile/HelpdeskProfile.java
  91. 1 2
      src/main/java/password/pwm/config/profile/LdapProfile.java
  92. 2 2
      src/main/java/password/pwm/config/profile/NewUserProfile.java
  93. 1 1
      src/main/java/password/pwm/config/profile/ProfileType.java
  94. 16 12
      src/main/java/password/pwm/config/profile/PwmPasswordPolicy.java
  95. 17 10
      src/main/java/password/pwm/config/profile/PwmPasswordRule.java
  96. 2 2
      src/main/java/password/pwm/config/profile/UpdateAttributesProfile.java
  97. 2 2
      src/main/java/password/pwm/config/stored/ConfigChangeLog.java
  98. 11 3
      src/main/java/password/pwm/config/stored/ConfigChangeLogImpl.java
  99. 1 1
      src/main/java/password/pwm/config/stored/ConfigurationProperty.java
  100. 5 3
      src/main/java/password/pwm/config/stored/ConfigurationReader.java

+ 329 - 0
checkstyle.xml

@@ -0,0 +1,329 @@
+<?xml version="1.0"?>
+<!--
+  ~ Password Management Servlets (PWM)
+  ~ http://www.pwm-project.org
+  ~
+  ~ Copyright (c) 2006-2009 Novell, Inc.
+  ~ Copyright (c) 2009-2016 The PWM Project
+  ~
+  ~ This program is free software; you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation; either version 2 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program; if not, write to the Free Software
+  ~ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  -->
+
+<!DOCTYPE module PUBLIC
+        "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+        "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+
+<!--
+  PWM Checkstyle definition
+-->
+
+<module name="Checker">
+
+    <!-- Checks that each Java package has a Javadoc file used for commenting. -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage       -->
+    <!--module name="JavadocPackage">
+      <property name="allowLegacy" value="true"/>
+    </module-->
+
+    <module name="FileLength"/>
+
+    <!-- Checks for Headers                              -->
+    <!-- See http://checkstyle.sf.net/config_header.html -->
+    <!--
+    <module name="RegexpHeader">
+        <property name="fileExtensions" value="java"/>
+        <property name="headerFile" value="${checkstyle.header.file}"/>
+    </module>
+    -->
+
+    <module name="FileTabCharacter">
+        <property name="eachLine" value="true"/>
+    </module>
+    <module name="NewlineAtEndOfFile"/>
+
+    <module name="TreeWalker">
+
+        <property name="cacheFile" value="target/checkstyle.cache"/>
+
+        <!-- required for SuppressWarningsFilter (and other Suppress* rules not used here) -->
+        <!-- see http://checkstyle.sourceforge.net/config_annotation.html#SuppressWarningsHolder -->
+        <module name="SuppressWarningsHolder"/>
+
+        <module name="OuterTypeFilename"/>
+        <module name="IllegalTokenText">
+            <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
+            <property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
+            <property name="message" value="Avoid using corresponding octal or Unicode escape."/>
+        </module>
+        <module name="AvoidEscapedUnicodeCharacters">
+            <property name="allowEscapesForControlCharacters" value="true"/>
+            <property name="allowByTailComment" value="true"/>
+            <property name="allowNonPrintableEscapes" value="true"/>
+        </module>
+
+        <!--
+        <module name="LineLength">
+            <property name="max" value="200" />
+            <property name="ignorePattern" value="@version|@see|@todo|TODO"/>
+        </module>
+        -->
+        <!-- required for SuppressionCommentFilter -->
+        <!-- see http://checkstyle.sourceforge.net/config.html#SuppressionCommentFilter -->
+        <!--
+        <module name="FileContentsHolder"/>
+
+        <module name="LeftCurly">
+            <property name="option" value="nl"/>
+        </module>
+
+        -->
+
+        <module name="EmptyBlock">
+            <property name="option" value="TEXT"/>
+            <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+        </module>
+        <!--
+        <module name="LeftCurly">
+            <property name="option" value="nl"/>
+            <property name="maxLineLength" value="100"/>
+        </module>
+        -->
+
+        <module name="RightCurly"/>
+        <module name="RightCurly">
+            <property name="option" value="alone"/>
+            <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
+        </module>
+
+        <!--
+        <module name="MemberName" />
+        -->
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <!--
+        <module name="JavadocMethod">
+            <property name="severity" value="warning"/>
+            <property name="scope" value="protected"/>
+        </module>
+        <module name="JavadocType">
+            <property name="scope" value="protected"/>
+            <property name="allowUnknownTags" value="true" />
+        </module>
+        <module name="JavadocVariable">
+            <property name="severity" value="info"/>
+            <property name="scope" value="protected"/>
+        </module>
+        -->
+
+        <module name="AnnotationLocation">
+            <property name="tokens" value="VARIABLE_DEF"/>
+            <property name="allowSamelineMultipleAnnotations" value="true"/>
+        </module>
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <!--
+        <module name="MemberName">
+            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+        </module>
+        <module name="TypeName">
+        -->
+        <module name="ConstantName"/>
+        <module name="PackageName">
+            <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
+        </module>
+        <module name="LocalVariableName">
+            <property name="tokens" value="VARIABLE_DEF"/>
+            <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
+            <property name="allowOneCharVarInForLoop" value="true"/>
+        </module>
+        <!--
+        <module name="ClassTypeParameterName">
+            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+        </module>
+        -->
+        <module name="MethodTypeParameterName">
+            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+        </module>
+        <module name="InterfaceTypeParameterName">
+            <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
+        </module>
+        <!--
+        <module name="LocalFinalVariableName"/>
+        <module name="LocalVariableName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+        -->
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="AvoidStaticImport"/>
+        <module name="IllegalImport"/>
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <!--
+        <module name="MethodLength"/>
+        <module name="ParameterNumber"/>
+        -->
+
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad">
+            <property name="option" value="space"/>
+        </module>
+        <module name="EmptyForInitializerPad"/>
+        <module name="NeedBraces"/>
+        <!--
+        -->
+        <!-- module name="NoWhitespaceAfter"/ -->
+        <!-- module name="NoWhitespaceBefore"/ -->
+        <!--
+        <module name="OperatorWrap"/>
+        <module name="ParenPad">
+            <property name="option" value="space" />
+        </module>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+        -->
+        <!-- module name="MethodParamPad"/ -->
+        <module name="GenericWhitespace"/>
+        <module name="EmptyLineSeparator">
+            <property name="allowNoEmptyLineBetweenFields" value="true"/>
+        </module>
+
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+        <!--
+        -->
+
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <!--
+        <module name="AvoidNestedBlocks"/>
+        -->
+        <module name="EmptyBlock">
+            <property name="option" value="TEXT"/>
+            <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
+        </module>
+
+
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <!-- module name="AvoidInlineConditionals"/ -->
+        <!--
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+        <module name="HiddenField">
+            <property name="severity" value="warning"/>
+            <property name="ignoreSetter" value="true"/>
+            <property name="ignoreConstructorParameter" value="true"/>
+        </module>
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+        -->
+        <!--
+        <module name="MagicNumber">
+            <property name="ignoreNumbers" value="-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 31, 32, 37, 64, 100, 128, 256, 512, 1000, 1024"/>
+        </module>
+        -->
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!-- module name="DesignForExtension"/ -->
+        <!-- module name="FinalClass"/ -->
+        <!-- module name="HideUtilityClassConstructor"/ -->
+        <!--
+        <module name="InterfaceIsType"/>
+        <module name="VisibilityModifier">
+            <property name="protectedAllowed" value="true"/>
+            <property name="packageAllowed" value="true"/>
+        </module>
+        -->
+
+
+        <!-- future enabled checks -->
+        <!--
+        <module name="TrailingComment"/>
+        <module name="NPathComplexity"/>
+        <module name="EnumTrailingCommaCheck"/> //doesnt yet exist as of checkstyle 2.17
+        <module name="MultipleStringLiterals"/>
+        <module name="InnerAssignment"/>
+        <module name="MagicNumber">
+            <property name="ignoreNumbers" value="-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 31, 32, 37, 64, 100, 128, 256, 512, 1000, 1024"/>
+        </module>
+        <module name="SimplifyBooleanExpression"/>
+        -->
+
+        <!-- coding -->
+        <module name="FallThrough"/>
+        <module name="EqualsHashCode"/>
+        <module name="ArrayTrailingCommaCheck"/>
+        <module name="FinalLocalVariable"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="ModifiedControlVariable"/>
+        <module name="MultipleVariableDeclarations"/>
+        <module name="OneStatementPerLine"/>
+        <module name="FinalParameters"/>
+        <module name="ParameterAssignment"/>
+        <module name="SimplifyBooleanReturn"/>
+        <module name="StringLiteralEquality"/>
+
+        <module name="MutableException"/>
+        <module name="OuterTypeFilename"/>
+        <module name="TodoComment"/>
+        <module name="NoLineWrap"/>
+        <module name="OneTopLevelClass"/>
+        <module name="NoFinalizer"/>
+        <module name="ArrayTypeStyle"/>
+        <module name="UpperEll"/>
+        <module name="PackageDeclaration"/>
+        <module name="NoClone"/>
+    </module>
+
+    <!-- Support @SuppressWarnings (added in Checkstyle 5.7) -->
+    <!-- see http://checkstyle.sourceforge.net/config.html#SuppressWarningsFilter -->
+    <module name="SuppressWarningsFilter"/>
+
+    <!-- Checks properties file for a duplicated properties. -->
+    <!-- See http://checkstyle.sourceforge.net/config_misc.html#UniqueProperties -->
+    <module name="UniqueProperties"/>
+
+    <!-- Support CHECKSTYLE_OFF: regexp and CHECKSTYLE_ON: regexp comments to disable/enable some checks -->
+    <!-- see http://checkstyle.sourceforge.net/config.html#SuppressionCommentFilter -->
+    <!--
+    <module name="SuppressionCommentFilter">
+        <property name="offCommentFormat" value="CHECKSTYLE_OFF\: (.+)"/>
+        <property name="onCommentFormat" value="CHECKSTYLE_ON\: (.+)"/>
+        <property name="checkFormat" value="$1"/>
+    </module>
+    -->
+
+</module>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.jar.md5

@@ -0,0 +1 @@
+7863839b6318164c5788114e32fe7e9b

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.jar.sha1

@@ -0,0 +1 @@
+3807ea8e61ffacd7cbe5aea297e5c66332e345f0

+ 8 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>ChallengeResponseLCM</artifactId>
+  <version>2013.04.18</version>
+</project>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom.md5

@@ -0,0 +1 @@
+86e9d630cddc9ec23c0eaf4f5f8eff1f

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/2013.04.18/ChallengeResponseLCM-2013.04.18.pom.sha1

@@ -0,0 +1 @@
+65d5e45a9e68bb12811614ef2dd79f82de500bb3

+ 12 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>ChallengeResponseLCM</artifactId>
+  <versioning>
+    <release>2013.04.18</release>
+    <versions>
+      <version>2013.04.18</version>
+    </versions>
+    <lastUpdated>20161116075037</lastUpdated>
+  </versioning>
+</metadata>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml.md5

@@ -0,0 +1 @@
+7f0cf42248660c824301b7f56d63d199

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ChallengeResponseLCM/maven-metadata.xml.sha1

@@ -0,0 +1 @@
+9f0d73e71919a155d6691f2346e8ee423a44d160

BIN
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar


+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar.md5

@@ -0,0 +1 @@
+8e6c4c9d1e86b6f7538e1c408b0ea18e

+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.jar.sha1

@@ -0,0 +1 @@
+9eebfc7fe4e553dfbeb77acd2ea2c6880c84b88c

+ 8 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>NMASToolkit</artifactId>
+  <version>2013.04.26</version>
+</project>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom.md5

@@ -0,0 +1 @@
+3324051c79bc427f8f3e535610ebb748

+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/2013.04.26/NMASToolkit-2013.04.26.pom.sha1

@@ -0,0 +1 @@
+e5c1350c1565567fa533c7bcc96eb5263f583512

+ 12 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>NMASToolkit</artifactId>
+  <versioning>
+    <release>2013.04.26</release>
+    <versions>
+      <version>2013.04.26</version>
+    </versions>
+    <lastUpdated>20161116075716</lastUpdated>
+  </versioning>
+</metadata>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml.md5

@@ -0,0 +1 @@
+86303c1eaa049c832db5b114bfc713ac

+ 1 - 0
local-maven-repo/com/novell/security/nmas/NMASToolkit/maven-metadata.xml.sha1

@@ -0,0 +1 @@
+9ef00eddb5ca98cab52686236def296d01d91648

BIN
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar


+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar.md5

@@ -0,0 +1 @@
+b0eb9ec4e8f04166b0565b5913e45bd7

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.jar.sha1

@@ -0,0 +1 @@
+b74a91783d911d3ab6bc6f7dc277d413578de9ae

+ 8 - 0
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>ldap</artifactId>
+  <version>2013.04.26</version>
+</project>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom.md5

@@ -0,0 +1 @@
+a831e428dae2349a55eb188e88ca2181

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/2013.04.26/ldap-2013.04.26.pom.sha1

@@ -0,0 +1 @@
+aa946d2d33ce8716c0a33da0df068f51e6ab98a0

+ 12 - 0
local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>ldap</artifactId>
+  <versioning>
+    <release>2013.04.26</release>
+    <versions>
+      <version>2013.04.26</version>
+    </versions>
+    <lastUpdated>20161116075553</lastUpdated>
+  </versioning>
+</metadata>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml.md5

@@ -0,0 +1 @@
+4da3de88467fca9a5e73568edcd389ca

+ 1 - 0
local-maven-repo/com/novell/security/nmas/ldap/maven-metadata.xml.sha1

@@ -0,0 +1 @@
+12a20bac12f07eed9bc584a3c424bb5db129bfc4

BIN
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar


+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar.md5

@@ -0,0 +1 @@
+19c52827e00fb50ced72add8136a4a1d

+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.jar.sha1

@@ -0,0 +1 @@
+8fa6f0b43c4cc0fc0c9d98ac1ba0a9d5ba7bd9bf

+ 8 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>nmasclient</artifactId>
+  <version>2013.04.26</version>
+</project>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom.md5

@@ -0,0 +1 @@
+c96d24e2dabc764fbcd5b8f378cdb183

+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/2013.04.26/nmasclient-2013.04.26.pom.sha1

@@ -0,0 +1 @@
+88501a4f2b8651487eecafc43b7f66d875d45d60

+ 12 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>com.novell.security.nmas</groupId>
+  <artifactId>nmasclient</artifactId>
+  <versioning>
+    <release>2013.04.26</release>
+    <versions>
+      <version>2013.04.26</version>
+    </versions>
+    <lastUpdated>20161116075517</lastUpdated>
+  </versioning>
+</metadata>

+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml.md5

@@ -0,0 +1 @@
+ac7c3c903f1a2fe6dbf3ba79c1d75010

+ 1 - 0
local-maven-repo/com/novell/security/nmas/nmasclient/maven-metadata.xml.sha1

@@ -0,0 +1 @@
+16ec025b28fa929f3d8b526df3017fd844342fd1

+ 50 - 3
pom.xml

@@ -11,6 +11,8 @@
     <version>1.8.0-SNAPSHOT</version>
     <packaging>war</packaging>
 
+    <name>PWM Password Self Service</name>
+
     <licenses>
         <license>
             <name>The GNU General Public License (GPL) Version 2</name>
@@ -42,6 +44,12 @@
                 <skipTests>true</skipTests>
             </properties>
         </profile>
+        <profile>
+            <id>nojavadocs</id>
+            <properties>
+                <maven.javadoc.skip>true</maven.javadoc.skip>
+            </properties>
+        </profile>
         <profile>
             <id>doclint-java8-disable</id>
             <activation>
@@ -153,11 +161,37 @@
                 <version>2.6</version>
                 <configuration>
                     <archiveClasses>true</archiveClasses>
-                    <!--
                     <packagingExcludes>WEB-INF/classes</packagingExcludes>
-                    -->
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <version>2.17</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>com.puppycrawl.tools</groupId>
+                        <artifactId>checkstyle</artifactId>
+                        <version>7.2</version>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>validate</id>
+                        <phase>validate</phase>
+                        <configuration>
+                            <configLocation>checkstyle.xml</configLocation>
+                            <encoding>UTF-8</encoding>
+                            <consoleOutput>true</consoleOutput>
+                            <includeTestResources>false</includeTestResources>
+                            <failsOnError>true</failsOnError>
+                        </configuration>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
             <plugin>
                 <artifactId>maven-resources-plugin</artifactId>
                 <version>2.7</version>
@@ -226,7 +260,7 @@
                         <artifactId>jspc-compiler-tomcat7</artifactId>
                         <version>2.0.2</version>
                     </dependency>
-                </dependencies>
+				</dependencies>
                 <configuration>
                     <includeInProject>false</includeInProject>
                 </configuration>
@@ -246,6 +280,7 @@
                     <filesets>
                         <fileset><directory>src/main/angular/dist</directory></fileset>
                         <fileset><directory>src/main/angular/node_modules</directory></fileset>
+                        <fileset><directory>src/main/webapp/public/resources/app</directory></fileset>
                     </filesets>
                 </configuration>
                 <executions>
@@ -426,6 +461,18 @@
                             <arguments>run build</arguments>
                         </configuration>
                     </execution>
+
+                    <!-- run TypeScript compiler (You can execute directly using: "mvn frontend:npm@run-sync") -->
+                    <execution>
+                        <id>run-sync</id>
+                        <phase>none</phase>
+                        <goals>
+                            <goal>npm</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>run sync</arguments>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
         </plugins>

+ 14 - 14
src/main/angular/src/services/people.service.ts

@@ -92,7 +92,7 @@ export default class PeopleService extends PwmService implements IPeopleService
 
     getOrgChartData(personId: string): angular.IPromise<OrgChartData> {
         return this.$http
-            .post(this.getServerUrl('orgChartData'), { userKey: personId })
+            .get(this.getServerUrl('orgChartData'), { params: { userKey: personId } })
             .then((response) => {
                 let responseData = response.data['data'];
 
@@ -108,12 +108,12 @@ export default class PeopleService extends PwmService implements IPeopleService
     }
 
     getPerson(id: string): IPromise<Person> {
-        return this.$http.post(this.getServerUrl('detail'), {
-            userKey: id
-        }).then((response) => {
-            let person: Person = new Person(response.data['data']);
-            return this.$q.resolve(person);
-        });
+        return this.$http
+            .get(this.getServerUrl('detail'), { params: { userKey: id } })
+            .then((response) => {
+                let person: Person = new Person(response.data['data']);
+                return this.$q.resolve(person);
+            });
     }
 
     isOrgChartEnabled(id: string): IPromise<boolean> {
@@ -122,13 +122,13 @@ export default class PeopleService extends PwmService implements IPeopleService
     }
 
     search(query: string): IPromise<SearchResult> {
-        return this.$http.post(this.getServerUrl('search', { 'includeDisplayName': true }), {
-            username: query
-        }).then((response) => {
-            let receivedData: any = response.data['data'];
-            let searchResult: SearchResult = new SearchResult(receivedData);
+        return this.$http
+            .get(this.getServerUrl('search', { 'includeDisplayName': true }), { params: { username: query } })
+            .then((response) => {
+                let receivedData: any = response.data['data'];
+                let searchResult: SearchResult = new SearchResult(receivedData);
 
-            return this.$q.resolve(searchResult);
-        });
+                return this.$q.resolve(searchResult);
+            });
     }
 }

+ 1 - 1
src/main/java/password/pwm/AppProperty.java

@@ -270,7 +270,7 @@ public enum AppProperty {
     private final String key;
     private String defaultValue;
 
-    AppProperty(String key) {
+    AppProperty(final String key) {
         this.key = key;
     }
 

+ 1 - 1
src/main/java/password/pwm/Permission.java

@@ -68,7 +68,7 @@ public enum Permission {
 
 // -------------------------- ENUMERATIONS --------------------------
 
-    public enum PERMISSION_STATUS {
+    public enum PermissionStatus {
         UNCHECKED,
         GRANTED,
         DENIED

+ 1 - 1
src/main/java/password/pwm/PwmAboutProperty.java

@@ -213,4 +213,4 @@ public enum PwmAboutProperty {
         }
 
     }
-}
+}

+ 5 - 3
src/main/java/password/pwm/PwmApplication.java

@@ -127,7 +127,7 @@ public class PwmApplication {
 
         private String key;
 
-        AppAttribute(String key) {
+        AppAttribute(final String key) {
             this.key = key;
         }
 
@@ -174,7 +174,9 @@ public class PwmApplication {
         if (!pwmEnvironment.isInternalRuntimeInstance() && !pwmEnvironment.getFlags().contains(PwmEnvironment.ApplicationFlag.CommandLineInstance)) {
             final String log4jFileName = pwmEnvironment.getConfig().readSettingAsString(PwmSetting.EVENTS_JAVA_LOG4JCONFIG_FILE);
             final File log4jFile = FileSystemUtility.figureFilepath(log4jFileName, pwmEnvironment.getApplicationPath());
-            final String consoleLevel, fileLevel;
+            final String consoleLevel;
+            final String fileLevel;
+
             switch (getApplicationMode()) {
                 case ERROR:
                 case NEW:
@@ -312,7 +314,7 @@ public class PwmApplication {
         }
 
         try {
-            Map<PwmAboutProperty,String> infoMap = PwmAboutProperty.makeInfoBean(this);
+            final Map<PwmAboutProperty,String> infoMap = PwmAboutProperty.makeInfoBean(this);
             LOGGER.trace("application info: " + JsonUtil.serializeMap(infoMap));
         } catch (Exception e) {
             LOGGER.error("error generating about application bean: " + e.getMessage());

+ 18 - 7
src/main/java/password/pwm/PwmConstants.java

@@ -31,7 +31,14 @@ import password.pwm.util.secure.PwmHashAlgorithm;
 import java.nio.charset.Charset;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.TimeZone;
 
 /**
  * Constant values used throughout the servlet.
@@ -90,6 +97,7 @@ public abstract class PwmConstants {
     public static final String DEFAULT_DATETIME_FORMAT_STR = readPwmConstantsBundle("locale.defaultDateTimeFormat");
     public static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone(readPwmConstantsBundle("locale.defaultTimeZone"));
     public static final DateFormat DEFAULT_DATETIME_FORMAT = new SimpleDateFormat(DEFAULT_DATETIME_FORMAT_STR, DEFAULT_LOCALE);
+
     static {
         DEFAULT_DATETIME_FORMAT.setTimeZone(DEFAULT_TIMEZONE);
     }
@@ -141,6 +149,7 @@ public abstract class PwmConstants {
     public static final String LOG_REMOVED_VALUE_REPLACEMENT = readPwmConstantsBundle("log.removedValue");
 
     public static final Collection<Locale> INCLUDED_LOCALES;
+
     static {
         final List<Locale> localeList = new ArrayList<>();
         final String inputString = readPwmConstantsBundle("includedLocales");
@@ -151,7 +160,7 @@ public abstract class PwmConstants {
         INCLUDED_LOCALES = Collections.unmodifiableCollection(localeList);
     }
 
-    public enum JSP_URL {
+    public enum JspUrl {
 
         INIT("init.jsp"),
         ERROR("error.jsp"),
@@ -231,7 +240,7 @@ public abstract class PwmConstants {
         private String path;
         private static final String JSP_ROOT_URL = "/WEB-INF/jsp/";
 
-        JSP_URL(String path) {
+        JspUrl(final String path) {
             this.path = path;
         }
 
@@ -262,6 +271,7 @@ public abstract class PwmConstants {
     public static final String PARAM_SKIP_CAPTCHA = "skipCaptcha";
     public static final String PARAM_POST_LOGIN_URL = "posturl";
     public static final String PARAM_FILE_UPLOAD = "fileUpload";
+    public static final String PARAM_RECOVERY_OAUTH_RESULT = "roauthResults";
 
     public static final String COOKIE_PERSISTENT_CONFIG_LOGIN = "persistentConfigLogin";
 
@@ -311,7 +321,7 @@ public abstract class PwmConstants {
             "I changed my password to \"incorrect\", so whenever i forget, it will tell me \"your password is incorrect\".",
             "passwords are like underwear, changing underwear regularly is a good thing.", //menno
             "daisy, daisy, give me your password do...",
-            "it's a wholesome can of software goodness" // thx krowten
+            "it's a wholesome can of software goodness", // thx krowten
 
     };
 
@@ -323,6 +333,7 @@ public abstract class PwmConstants {
     private static String readBuildInfoBundle(final String key) {
         return readBuildInfoBundle(key, null);
     }
+
     private static String readBuildInfoBundle(final String key, final String defaultValue) {
         final ResourceBundle resourceBundle = ResourceBundle.getBundle("password.pwm.BuildInformation");
         if (resourceBundle.containsKey(key)) {
@@ -368,7 +379,7 @@ public abstract class PwmConstants {
 
         private final String httpName;
 
-        HttpHeader(String httpName)
+        HttpHeader(final String httpName)
         {
             this.httpName = httpName;
         }
@@ -394,7 +405,7 @@ public abstract class PwmConstants {
 
         private final String headerValue;
 
-        ContentTypeValue(String headerValue) {
+        ContentTypeValue(final String headerValue) {
             this.headerValue = headerValue;
         }
 
@@ -410,7 +421,7 @@ public abstract class PwmConstants {
 
         private String headerValue;
 
-        AcceptValue(String headerValue) {
+        AcceptValue(final String headerValue) {
             this.headerValue = headerValue;
         }
 

+ 29 - 15
src/main/java/password/pwm/PwmEnvironment.java

@@ -32,10 +32,22 @@ import password.pwm.util.JsonUtil;
 import password.pwm.util.TimeDuration;
 import password.pwm.util.logging.PwmLogger;
 
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.io.StringWriter;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 public class PwmEnvironment {
@@ -99,7 +111,8 @@ public class PwmEnvironment {
         public List<String> possibleNames(final String contextName) {
             final List<String> returnValues = new ArrayList<>();
             if (contextName != null) {
-                final String value = PwmConstants.PWM_APP_NAME.toLowerCase() // java property format <app>.<context>.<paramName> like pwm.pwm.applicationFlag
+                // java property format <app>.<context>.<paramName> like pwm.pwm.applicationFlag
+                final String value = PwmConstants.PWM_APP_NAME.toLowerCase()
                         + "."
                         + contextName
                         + "."
@@ -110,7 +123,8 @@ public class PwmEnvironment {
                 returnValues.add(value.toUpperCase().replace(".", "_"));
             }
             {
-                final String value = PwmConstants.PWM_APP_NAME.toLowerCase() // java property format <app>.<paramName> like pwm.applicationFlag
+                // java property format <app>.<paramName> like pwm.applicationFlag
+                final String value = PwmConstants.PWM_APP_NAME.toLowerCase()
                         + "."
                         + this.toString();
                 returnValues.add(value);
@@ -264,7 +278,7 @@ public class PwmEnvironment {
             return Collections.emptyMap();
         }
 
-        public static String readValueFromSystem(PwmEnvironment.EnvironmentParameter parameter, final String contextName) {
+        public static String readValueFromSystem(final PwmEnvironment.EnvironmentParameter parameter, final String contextName) {
             final List<String> namePossibilities = parameter.possibleNames(contextName);
 
             for (final String propertyName : namePossibilities){
@@ -376,12 +390,12 @@ public class PwmEnvironment {
             this.params                  = pwmEnvironment.parameters;
         }
 
-        public Builder(Configuration config, File applicationPath) {
+        public Builder(final Configuration config, final File applicationPath) {
             this.config = config;
             this.applicationPath = applicationPath;
         }
 
-        public Builder setApplicationMode(PwmApplicationMode applicationMode) {
+        public Builder setApplicationMode(final PwmApplicationMode applicationMode) {
             if (PwmConstants.TRIAL_MODE && applicationMode == PwmApplicationMode.RUNNING) {
                 LOGGER.info("application is in trial mode");
                 this.applicationMode = PwmApplicationMode.CONFIGURATION;
@@ -391,22 +405,22 @@ public class PwmEnvironment {
             return this;
         }
 
-        public Builder setInternalRuntimeInstance(boolean internalRuntimeInstance) {
+        public Builder setInternalRuntimeInstance(final boolean internalRuntimeInstance) {
             this.internalRuntimeInstance = internalRuntimeInstance;
             return this;
         }
 
-        public Builder setConfigurationFile(File configurationFile) {
+        public Builder setConfigurationFile(final File configurationFile) {
             this.configurationFile = configurationFile;
             return this;
         }
 
-        public Builder setContextManager(ContextManager contextManager) {
+        public Builder setContextManager(final ContextManager contextManager) {
             this.contextManager = contextManager;
             return this;
         }
 
-        public Builder setFlags(Collection<ApplicationFlag> flags) {
+        public Builder setFlags(final Collection<ApplicationFlag> flags) {
             this.flags.clear();
             if (flags != null) {
                 this.flags.addAll(flags);
@@ -414,7 +428,7 @@ public class PwmEnvironment {
             return this;
         }
 
-        public Builder setParams(Map<ApplicationParameter,String> params) {
+        public Builder setParams(final Map<ApplicationParameter,String> params) {
             this.params.clear();
             if (params != null) {
                 this.params.putAll(params);
@@ -422,7 +436,7 @@ public class PwmEnvironment {
             return this;
         }
 
-        public Builder setConfig(Configuration config) {
+        public Builder setConfig(final Configuration config) {
             this.config = config;
             return this;
         }
@@ -483,7 +497,7 @@ public class PwmEnvironment {
         private FileLock lock;
         private final File lockfile;
 
-        public FileLocker() {
+        FileLocker() {
             final String lockfileName = config.readAppProperty(AppProperty.APPLICATION_FILELOCK_FILENAME);
             lockfile = new File(getApplicationPath(), lockfileName);
         }
@@ -514,7 +528,7 @@ public class PwmEnvironment {
             }
         }
 
-        void writeLockFileContents(RandomAccessFile file) {
+        void writeLockFileContents(final RandomAccessFile file) {
             try {
                 final Properties props = new Properties();
                 props.put("timestamp", PwmConstants.DEFAULT_DATETIME_FORMAT.format(new Date()));

+ 1 - 1
src/main/java/password/pwm/PwmHttpFilterAuthenticationProvider.java

@@ -28,7 +28,7 @@ import password.pwm.http.PwmRequest;
 import java.io.IOException;
 
 public interface PwmHttpFilterAuthenticationProvider {
-    void attemptAuthentication(final PwmRequest pwmRequest)
+    void attemptAuthentication( PwmRequest pwmRequest)
             throws PwmUnrecoverableException, IOException;
 
     boolean hasRedirectedResponse();

+ 5 - 4
src/main/java/password/pwm/VerificationMethodSystem.java

@@ -41,6 +41,7 @@ public interface VerificationMethodSystem {
 
     interface UserPrompt {
         String getDisplayPrompt();
+
         String getIdentifier();
     }
 
@@ -52,7 +53,7 @@ public interface VerificationMethodSystem {
             return displayPrompt;
         }
 
-        public void setDisplayPrompt(String displayPrompt) {
+        public void setDisplayPrompt(final String displayPrompt) {
             this.displayPrompt = displayPrompt;
         }
 
@@ -60,7 +61,7 @@ public interface VerificationMethodSystem {
             return identifier;
         }
 
-        public void setIdentifier(String identifier) {
+        public void setIdentifier(final String identifier) {
             this.identifier = identifier;
         }
     }
@@ -69,11 +70,11 @@ public interface VerificationMethodSystem {
 
     String getCurrentDisplayInstructions();
 
-    ErrorInformation respondToPrompts(final Map<String, String> answers) throws PwmUnrecoverableException;
+    ErrorInformation respondToPrompts( Map<String, String> answers) throws PwmUnrecoverableException;
 
     VerificationState getVerificationState();
 
-    void init(final PwmApplication pwmApplication, final UserInfoBean userInfoBean, SessionLabel sessionLabel, Locale locale)
+    void init( PwmApplication pwmApplication,  UserInfoBean userInfoBean, SessionLabel sessionLabel, Locale locale)
             throws PwmUnrecoverableException
             ;
 

+ 1 - 1
src/main/java/password/pwm/bean/FormNonce.java

@@ -41,7 +41,7 @@ public class FormNonce implements Serializable {
     @SerializedName("p")
     private final String payload;
 
-    public FormNonce(String sessionGUID, Date timestamp,  int reqCounter, String payload) {
+    public FormNonce(final String sessionGUID, final Date timestamp, final int reqCounter, final String payload) {
         this.sessionGUID = sessionGUID;
         this.timestamp = timestamp;
         this.reqCounter = reqCounter;

+ 9 - 9
src/main/java/password/pwm/bean/LocalSessionStateBean.java

@@ -83,7 +83,7 @@ public class LocalSessionStateBean implements Serializable {
         return passwordModified;
     }
 
-    public void setPasswordModified(boolean passwordModified) {
+    public void setPasswordModified(final boolean passwordModified) {
         this.passwordModified = passwordModified;
     }
 
@@ -123,7 +123,7 @@ public class LocalSessionStateBean implements Serializable {
         return preCaptchaRequestURL;
     }
 
-    public void setPreCaptchaRequestURL(String preCaptchaRequestURL) {
+    public void setPreCaptchaRequestURL(final String preCaptchaRequestURL) {
         this.preCaptchaRequestURL = preCaptchaRequestURL;
     }
 
@@ -183,7 +183,7 @@ public class LocalSessionStateBean implements Serializable {
         return theme;
     }
 
-    public void setTheme(String theme) {
+    public void setTheme(final String theme) {
         this.theme = theme;
     }
 
@@ -199,7 +199,7 @@ public class LocalSessionStateBean implements Serializable {
         return sessionCreationTime;
     }
 
-    public void setSessionCreationTime(Date sessionCreationTime) {
+    public void setSessionCreationTime(final Date sessionCreationTime) {
         this.sessionCreationTime = sessionCreationTime;
     }
 
@@ -207,7 +207,7 @@ public class LocalSessionStateBean implements Serializable {
         return sessionLastAccessedTime;
     }
 
-    public void setSessionLastAccessedTime(Date sessionLastAccessedTime) {
+    public void setSessionLastAccessedTime(final Date sessionLastAccessedTime) {
         this.sessionLastAccessedTime = sessionLastAccessedTime;
     }
 
@@ -215,7 +215,7 @@ public class LocalSessionStateBean implements Serializable {
         return lastRequestURL;
     }
 
-    public void setLastRequestURL(String lastRequestURL) {
+    public void setLastRequestURL(final String lastRequestURL) {
         this.lastRequestURL = lastRequestURL;
     }
 
@@ -236,7 +236,7 @@ public class LocalSessionStateBean implements Serializable {
         return oauthInProgress;
     }
 
-    public void setOauthInProgress(boolean oauthInProgress)
+    public void setOauthInProgress(final boolean oauthInProgress)
     {
         this.oauthInProgress = oauthInProgress;
     }
@@ -245,7 +245,7 @@ public class LocalSessionStateBean implements Serializable {
         return restClientKey;
     }
 
-    public void setRestClientKey(String restClientKey) {
+    public void setRestClientKey(final String restClientKey) {
         this.restClientKey = restClientKey;
     }
 
@@ -257,7 +257,7 @@ public class LocalSessionStateBean implements Serializable {
         return sessionIdRecycleNeeded;
     }
 
-    public void setSessionIdRecycleNeeded(boolean sessionIdRecycleNeeded) {
+    public void setSessionIdRecycleNeeded(final boolean sessionIdRecycleNeeded) {
         this.sessionIdRecycleNeeded = sessionIdRecycleNeeded;
     }
 }

+ 17 - 13
src/main/java/password/pwm/bean/LoginInfoBean.java

@@ -32,7 +32,11 @@ import password.pwm.util.JsonUtil;
 import password.pwm.util.PasswordData;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -106,7 +110,7 @@ public class LoginInfoBean implements Serializable {
         return type;
     }
 
-    public void setType(AuthenticationType type)
+    public void setType(final AuthenticationType type)
     {
         this.type = type;
     }
@@ -116,7 +120,7 @@ public class LoginInfoBean implements Serializable {
         return pw;
     }
 
-    public void setUserCurrentPassword(PasswordData userCurrentPassword)
+    public void setUserCurrentPassword(final PasswordData userCurrentPassword)
     {
         this.pw = userCurrentPassword;
     }
@@ -136,7 +140,7 @@ public class LoginInfoBean implements Serializable {
         return oauthExp;
     }
 
-    public void setOauthExp(Date oauthExp)
+    public void setOauthExp(final Date oauthExp)
     {
         this.oauthExp = oauthExp;
     }
@@ -146,7 +150,7 @@ public class LoginInfoBean implements Serializable {
         return oauthRefToken;
     }
 
-    public void setOauthRefToken(String oauthRefToken)
+    public void setOauthRefToken(final String oauthRefToken)
     {
         this.oauthRefToken = oauthRefToken;
     }
@@ -159,7 +163,7 @@ public class LoginInfoBean implements Serializable {
         return authSource;
     }
 
-    public void setAuthSource(PwmAuthenticationSource authSource) {
+    public void setAuthSource(final PwmAuthenticationSource authSource) {
         this.authSource = authSource;
     }
 
@@ -167,7 +171,7 @@ public class LoginInfoBean implements Serializable {
         return guid;
     }
 
-    public void setGuid(String guid) {
+    public void setGuid(final String guid) {
         this.guid = guid;
     }
 
@@ -175,7 +179,7 @@ public class LoginInfoBean implements Serializable {
         return reqCounter;
     }
 
-    public void setReqCounter(int reqCounter) {
+    public void setReqCounter(final int reqCounter) {
         this.reqCounter = reqCounter;
     }
 
@@ -183,7 +187,7 @@ public class LoginInfoBean implements Serializable {
         return userIdentity;
     }
 
-    public void setUserIdentity(UserIdentity userIdentity) {
+    public void setUserIdentity(final UserIdentity userIdentity) {
         this.userIdentity = userIdentity;
     }
 
@@ -191,7 +195,7 @@ public class LoginInfoBean implements Serializable {
         return auth;
     }
 
-    public void setAuthenticated(boolean authenticated) {
+    public void setAuthenticated(final boolean authenticated) {
         this.auth = authenticated;
     }
 
@@ -199,7 +203,7 @@ public class LoginInfoBean implements Serializable {
         return pw;
     }
 
-    public void setPw(PasswordData pw) {
+    public void setPw(final PasswordData pw) {
         this.pw = pw;
     }
 
@@ -207,11 +211,11 @@ public class LoginInfoBean implements Serializable {
         return reqTime;
     }
 
-    public void setReqTime(Date reqTime) {
+    public void setReqTime(final Date reqTime) {
         this.reqTime = reqTime;
     }
 
-    public boolean isLoginFlag(LoginFlag loginStateFlag) {
+    public boolean isLoginFlag(final LoginFlag loginStateFlag) {
         return loginFlags.contains(loginStateFlag);
     }
 

+ 3 - 3
src/main/java/password/pwm/bean/PrivateKeyCertificate.java

@@ -27,10 +27,10 @@ import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
 
 public class PrivateKeyCertificate implements Serializable {
-    final private X509Certificate[] certificates;
-    final private PrivateKey key;
+    private final X509Certificate[] certificates;
+    private final PrivateKey key;
 
-    public PrivateKeyCertificate(X509Certificate certificates[], PrivateKey key) {
+    public PrivateKeyCertificate(final X509Certificate[] certificates, final PrivateKey key) {
         this.certificates = certificates;
         this.key = key;
     }

+ 3 - 3
src/main/java/password/pwm/bean/RemoteVerificationRequestBean.java

@@ -36,7 +36,7 @@ public class RemoteVerificationRequestBean implements Serializable {
         return responseSessionID;
     }
 
-    public void setResponseSessionID(String responseSessionID) {
+    public void setResponseSessionID(final String responseSessionID) {
         this.responseSessionID = responseSessionID;
     }
 
@@ -44,7 +44,7 @@ public class RemoteVerificationRequestBean implements Serializable {
         return userInfo;
     }
 
-    public void setUserInfo(PublicUserInfoBean userInfo) {
+    public void setUserInfo(final PublicUserInfoBean userInfo) {
         this.userInfo = userInfo;
     }
 
@@ -52,7 +52,7 @@ public class RemoteVerificationRequestBean implements Serializable {
         return userResponses;
     }
 
-    public void setUserResponses(Map<String, String> userResponses) {
+    public void setUserResponses(final Map<String, String> userResponses) {
         this.userResponses = userResponses;
     }
 }

+ 4 - 4
src/main/java/password/pwm/bean/RemoteVerificationResponseBean.java

@@ -37,7 +37,7 @@ public class RemoteVerificationResponseBean implements Serializable {
         return displayInstructions;
     }
 
-    public void setDisplayInstructions(String displayInstructions) {
+    public void setDisplayInstructions(final String displayInstructions) {
         this.displayInstructions = displayInstructions;
     }
 
@@ -45,7 +45,7 @@ public class RemoteVerificationResponseBean implements Serializable {
         return verificationState;
     }
 
-    public void setVerificationState(VerificationMethodSystem.VerificationState verificationState) {
+    public void setVerificationState(final VerificationMethodSystem.VerificationState verificationState) {
         this.verificationState = verificationState;
     }
 
@@ -53,7 +53,7 @@ public class RemoteVerificationResponseBean implements Serializable {
         return userPrompts;
     }
 
-    public void setUserPrompts(List<VerificationMethodSystem.UserPromptBean> userPrompts) {
+    public void setUserPrompts(final List<VerificationMethodSystem.UserPromptBean> userPrompts) {
         this.userPrompts = userPrompts;
     }
 
@@ -61,7 +61,7 @@ public class RemoteVerificationResponseBean implements Serializable {
         return errorMessage;
     }
 
-    public void setErrorMessage(String errorMessage) {
+    public void setErrorMessage(final String errorMessage) {
         this.errorMessage = errorMessage;
     }
 }

+ 8 - 8
src/main/java/password/pwm/bean/ResponseInfoBean.java

@@ -32,13 +32,13 @@ import java.util.Locale;
 import java.util.Map;
 
 public class ResponseInfoBean implements Serializable {
-    final private Map<Challenge,String> crMap;
-    final private Map<Challenge,String> helpdeskCrMap;
-    final private Locale locale;
-    final private int minRandoms;
-    final private String csIdentifier;
-    final private DataStorageMethod dataStorageMethod;
-    final private Answer.FormatType formatType;
+    private final Map<Challenge,String> crMap;
+    private final Map<Challenge,String> helpdeskCrMap;
+    private final Locale locale;
+    private final int minRandoms;
+    private final String csIdentifier;
+    private final DataStorageMethod dataStorageMethod;
+    private final Answer.FormatType formatType;
 
     private Date timestamp;
 
@@ -84,7 +84,7 @@ public class ResponseInfoBean implements Serializable {
         return timestamp;
     }
 
-    public void setTimestamp(Date timestamp) {
+    public void setTimestamp(final Date timestamp) {
         this.timestamp = timestamp;
     }
 

+ 1 - 1
src/main/java/password/pwm/bean/SessionLabel.java

@@ -33,7 +33,7 @@ public class SessionLabel implements Serializable {
     private final String srcAddress;
     private final String srcHostname;
 
-    public SessionLabel(String sessionID, UserIdentity userIdentity, String username, final String srcAddress, final String srcHostname)
+    public SessionLabel(final String sessionID, final UserIdentity userIdentity, final String username, final String srcAddress, final String srcHostname)
     {
         this.sessionID = sessionID;
         this.userIdentity = userIdentity;

+ 1 - 1
src/main/java/password/pwm/bean/SmsItemBean.java

@@ -46,7 +46,7 @@ public class SmsItemBean implements Serializable {
         return message;
     }
 
-    public void setMessage(String message) {
+    public void setMessage(final String message) {
         this.message = message;
     }
 

+ 2 - 2
src/main/java/password/pwm/bean/TokenVerificationProgress.java

@@ -49,7 +49,7 @@ public class TokenVerificationProgress implements Serializable {
         return phase;
     }
 
-    public void setPhase(TokenChannel phase) {
+    public void setPhase(final TokenChannel phase) {
         this.phase = phase;
     }
 
@@ -57,7 +57,7 @@ public class TokenVerificationProgress implements Serializable {
         return tokenDisplayText;
     }
 
-    public void setTokenDisplayText(String tokenDisplayText) {
+    public void setTokenDisplayText(final String tokenDisplayText) {
         this.tokenDisplayText = tokenDisplayText;
     }
 }

+ 18 - 10
src/main/java/password/pwm/bean/UserIdentity.java

@@ -161,15 +161,23 @@ public class UserIdentity implements Serializable, Comparable {
     }
 
     @Override
-    public boolean equals(Object o)
+    public boolean equals(final Object o)
     {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
 
-        UserIdentity that = (UserIdentity) o;
+        final UserIdentity that = (UserIdentity) o;
 
-        if (!ldapProfile.equals(that.ldapProfile)) return false;
-        if (!userDN.equals(that.userDN)) return false;
+        if (!ldapProfile.equals(that.ldapProfile)) {
+            return false;
+        }
+        if (!userDN.equals(that.userDN)) {
+            return false;
+        }
 
         return true;
     }
@@ -183,10 +191,10 @@ public class UserIdentity implements Serializable, Comparable {
     }
 
     @Override
-    public int compareTo(Object o) {
-        String thisStr = (ldapProfile == null ? "_" : ldapProfile) + userDN;
-        UserIdentity otherIdentity = (UserIdentity)o;
-        String otherStr = (otherIdentity.ldapProfile == null ? "_" : otherIdentity.ldapProfile) + otherIdentity.userDN;
+    public int compareTo(final Object o) {
+        final String thisStr = (ldapProfile == null ? "_" : ldapProfile) + userDN;
+        final UserIdentity otherIdentity = (UserIdentity)o;
+        final String otherStr = (otherIdentity.ldapProfile == null ? "_" : otherIdentity.ldapProfile) + otherIdentity.userDN;
 
         return thisStr.compareTo(otherStr);
     }

+ 12 - 9
src/main/java/password/pwm/bean/UserInfoBean.java

@@ -28,7 +28,10 @@ import password.pwm.config.profile.PwmPasswordPolicy;
 import password.pwm.util.otp.OTPUserRecord;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * A bean that is stored in the user's session.   Only information that is particular to logged in user is stored in the
@@ -36,11 +39,11 @@ import java.util.*;
  * <p/>
  * For any given HTTP session using PWM, several {@link UserInfoBean}s may be created during
  * the life of the session, however at any given time, no more than one will be stored in
- * the HTTP session.  If the user is not authenticated (determined by {@link LocalSessionStateBean#isAuthenticated()})
+ * the HTTP session.  If the user is not authenticated (determined by {@link LocalSessionStateBean})
  * then there should not be a {@link UserInfoBean} in the HTTP session.
  *
  * @author Jason D. Rivard
- * @see password.pwm.ldap.UserStatusReader#populateUserInfoBean(Locale, UserIdentity)
+ * @see password.pwm.ldap.UserStatusReader#populateUserInfoBean
  */
 public class UserInfoBean implements Serializable {
 // ------------------------------ FIELDS ------------------------------
@@ -90,7 +93,7 @@ public class UserInfoBean implements Serializable {
         return cachedAttributeValues;
     }
 
-    public void setCachedAttributeValues(Map<String, String> cachedAttributeValues)
+    public void setCachedAttributeValues(final Map<String, String> cachedAttributeValues)
     {
         this.cachedAttributeValues = cachedAttributeValues;
     }
@@ -99,7 +102,7 @@ public class UserInfoBean implements Serializable {
         return lastLdapLoginTime;
     }
 
-    public void setLastLdapLoginTime(Date lastLdapLoginTime) {
+    public void setLastLdapLoginTime(final Date lastLdapLoginTime) {
         this.lastLdapLoginTime = lastLdapLoginTime;
     }
 
@@ -123,7 +126,7 @@ public class UserInfoBean implements Serializable {
         return userIdentity;
     }
 
-    public void setUserIdentity(UserIdentity userIdentity) {
+    public void setUserIdentity(final UserIdentity userIdentity) {
         this.userIdentity = userIdentity;
     }
 
@@ -219,7 +222,7 @@ public class UserInfoBean implements Serializable {
         return responseInfoBean;
     }
 
-    public void setResponseInfoBean(ResponseInfoBean responseInfoBean) {
+    public void setResponseInfoBean(final ResponseInfoBean responseInfoBean) {
         this.responseInfoBean = responseInfoBean;
     }
 
@@ -228,7 +231,7 @@ public class UserInfoBean implements Serializable {
         return otpUserRecord;
     }
 
-    public void setOtpUserRecord(OTPUserRecord otpUserRecord)
+    public void setOtpUserRecord(final OTPUserRecord otpUserRecord)
     {
         this.otpUserRecord = otpUserRecord;
     }
@@ -237,7 +240,7 @@ public class UserInfoBean implements Serializable {
         return accountExpirationTime;
     }
 
-    public void setAccountExpirationTime(Date accountExpirationTime) {
+    public void setAccountExpirationTime(final Date accountExpirationTime) {
         this.accountExpirationTime = accountExpirationTime;
     }
 

+ 7 - 7
src/main/java/password/pwm/bean/pub/PublicUserInfoBean.java

@@ -22,6 +22,13 @@
 
 package password.pwm.bean.pub;
 
+import password.pwm.bean.PasswordStatus;
+import password.pwm.bean.UserInfoBean;
+import password.pwm.config.Configuration;
+import password.pwm.config.profile.PwmPasswordRule;
+import password.pwm.http.tag.PasswordRequirementsTag;
+import password.pwm.util.macro.MacroMachine;
+
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Date;
@@ -30,13 +37,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import password.pwm.bean.PasswordStatus;
-import password.pwm.bean.UserInfoBean;
-import password.pwm.config.Configuration;
-import password.pwm.config.profile.PwmPasswordRule;
-import password.pwm.http.tag.PasswordRequirementsTag;
-import password.pwm.util.macro.MacroMachine;
-
 public class PublicUserInfoBean implements Serializable {
     public String userDN;
     public String ldapProfile;

+ 12 - 12
src/main/java/password/pwm/bean/pub/SessionStateInfoBean.java

@@ -43,7 +43,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return label;
     }
 
-    public void setLabel(String label) {
+    public void setLabel(final String label) {
         this.label = label;
     }
 
@@ -51,7 +51,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return createTime;
     }
 
-    public void setCreateTime(Date createTime) {
+    public void setCreateTime(final Date createTime) {
         this.createTime = createTime;
     }
 
@@ -59,7 +59,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return lastTime;
     }
 
-    public void setLastTime(Date lastTime) {
+    public void setLastTime(final Date lastTime) {
         this.lastTime = lastTime;
     }
 
@@ -67,7 +67,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return idle;
     }
 
-    public void setIdle(String idle) {
+    public void setIdle(final String idle) {
         this.idle = idle;
     }
 
@@ -75,7 +75,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return locale;
     }
 
-    public void setLocale(Locale locale) {
+    public void setLocale(final Locale locale) {
         this.locale = locale;
     }
 
@@ -83,7 +83,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return ldapProfile;
     }
 
-    public void setLdapProfile(String ldapProfile) {
+    public void setLdapProfile(final String ldapProfile) {
         this.ldapProfile = ldapProfile;
     }
 
@@ -91,7 +91,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return userDN;
     }
 
-    public void setUserDN(String userDN) {
+    public void setUserDN(final String userDN) {
         this.userDN = userDN;
     }
 
@@ -99,7 +99,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return userID;
     }
 
-    public void setUserID(String userID) {
+    public void setUserID(final String userID) {
         this.userID = userID;
     }
 
@@ -107,7 +107,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return srcAddress;
     }
 
-    public void setSrcAddress(String srcAddress) {
+    public void setSrcAddress(final String srcAddress) {
         this.srcAddress = srcAddress;
     }
 
@@ -115,7 +115,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return srcHost;
     }
 
-    public void setSrcHost(String srcHost) {
+    public void setSrcHost(final String srcHost) {
         this.srcHost = srcHost;
     }
 
@@ -123,7 +123,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return lastUrl;
     }
 
-    public void setLastUrl(String lastUrl) {
+    public void setLastUrl(final String lastUrl) {
         this.lastUrl = lastUrl;
     }
 
@@ -131,7 +131,7 @@ public class SessionStateInfoBean implements PublishedBean {
         return intruderAttempts;
     }
 
-    public void setIntruderAttempts(int intruderAttempts) {
+    public void setIntruderAttempts(final int intruderAttempts) {
         this.intruderAttempts = intruderAttempts;
     }
 }

+ 3 - 1
src/main/java/password/pwm/config/ActionConfiguration.java

@@ -34,7 +34,9 @@ import java.util.Map;
 public class ActionConfiguration implements Serializable {
 
     public enum Type { webservice, ldap }
+
     public enum WebMethod { delete, get, post, put, patch }
+
     public enum LdapMethod { replace, add, remove }
 
     private String name;
@@ -101,7 +103,7 @@ public class ActionConfiguration implements Serializable {
         final String[] splitString = value.split("=");
         final String attributeName = splitString[0];
         final String attributeValue = splitString[1];
-        ActionConfiguration actionConfiguration = new ActionConfiguration();
+        final ActionConfiguration actionConfiguration = new ActionConfiguration();
         actionConfiguration.name = attributeName;
         actionConfiguration.description = attributeName;
         actionConfiguration.type = Type.ldap;

+ 4 - 4
src/main/java/password/pwm/config/ChallengeItemConfiguration.java

@@ -37,10 +37,10 @@ public class ChallengeItemConfiguration implements Serializable {
     private String regex;
 
     public ChallengeItemConfiguration(
-            String challengeText,
-            int minimumLength,
-            int maximumLength,
-            boolean adminDefined
+            final String challengeText,
+            final int minimumLength,
+            final int maximumLength,
+            final boolean adminDefined
     )
     {
         this.text = challengeText;

+ 33 - 23
src/main/java/password/pwm/config/Configuration.java

@@ -92,7 +92,7 @@ import java.util.TreeMap;
 public class Configuration implements Serializable, SettingReader {
 // ------------------------------ FIELDS ------------------------------
 
-    private final static PwmLogger LOGGER = PwmLogger.forClass(Configuration.class);
+    private static final PwmLogger LOGGER = PwmLogger.forClass(Configuration.class);
 
     private final StoredConfigurationImpl storedConfiguration;
 
@@ -154,12 +154,12 @@ public class Configuration implements Serializable, SettingReader {
         return availableLocaleMap.get(matchedLocale);
     }
 
-    public <E extends Enum<E>> E readSettingAsEnum(PwmSetting setting,  Class<E> enumClass) {
+    public <E extends Enum<E>> E readSettingAsEnum(final PwmSetting setting, final Class<E> enumClass) {
         final StoredValue value = readStoredValue(setting);
         return JavaTypeConverter.valueToEnum(setting, value, enumClass);
     }
 
-    public <E extends Enum<E>> Set<E> readSettingAsOptionList(final PwmSetting setting,  Class<E> enumClass) {
+    public <E extends Enum<E>> Set<E> readSettingAsOptionList(final PwmSetting setting, final Class<E> enumClass) {
         return JavaTypeConverter.valueToOptionList(setting, readStoredValue(setting), enumClass);
     }
 
@@ -189,7 +189,7 @@ public class Configuration implements Serializable, SettingReader {
         return JavaTypeConverter.valueToPassword(readStoredValue(setting));
     }
 
-    public static abstract class JavaTypeConverter {
+    public abstract static class JavaTypeConverter {
         public static long valueToLong(final StoredValue value) {
             if (!(value instanceof NumericValue)) {
                 throw new IllegalArgumentException("setting value is not readable as number");
@@ -198,22 +198,30 @@ public class Configuration implements Serializable, SettingReader {
         }
 
         public static String valueToString(final StoredValue value) {
-            if (value == null) return null;
+            if (value == null) {
+                return null;
+            }
             if ((!(value instanceof StringValue)) && (!(value instanceof BooleanValue))) {
                 throw new IllegalArgumentException("setting value is not readable as string");
             }
             final Object nativeObject = value.toNativeObject();
-            if (nativeObject == null) return null;
+            if (nativeObject == null) {
+                return null;
+            }
             return nativeObject.toString();
         }
 
         public static PasswordData valueToPassword(final StoredValue value) {
-            if (value == null) return null;
+            if (value == null) {
+                return null;
+            }
             if ((!(value instanceof PasswordValue))) {
                 throw new IllegalArgumentException("setting value is not readable as password");
             }
             final Object nativeObject = value.toNativeObject();
-            if (nativeObject == null) return null;
+            if (nativeObject == null) {
+                return null;
+            }
             return (PasswordData)nativeObject;
         }
         
@@ -227,7 +235,9 @@ public class Configuration implements Serializable, SettingReader {
 
 
         public static List<FormConfiguration> valueToForm(final StoredValue value) {
-            if (value == null) return null;
+            if (value == null) {
+                return null;
+            }
             if ((!(value instanceof FormValue))) {
                 throw new IllegalArgumentException("setting value is not readable as form");
             }
@@ -241,7 +251,7 @@ public class Configuration implements Serializable, SettingReader {
             }
 
             final List<String> results = new ArrayList<>((List<String>)value.toNativeObject());
-            for (final Iterator iter = results.iterator(); iter.hasNext();) {
+            for (final Iterator iter = results.iterator(); iter.hasNext(); ) {
                 final Object loopString = iter.next();
                 if (loopString == null || loopString.toString().length() < 1) {
                     iter.remove();
@@ -260,7 +270,7 @@ public class Configuration implements Serializable, SettingReader {
             }
 
             final List<UserPermission> results = new ArrayList<>((List<UserPermission>)value.toNativeObject());
-            for (final Iterator iter = results.iterator(); iter.hasNext();) {
+            for (final Iterator iter = results.iterator(); iter.hasNext(); ) {
                 final Object loopString = iter.next();
                 if (loopString == null || loopString.toString().length() < 1) {
                     iter.remove();
@@ -306,7 +316,7 @@ public class Configuration implements Serializable, SettingReader {
             return availableLocaleMap.get(matchedLocale);
         }
 
-        public static <E extends Enum<E>> E valueToEnum(final PwmSetting setting, StoredValue value, Class<E> enumClass) {
+        public static <E extends Enum<E>> E valueToEnum(final PwmSetting setting, final StoredValue value, final Class<E> enumClass) {
             if (PwmSettingSyntax.SELECT != setting.getSyntax()) {
                 throw new IllegalArgumentException("may not read SELECT enum value for setting: " + setting.toString());
             }
@@ -325,7 +335,7 @@ public class Configuration implements Serializable, SettingReader {
             return null;
         }
 
-        public static <E extends Enum<E>> Set<E> valueToOptionList(final PwmSetting setting, final StoredValue value,  Class<E> enumClass) {
+        public static <E extends Enum<E>> Set<E> valueToOptionList(final PwmSetting setting, final StoredValue value, final Class<E> enumClass) {
             if (PwmSettingSyntax.OPTIONLIST != setting.getSyntax()) {
                 throw new IllegalArgumentException("may not read optionlist value for setting: " + setting.toString());
             }
@@ -497,6 +507,10 @@ public class Configuration implements Serializable, SettingReader {
                     returnCollection.add(LocaleHelper.parseLocaleString(localeStr));
                 }
                 break;
+
+            default:
+                // ignore other types
+                break;
         }
 
         return returnCollection;
@@ -511,7 +525,7 @@ public class Configuration implements Serializable, SettingReader {
     }
 
     public Map<FileValue.FileInformation,FileValue.FileContent> readSettingAsFile(final PwmSetting setting) {
-        FileValue fileValue = (FileValue)storedConfiguration.readSetting(setting);
+        final FileValue fileValue = (FileValue)storedConfiguration.readSetting(setting);
         return (Map)fileValue.toNativeObject();
     }
 
@@ -540,6 +554,7 @@ public class Configuration implements Serializable, SettingReader {
     }
 
     private PwmSecurityKey tempInstanceKey = null;
+
     public PwmSecurityKey getSecurityKey() throws PwmUnrecoverableException {
         final PasswordData configValue = readSettingAsPassword(PwmSetting.PWM_SECURITY_KEY);
 
@@ -656,7 +671,7 @@ public class Configuration implements Serializable, SettingReader {
             return TokenStorageMethod.valueOf(readSettingAsString(PwmSetting.TOKEN_STORAGEMETHOD));
         } catch (Exception e) {
             final String errorMsg = "unknown storage method specified: " + readSettingAsString(PwmSetting.TOKEN_STORAGEMETHOD);
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_INVALID_CONFIG,errorMsg);
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_INVALID_CONFIG,errorMsg);
             LOGGER.warn(errorInformation.toDebugStr());
             return null;
         }
@@ -683,7 +698,7 @@ public class Configuration implements Serializable, SettingReader {
         return true;
     }
 
-    public String readAppProperty(AppProperty property) {
+    public String readAppProperty(final AppProperty property) {
         final Map<String,String> configurationValues = StringUtil.convertStringListToNameValuePair(this.readSettingAsStringArray(PwmSetting.APP_PROPERTY_OVERRIDES),"=");
         if (configurationValues.containsKey(property.getKey())) {
             return configurationValues.get(property.getKey());
@@ -709,11 +724,6 @@ public class Configuration implements Serializable, SettingReader {
                 }
             }
 
-            final String wsURL = readSettingAsString(PwmSetting.EDIRECTORY_PWD_MGT_WEBSERVICE_URL);
-            if (wsURL != null && wsURL.length() > 0) {
-                readPreferences.add(DataStorageMethod.NMASUAWS);
-            }
-
 
             if (readSettingAsBoolean(PwmSetting.EDIRECTORY_USE_NMAS_RESPONSES)) {
                 readPreferences.add(DataStorageMethod.NMAS);
@@ -743,7 +753,7 @@ public class Configuration implements Serializable, SettingReader {
                     PwmSetting.FORGOTTEN_PASSWORD_READ_PREFERENCE,
                     PwmSetting.FORGOTTEN_PASSWORD_WRITE_PREFERENCE,
                     PwmSetting.INTRUDER_STORAGE_METHOD,
-                    PwmSetting.EVENTS_USER_STORAGE_METHOD
+                    PwmSetting.EVENTS_USER_STORAGE_METHOD,
             };
 
             for (final PwmSetting loopSetting : settingsToCheck) {
@@ -883,7 +893,7 @@ public class Configuration implements Serializable, SettingReader {
 
     public Set<PwmSetting> nonDefaultSettings() {
         final HashSet returnSet = new HashSet();
-        for (StoredConfigurationImpl.SettingValueRecord valueRecord : this.storedConfiguration.modifiedSettings()) {
+        for (final StoredConfigurationImpl.SettingValueRecord valueRecord : this.storedConfiguration.modifiedSettings()) {
             returnSet.add(valueRecord.getSetting());
         }
         return returnSet;

+ 15 - 2
src/main/java/password/pwm/config/FormConfiguration.java

@@ -24,13 +24,23 @@ package password.pwm.config;
 
 import password.pwm.AppProperty;
 import password.pwm.PwmConstants;
-import password.pwm.error.*;
+import password.pwm.error.ErrorInformation;
+import password.pwm.error.PwmDataValidationException;
+import password.pwm.error.PwmError;
+import password.pwm.error.PwmOperationalException;
+import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.util.JsonUtil;
 import password.pwm.util.LocaleHelper;
 
 import java.io.Serializable;
 import java.math.BigInteger;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -282,6 +292,9 @@ public class FormConfiguration implements Serializable {
                 }
                 break;
 
+            default:
+                // continue for other types
+                break;
         }
 
         if (value != null && (this.getMinimumLength() > 0) && (value.length() > 0) && (value.length() < this.getMinimumLength())) {

+ 23 - 11
src/main/java/password/pwm/config/FormUtility.java

@@ -31,7 +31,11 @@ import password.pwm.AppProperty;
 import password.pwm.PwmApplication;
 import password.pwm.bean.SessionLabel;
 import password.pwm.bean.UserIdentity;
-import password.pwm.error.*;
+import password.pwm.error.ErrorInformation;
+import password.pwm.error.PwmDataValidationException;
+import password.pwm.error.PwmError;
+import password.pwm.error.PwmOperationalException;
+import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.http.PwmRequest;
 import password.pwm.ldap.UserDataReader;
 import password.pwm.ldap.UserSearchEngine;
@@ -44,7 +48,15 @@ import password.pwm.util.StringUtil;
 import password.pwm.util.Validator;
 import password.pwm.util.logging.PwmLogger;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 public class FormUtility {
 
@@ -54,7 +66,7 @@ public class FormUtility {
         ReturnEmptyValues
     }
 
-    final private static String NEGATIVE_CACHE_HIT = "NEGATIVE_CACHE_HIT";
+    private static final String NEGATIVE_CACHE_HIT = "NEGATIVE_CACHE_HIT";
 
     public static Map<FormConfiguration, String> readFormValuesFromMap(
             final Map<String,String> inputMap,
@@ -117,20 +129,20 @@ public class FormUtility {
     }
 
     public static boolean checkboxValueIsChecked(final String value) {
-        boolean bValue = false;
+        boolean booleanValue = false;
         if (value != null) {
             if (Boolean.parseBoolean(value)) {
-                bValue = true;
+                booleanValue = true;
             } else if ("on".equalsIgnoreCase(value)) {
-                bValue = true;
+                booleanValue = true;
             } else if ("checked".equalsIgnoreCase(value)) {
-                bValue = true;
+                booleanValue = true;
             }
         }
-        return bValue;
+        return booleanValue;
     }
 
-    public static Map<String,String> asStringMap(Map<FormConfiguration, String> input) {
+    public static Map<String,String> asStringMap(final Map<FormConfiguration, String> input) {
         final Map<String,String> returnObj = new HashMap<>();
         for (final FormConfiguration formConfiguration : input.keySet()) {
             returnObj.put(formConfiguration.getName(), input.get(formConfiguration));
@@ -225,7 +237,7 @@ public class FormUtility {
         final UserSearchEngine.SearchConfiguration searchConfiguration = new UserSearchEngine.SearchConfiguration();
         searchConfiguration.setFilter(filter.toString());
 
-        int resultSearchSizeLimit = 1 + (excludeDN == null ? 0 : excludeDN.size());
+        final int resultSearchSizeLimit = 1 + (excludeDN == null ? 0 : excludeDN.size());
         final long cacheLifetimeMS = Long.parseLong(pwmApplication.getConfig().readAppProperty(AppProperty.CACHE_FORM_UNIQUE_VALUE_LIFETIME_MS));
         final CachePolicy cachePolicy = CachePolicy.makePolicyWithExpirationMS(cacheLifetimeMS);
 
@@ -366,7 +378,7 @@ public class FormUtility {
             throws PwmUnrecoverableException
     {
         final Map<FormConfiguration, List<String>> valueMap = populateFormMapFromLdap(formFields, sessionLabel, userDataReader);
-        for (FormConfiguration formConfiguration : formFields) {
+        for (final FormConfiguration formConfiguration : formFields) {
             if (valueMap.containsKey(formConfiguration)) {
                 final List<String> values = valueMap.get(formConfiguration);
                 if (values != null && !values.isEmpty()) {

+ 1 - 1
src/main/java/password/pwm/config/LDAPPermissionInfo.java

@@ -33,7 +33,7 @@ public class LDAPPermissionInfo implements Serializable {
     private final Access access;
     private final Actor actor;
 
-    public LDAPPermissionInfo(Access type, Actor actor) {
+    public LDAPPermissionInfo(final Access type, final Actor actor) {
         this.access = type;
         this.actor = actor;
     }

+ 16 - 9
src/main/java/password/pwm/config/PwmSetting.java

@@ -35,7 +35,16 @@ import password.pwm.util.StringUtil;
 import password.pwm.util.logging.PwmLogger;
 import password.pwm.util.macro.MacroMachine;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -903,8 +912,6 @@ public enum PwmSetting {
             "ldap.edirectory.useNmasResponses", PwmSettingSyntax.BOOLEAN, PwmSettingCategory.EDIR_SETTINGS),
     EDIRECTORY_READ_USER_PWD(
             "ldap.edirectory.readUserPwd", PwmSettingSyntax.BOOLEAN, PwmSettingCategory.EDIR_SETTINGS),
-    EDIRECTORY_PWD_MGT_WEBSERVICE_URL(
-            "ldap.edirectory.ws.pwdMgtURL", PwmSettingSyntax.STRING, PwmSettingCategory.EDIR_SETTINGS),
 
     EDIRECTORY_READ_CHALLENGE_SET(
             "ldap.edirectory.readChallengeSets", PwmSettingSyntax.BOOLEAN, PwmSettingCategory.EDIR_CR_SETTINGS),
@@ -1229,7 +1236,7 @@ public enum PwmSetting {
             if (optionsElement != null) {
                 final List<Element> optionElements = optionsElement.getChildren("option");
                 if (optionElements != null) {
-                    for (Element optionElement : optionElements) {
+                    for (final Element optionElement : optionElements) {
                         if (optionElement.getAttribute("value") == null) {
                             throw new IllegalStateException("option element is missing 'value' attribute for key " + this.getKey());
                         }
@@ -1250,7 +1257,7 @@ public enum PwmSetting {
         if (propertiesElement != null) {
             final List<Element> propertyElements = propertiesElement.getChildren("property");
             if (propertyElements != null) {
-                for (Element propertyElement : propertyElements) {
+                for (final Element propertyElement : propertyElements) {
                     if (propertyElement.getAttributeValue("key") == null) {
                         throw new IllegalStateException("property element is missing 'key' attribute for value " + this.getKey());
                     }
@@ -1306,7 +1313,7 @@ public enum PwmSetting {
                         permissionElement.getAttributeValue(PwmSettingXml.XML_ATTRIBUTE_PERMISSION_ACCESS)
                 );
                 if (actor != null && type != null) {
-                    LDAPPermissionInfo permissionInfo = new LDAPPermissionInfo(type, actor);
+                    final LDAPPermissionInfo permissionInfo = new LDAPPermissionInfo(type, actor);
                     returnObj.add(permissionInfo);
                 }
             }
@@ -1382,8 +1389,8 @@ public enum PwmSetting {
 
     public Pattern getRegExPattern() {
         if (pattern == null) {
-            Element settingNode = PwmSettingXml.readSettingXml(this);
-            Element regexNode = settingNode.getChild("regex");
+            final Element settingNode = PwmSettingXml.readSettingXml(this);
+            final Element regexNode = settingNode.getChild("regex");
             if (regexNode != null) {
                 try {
                     pattern = Pattern.compile(regexNode.getText());
@@ -1455,7 +1462,7 @@ public enum PwmSetting {
         private final Object object;
         private final Set<PwmSettingTemplate> settingTemplates;
 
-        public TemplateSetAssociation(Object association, Set<PwmSettingTemplate> settingTemplates) {
+        public TemplateSetAssociation(final Object association, final Set<PwmSettingTemplate> settingTemplates) {
             this.object = association;
             this.settingTemplates = settingTemplates;
         }

+ 14 - 6
src/main/java/password/pwm/config/PwmSettingCategory.java

@@ -28,7 +28,15 @@ import password.pwm.i18n.Config;
 import password.pwm.i18n.PwmSetting;
 import password.pwm.util.LocaleHelper;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TreeMap;
 
 public enum PwmSettingCategory {
 
@@ -176,7 +184,7 @@ public enum PwmSettingCategory {
     private Boolean hidden;
 
 
-    PwmSettingCategory(PwmSettingCategory parent) {
+    PwmSettingCategory(final PwmSettingCategory parent) {
         this.parent = parent;
     }
 
@@ -277,7 +285,7 @@ public enum PwmSettingCategory {
         return returnObj;
     }
 
-    private password.pwm.config.PwmSetting readProfileSettingFromXml(boolean nested)
+    private password.pwm.config.PwmSetting readProfileSettingFromXml(final boolean nested)
     {
         PwmSettingCategory nextCategory = this;
         while (nextCategory != null) {
@@ -362,9 +370,9 @@ public enum PwmSettingCategory {
     }
 
     public static List<PwmSettingCategory> valuesForReferenceDoc(final Locale locale) {
-        List<PwmSettingCategory> values = new ArrayList<>(sortedValues(locale));
-        for (Iterator<PwmSettingCategory> iterator = values.iterator(); iterator.hasNext(); ) {
-            PwmSettingCategory category = iterator.next();
+        final List<PwmSettingCategory> values = new ArrayList<>(sortedValues(locale));
+        for (final Iterator<PwmSettingCategory> iterator = values.iterator(); iterator.hasNext(); ) {
+            final PwmSettingCategory category = iterator.next();
             if (category.isHidden()) {
                 iterator.remove();
             } else if (category.getSettings().isEmpty()) {

+ 18 - 2
src/main/java/password/pwm/config/PwmSettingSyntax.java

@@ -22,7 +22,23 @@
 
 package password.pwm.config;
 
-import password.pwm.config.value.*;
+import password.pwm.config.value.ActionValue;
+import password.pwm.config.value.BooleanValue;
+import password.pwm.config.value.ChallengeValue;
+import password.pwm.config.value.EmailValue;
+import password.pwm.config.value.FileValue;
+import password.pwm.config.value.FormValue;
+import password.pwm.config.value.LocalizedStringArrayValue;
+import password.pwm.config.value.LocalizedStringValue;
+import password.pwm.config.value.NumericValue;
+import password.pwm.config.value.OptionListValue;
+import password.pwm.config.value.PasswordValue;
+import password.pwm.config.value.PrivateKeyValue;
+import password.pwm.config.value.StringArrayValue;
+import password.pwm.config.value.StringValue;
+import password.pwm.config.value.UserPermissionValue;
+import password.pwm.config.value.VerificationMethodValue;
+import password.pwm.config.value.X509CertificateValue;
 
 /**
  * Setting syntax definitions.  Each syntax listed here corresponds to some type of native Java object.  The factory specified includes
@@ -57,7 +73,7 @@ public enum PwmSettingSyntax {
 
     private StoredValue.StoredValueFactory storedValueImpl;
 
-    PwmSettingSyntax(StoredValue.StoredValueFactory storedValueImpl) {
+    PwmSettingSyntax(final StoredValue.StoredValueFactory storedValueImpl) {
         this.storedValueImpl = storedValueImpl;
     }
 

+ 1 - 1
src/main/java/password/pwm/config/PwmSettingTemplate.java

@@ -64,7 +64,7 @@ public enum PwmSettingTemplate {
         return requiredAttribute != null && "true".equalsIgnoreCase(requiredAttribute.getValue());
     }
 
-    private static Element readTemplateElement(PwmSettingTemplate pwmSettingTemplate) {
+    private static Element readTemplateElement(final PwmSettingTemplate pwmSettingTemplate) {
         final Element element = PwmSettingXml.readTemplateXml(pwmSettingTemplate);
         if (element == null) {
             throw new IllegalStateException("missing PwmSetting.xml template element for " + pwmSettingTemplate);

+ 1 - 1
src/main/java/password/pwm/config/PwmSettingXml.java

@@ -94,7 +94,7 @@ public class PwmSettingXml {
             final InputStream xmlInputStream = PwmSetting.class.getClassLoader().getResourceAsStream("password/pwm/config/PwmSetting.xml");
             final SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
             final Schema schema = factory.newSchema(new StreamSource(xsdInputStream));
-            Validator validator = schema.newValidator();
+            final Validator validator = schema.newValidator();
             validator.validate(new StreamSource(xmlInputStream));
         } catch (Exception e) {
             throw new IllegalStateException("error validating PwmSetting.xml schema using PwmSetting.xsd definition: " + e.getMessage());

+ 2 - 0
src/main/java/password/pwm/config/SettingReader.java

@@ -49,4 +49,6 @@ public interface SettingReader {
     List<ActionConfiguration> readSettingAsAction(PwmSetting setting);
 
     PasswordData readSettingAsPassword(PwmSetting setting);
+
+    String readSettingAsString(PwmSetting oauthIdLoginUrl);
 }

+ 4 - 4
src/main/java/password/pwm/config/SettingUIFunction.java

@@ -29,10 +29,10 @@ import java.io.Serializable;
 
 public interface SettingUIFunction {
     Serializable provideFunction(
-            final PwmRequest pwmRequest,
-            final StoredConfigurationImpl storedConfiguration,
-            final PwmSetting setting,
-            final String profile,
+             PwmRequest pwmRequest,
+            StoredConfigurationImpl storedConfiguration,
+            PwmSetting setting,
+            String profile,
             String extraData
     )
             throws Exception;

+ 4 - 4
src/main/java/password/pwm/config/StoredValue.java

@@ -32,7 +32,7 @@ import java.util.List;
 import java.util.Locale;
 
 public interface StoredValue extends Serializable {
-    List<Element> toXmlValues(final String valueElementName);
+    List<Element> toXmlValues( String valueElementName);
 
     Object toNativeObject();
 
@@ -47,11 +47,11 @@ public interface StoredValue extends Serializable {
     int currentSyntaxVersion();
 
     interface StoredValueFactory {
-        StoredValue fromJson(final String input);
+        StoredValue fromJson( String input);
 
-        StoredValue fromXmlElement(final Element settingElement, final PwmSecurityKey key)
+        StoredValue fromXmlElement( Element settingElement,  PwmSecurityKey key)
                 throws PwmException;
     }
 
     String valueHash() throws PwmUnrecoverableException;
-}
+}

+ 14 - 10
src/main/java/password/pwm/config/function/AbstractUriCertImportFunction.java

@@ -27,7 +27,11 @@ import password.pwm.config.PwmSetting;
 import password.pwm.config.SettingUIFunction;
 import password.pwm.config.stored.StoredConfigurationImpl;
 import password.pwm.config.value.X509CertificateValue;
-import password.pwm.error.*;
+import password.pwm.error.ErrorInformation;
+import password.pwm.error.PwmError;
+import password.pwm.error.PwmException;
+import password.pwm.error.PwmOperationalException;
+import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.http.PwmRequest;
 import password.pwm.http.PwmSession;
 import password.pwm.util.X509Utils;
@@ -39,11 +43,11 @@ abstract class AbstractUriCertImportFunction implements SettingUIFunction {
 
     @Override
     public String provideFunction(
-            PwmRequest pwmRequest,
-            StoredConfigurationImpl storedConfiguration,
-            PwmSetting setting,
-            String profile,
-            String extraData)
+            final PwmRequest pwmRequest,
+            final StoredConfigurationImpl storedConfiguration,
+            final PwmSetting setting,
+            final String profile,
+            final String extraData)
             throws PwmOperationalException, PwmUnrecoverableException
     {
         final PwmSession pwmSession = pwmRequest.getPwmSession();
@@ -56,7 +60,7 @@ abstract class AbstractUriCertImportFunction implements SettingUIFunction {
                 if (e instanceof PwmException) {
                     throw new PwmOperationalException(((PwmException) e).getErrorInformation());
                 }
-                ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"error importing certificates: " + e.getMessage());
+                final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"error importing certificates: " + e.getMessage());
                 throw new PwmOperationalException(errorInformation);
             }
 
@@ -72,11 +76,11 @@ abstract class AbstractUriCertImportFunction implements SettingUIFunction {
         return returnStr.toString();
     }
 
-    abstract String getUri(StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData) throws PwmOperationalException;
+    abstract String getUri(StoredConfigurationImpl storedConfiguration,  PwmSetting pwmSetting,  String profile,  String extraData) throws PwmOperationalException;
 
 
-    void store(X509Certificate[] certs, StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData, final UserIdentity userIdentity) throws PwmOperationalException, PwmUnrecoverableException {
-        storedConfiguration.writeSetting(pwmSetting, new X509CertificateValue(certs), userIdentity);
+    void store(final X509Certificate[] certs, final StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData, final UserIdentity userIdentity) throws PwmOperationalException, PwmUnrecoverableException {
+        storedConfiguration.writeSetting(pwmSetting, profile, new X509CertificateValue(certs), userIdentity);
     }
 
 

+ 5 - 5
src/main/java/password/pwm/config/function/ActionCertImportFunction.java

@@ -41,20 +41,20 @@ import java.util.List;
 public class ActionCertImportFunction extends AbstractUriCertImportFunction {
 
     @Override
-    String getUri(StoredConfigurationImpl storedConfiguration, PwmSetting pwmSetting, String profile, String extraData) throws PwmOperationalException {
+    String getUri(final StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData) throws PwmOperationalException {
         final ActionValue actionValue = (ActionValue)storedConfiguration.readSetting(pwmSetting, profile);
         final String actionName = actionNameFromExtraData(extraData);
         final ActionConfiguration action =  actionValue.forName(actionName);
         final String uriString = action.getUrl();
 
         if (uriString == null || uriString.isEmpty()) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + pwmSetting.toMenuLocationDebug(profile, null) + " action " + actionName + " must first be configured");
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + pwmSetting.toMenuLocationDebug(profile, null) + " action " + actionName + " must first be configured");
             throw new PwmOperationalException(errorInformation);
         }
         try {
             URI.create(uriString);
         } catch (IllegalArgumentException e) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + pwmSetting.toMenuLocationDebug(profile, null) + " action " + actionName + " has an invalid URL syntax");
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + pwmSetting.toMenuLocationDebug(profile, null) + " action " + actionName + " has an invalid URL syntax");
             throw new PwmOperationalException(errorInformation);
         }
         return uriString;
@@ -64,11 +64,11 @@ public class ActionCertImportFunction extends AbstractUriCertImportFunction {
         return extraData;
     }
 
-    void store(X509Certificate[] certs, StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData, final UserIdentity userIdentity) throws PwmOperationalException, PwmUnrecoverableException {
+    void store(final X509Certificate[] certs, final StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData, final UserIdentity userIdentity) throws PwmOperationalException, PwmUnrecoverableException {
         final ActionValue actionValue = (ActionValue)storedConfiguration.readSetting(pwmSetting, profile);
         final String actionName = actionNameFromExtraData(extraData);
         final List<ActionConfiguration> newList = new ArrayList<>();
-        for (ActionConfiguration loopConfiguration : actionValue.toNativeObject()) {
+        for (final ActionConfiguration loopConfiguration : actionValue.toNativeObject()) {
             if (actionName.equals(loopConfiguration.getName())) {
                 final ActionConfiguration newConfig = loopConfiguration.copyWithNewCertificate(certs);
                 newList.add(newConfig);

+ 11 - 7
src/main/java/password/pwm/config/function/LdapCertImportFunction.java

@@ -29,7 +29,11 @@ import password.pwm.config.SettingUIFunction;
 import password.pwm.config.stored.StoredConfigurationImpl;
 import password.pwm.config.value.StringArrayValue;
 import password.pwm.config.value.X509CertificateValue;
-import password.pwm.error.*;
+import password.pwm.error.ErrorInformation;
+import password.pwm.error.PwmError;
+import password.pwm.error.PwmException;
+import password.pwm.error.PwmOperationalException;
+import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.http.PwmRequest;
 import password.pwm.http.PwmSession;
 import password.pwm.i18n.Message;
@@ -46,11 +50,11 @@ public class LdapCertImportFunction implements SettingUIFunction {
 
     @Override
     public String provideFunction(
-            PwmRequest pwmRequest,
-            StoredConfigurationImpl storedConfiguration,
-            PwmSetting setting,
-            String profile,
-            String extraData)
+            final PwmRequest pwmRequest,
+            final StoredConfigurationImpl storedConfiguration,
+            final PwmSetting setting,
+            final String profile,
+            final String extraData)
             throws PwmOperationalException, PwmUnrecoverableException {
         final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
         final PwmSession pwmSession = pwmRequest.getPwmSession();
@@ -72,7 +76,7 @@ public class LdapCertImportFunction implements SettingUIFunction {
             if (e instanceof PwmException) {
                 throw new PwmOperationalException(((PwmException) e).getErrorInformation());
             }
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,"error importing certificates: " + e.getMessage());
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,"error importing certificates: " + e.getMessage());
             throw new PwmOperationalException(errorInformation);
         }
 

+ 5 - 5
src/main/java/password/pwm/config/function/NAAFCertImportFunction.java

@@ -32,19 +32,19 @@ import java.net.URI;
 
 public class NAAFCertImportFunction extends AbstractUriCertImportFunction {
 
-    final static PwmSetting uriSourceSetting = PwmSetting.NAAF_WS_URL;
+    static final PwmSetting URI_SOURCE_SETTING = PwmSetting.NAAF_WS_URL;
 
     @Override
-    String getUri(StoredConfigurationImpl storedConfiguration, PwmSetting pwmSetting, String profile, String extraData) throws PwmOperationalException {
-        final String uriString = (String)storedConfiguration.readSetting(uriSourceSetting).toNativeObject();
+    String getUri(final StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData) throws PwmOperationalException {
+        final String uriString = (String)storedConfiguration.readSetting(URI_SOURCE_SETTING).toNativeObject();
         if (uriString == null || uriString.isEmpty()) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + uriSourceSetting.toMenuLocationDebug(profile, null) + " must first be configured");
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + URI_SOURCE_SETTING.toMenuLocationDebug(profile, null) + " must first be configured");
             throw new PwmOperationalException(errorInformation);
         }
         try {
             URI.create(uriString);
         } catch (IllegalArgumentException e) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + uriSourceSetting.toMenuLocationDebug(profile, null) + " has an invalid URL syntax");
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + URI_SOURCE_SETTING.toMenuLocationDebug(profile, null) + " has an invalid URL syntax");
             throw new PwmOperationalException(errorInformation);
         }
         return uriString;

+ 27 - 6
src/main/java/password/pwm/config/function/OAuthCertImportFunction.java

@@ -22,29 +22,50 @@
 
 package password.pwm.config.function;
 
+import password.pwm.PwmConstants;
 import password.pwm.config.PwmSetting;
 import password.pwm.config.stored.StoredConfigurationImpl;
 import password.pwm.error.ErrorInformation;
 import password.pwm.error.PwmError;
 import password.pwm.error.PwmOperationalException;
+import password.pwm.util.Helper;
 
 import java.net.URI;
 
 public class OAuthCertImportFunction extends AbstractUriCertImportFunction {
 
-    final static PwmSetting uriSourceSetting = PwmSetting.OAUTH_ID_CODERESOLVE_URL;
 
     @Override
-    String getUri(StoredConfigurationImpl storedConfiguration, PwmSetting pwmSetting, String profile, String extraData) throws PwmOperationalException {
-        final String uriString = (String)storedConfiguration.readSetting(uriSourceSetting).toNativeObject();
-        if (uriString == null || uriString.isEmpty()) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + uriSourceSetting.toMenuLocationDebug(profile, null) + " must first be configured");
+    String getUri(final StoredConfigurationImpl storedConfiguration, final PwmSetting pwmSetting, final String profile, final String extraData) throws PwmOperationalException {
+
+        final String uriString;
+        final String menuDebugLocation;
+
+        switch (pwmSetting) {
+            case OAUTH_ID_CERTIFICATE:
+                uriString = (String)storedConfiguration.readSetting(PwmSetting.OAUTH_ID_CODERESOLVE_URL).toNativeObject();
+                menuDebugLocation = PwmSetting.OAUTH_ID_CODERESOLVE_URL.toMenuLocationDebug(null, PwmConstants.DEFAULT_LOCALE);
+                break;
+
+            case RECOVERY_OAUTH_ID_CERTIFICATE:
+                uriString = (String)storedConfiguration.readSetting(PwmSetting.RECOVERY_OAUTH_ID_CODERESOLVE_URL, profile).toNativeObject();
+                menuDebugLocation = PwmSetting.RECOVERY_OAUTH_ID_CERTIFICATE.toMenuLocationDebug(profile, PwmConstants.DEFAULT_LOCALE);
+                break;
+
+            default:
+                Helper.unhandledSwitchStatement(pwmSetting);
+                return null;
+        }
+
+
+        if (uriString.isEmpty()) {
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + menuDebugLocation + " must first be configured");
             throw new PwmOperationalException(errorInformation);
         }
         try {
             URI.create(uriString);
         } catch (IllegalArgumentException e) {
-            ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + uriSourceSetting.toMenuLocationDebug(profile, null) + " has an invalid URL syntax");
+            final ErrorInformation errorInformation = new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"Setting " + menuDebugLocation + " has an invalid URL syntax");
             throw new PwmOperationalException(errorInformation);
         }
         return uriString;

+ 11 - 7
src/main/java/password/pwm/config/function/SyslogCertImportFunction.java

@@ -28,7 +28,11 @@ import password.pwm.config.PwmSetting;
 import password.pwm.config.SettingUIFunction;
 import password.pwm.config.stored.StoredConfigurationImpl;
 import password.pwm.config.value.X509CertificateValue;
-import password.pwm.error.*;
+import password.pwm.error.ErrorInformation;
+import password.pwm.error.PwmError;
+import password.pwm.error.PwmException;
+import password.pwm.error.PwmOperationalException;
+import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.http.PwmRequest;
 import password.pwm.http.PwmSession;
 import password.pwm.i18n.Message;
@@ -44,11 +48,11 @@ public class SyslogCertImportFunction implements SettingUIFunction {
 
     @Override
     public String provideFunction(
-            PwmRequest pwmRequest,
-            StoredConfigurationImpl storedConfiguration,
-            PwmSetting setting,
-            String profile,
-            String extraData)
+            final PwmRequest pwmRequest,
+            final StoredConfigurationImpl storedConfiguration,
+            final PwmSetting setting,
+            final String profile,
+            final String extraData)
             throws PwmOperationalException, PwmUnrecoverableException {
         final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
         final PwmSession pwmSession = pwmRequest.getPwmSession();
@@ -68,7 +72,7 @@ public class SyslogCertImportFunction implements SettingUIFunction {
                     if (e instanceof PwmException) {
                         throw new PwmOperationalException(((PwmException) e).getErrorInformation());
                     }
-                    ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,"error importing certificates: " + e.getMessage());
+                    final ErrorInformation errorInformation = new ErrorInformation(PwmError.ERROR_UNKNOWN,"error importing certificates: " + e.getMessage());
                     throw new PwmOperationalException(errorInformation);
                 }
 

+ 9 - 5
src/main/java/password/pwm/config/function/UserMatchViewerFunction.java

@@ -46,7 +46,11 @@ import password.pwm.util.TimeDuration;
 import password.pwm.util.logging.PwmLogger;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
 
 public class UserMatchViewerFunction implements SettingUIFunction {
     private static final PwmLogger LOGGER = PwmLogger.forClass(UserMatchViewerFunction.class);
@@ -57,7 +61,7 @@ public class UserMatchViewerFunction implements SettingUIFunction {
             final StoredConfigurationImpl storedConfiguration,
             final PwmSetting setting,
             final String profile,
-            String extraData)
+            final String extraData)
             throws Exception
     {
         final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
@@ -142,7 +146,7 @@ public class UserMatchViewerFunction implements SettingUIFunction {
             return users;
         }
 
-        public void setUsers(Collection<UserIdentity> users) {
+        public void setUsers(final Collection<UserIdentity> users) {
             this.users = users;
         }
 
@@ -150,7 +154,7 @@ public class UserMatchViewerFunction implements SettingUIFunction {
             return sizeExceeded;
         }
 
-        public void setSizeExceeded(boolean sizeExceeded) {
+        public void setSizeExceeded(final boolean sizeExceeded) {
             this.sizeExceeded = sizeExceeded;
         }
 
@@ -158,7 +162,7 @@ public class UserMatchViewerFunction implements SettingUIFunction {
             return searchOperationSummary;
         }
 
-        public void setSearchOperationSummary(String searchOperationSummary) {
+        public void setSearchOperationSummary(final String searchOperationSummary) {
             this.searchOperationSummary = searchOperationSummary;
         }
     }

+ 0 - 1
src/main/java/password/pwm/config/option/DataStorageMethod.java

@@ -28,6 +28,5 @@ public enum DataStorageMethod implements ConfigurationOption {
     LDAP,
     LOCALDB,
     NMAS,
-    NMASUAWS,
     CRYPTO
 }

+ 1 - 1
src/main/java/password/pwm/config/option/IdentityVerificationMethod.java

@@ -45,7 +45,7 @@ public enum IdentityVerificationMethod implements ConfigurationOption {
     private final boolean userSelectable;
     private final Display displayKey;
 
-    IdentityVerificationMethod(boolean userSelectable, Display displayKey) {
+    IdentityVerificationMethod(final boolean userSelectable, final Display displayKey) {
         this.userSelectable = userSelectable;
         this.displayKey = displayKey;
     }

+ 3 - 3
src/main/java/password/pwm/config/option/OTPStorageFormat.java

@@ -40,7 +40,7 @@ public enum OTPStorageFormat {
      *
      * @param useRecoveryCodes
      */
-    OTPStorageFormat(boolean useRecoveryCodes) {
+    OTPStorageFormat(final boolean useRecoveryCodes) {
         this.useRecoveryCodes = useRecoveryCodes;
         this.hashRecoveryCodes = useRecoveryCodes; // defaults to true, if recovery codes enabled.
     }
@@ -52,8 +52,8 @@ public enum OTPStorageFormat {
      * @param hashRecoveryCodes
      */
     OTPStorageFormat(
-            boolean useRecoveryCodes,
-            boolean hashRecoveryCodes
+            final boolean useRecoveryCodes,
+            final boolean hashRecoveryCodes
     ) {
         this.useRecoveryCodes = useRecoveryCodes;
         this.hashRecoveryCodes = useRecoveryCodes && hashRecoveryCodes;

+ 1 - 1
src/main/java/password/pwm/config/option/TLSVersion.java

@@ -33,7 +33,7 @@ public enum TLSVersion {
 
     private final String tomcatValueName;
 
-    TLSVersion(String tomcatValueName) {
+    TLSVersion(final String tomcatValueName) {
         this.tomcatValueName = tomcatValueName;
     }
 

+ 22 - 8
src/main/java/password/pwm/config/profile/AbstractProfile.java

@@ -22,21 +22,35 @@
 
 package password.pwm.config.profile;
 
-import password.pwm.config.*;
+import password.pwm.config.ActionConfiguration;
+import password.pwm.config.Configuration;
+import password.pwm.config.FormConfiguration;
+import password.pwm.config.PwmSetting;
+import password.pwm.config.PwmSettingCategory;
+import password.pwm.config.PwmSettingSyntax;
+import password.pwm.config.SettingReader;
+import password.pwm.config.StoredValue;
+import password.pwm.config.UserPermission;
 import password.pwm.config.option.IdentityVerificationMethod;
 import password.pwm.config.stored.StoredConfiguration;
 import password.pwm.config.value.VerificationMethodValue;
 import password.pwm.util.PasswordData;
 
 import java.security.cert.X509Certificate;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
 
 public abstract class AbstractProfile implements Profile, SettingReader {
 
-    final protected String identifier;
-    final protected Map<PwmSetting,StoredValue> storedValueMap;
+    protected final String identifier;
+    protected final Map<PwmSetting,StoredValue> storedValueMap;
 
-    protected AbstractProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected AbstractProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         this.identifier = identifier;
         this.storedValueMap = storedValueMap;
     }
@@ -66,12 +80,12 @@ public abstract class AbstractProfile implements Profile, SettingReader {
     }
 
     @Override
-    public <E extends Enum<E>> Set<E> readSettingAsOptionList(final PwmSetting setting, Class<E> enumClass) {
+    public <E extends Enum<E>> Set<E> readSettingAsOptionList(final PwmSetting setting, final Class<E> enumClass) {
         return Configuration.JavaTypeConverter.valueToOptionList(setting, storedValueMap.get(setting), enumClass);
     }
 
     @Override
-    public <E extends Enum<E>> E readSettingAsEnum(PwmSetting setting, Class<E> enumClass) {
+    public <E extends Enum<E>> E readSettingAsEnum(final PwmSetting setting, final Class<E> enumClass) {
         return Configuration.JavaTypeConverter.valueToEnum(setting, storedValueMap.get(setting), enumClass);
     }
 
@@ -133,7 +147,7 @@ public abstract class AbstractProfile implements Profile, SettingReader {
         return valueMap;
     }
 
-    public Set<IdentityVerificationMethod> readVerificationMethods(final PwmSetting pwmSetting, VerificationMethodValue.EnabledState enabledState) {
+    public Set<IdentityVerificationMethod> readVerificationMethods(final PwmSetting pwmSetting, final VerificationMethodValue.EnabledState enabledState) {
         final Set<IdentityVerificationMethod> result = new LinkedHashSet<>();
         final StoredValue configValue = storedValueMap.get(pwmSetting);
         final VerificationMethodValue.VerificationMethodSettings verificationMethodSettings = (VerificationMethodValue.VerificationMethodSettings)configValue.toNativeObject();

+ 26 - 14
src/main/java/password/pwm/config/profile/ChallengeProfile.java

@@ -28,7 +28,11 @@ import com.novell.ldapchai.cr.Challenge;
 import com.novell.ldapchai.cr.ChallengeSet;
 import com.novell.ldapchai.exception.ChaiValidationException;
 import password.pwm.PwmConstants;
-import password.pwm.config.*;
+import password.pwm.config.ChallengeItemConfiguration;
+import password.pwm.config.Configuration;
+import password.pwm.config.PwmSetting;
+import password.pwm.config.StoredValue;
+import password.pwm.config.UserPermission;
 import password.pwm.config.stored.StoredConfiguration;
 import password.pwm.config.value.ChallengeValue;
 import password.pwm.error.ErrorInformation;
@@ -38,7 +42,12 @@ import password.pwm.util.LocaleHelper;
 import password.pwm.util.logging.PwmLogger;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 public class ChallengeProfile implements Profile, Serializable {
     private static final PwmLogger LOGGER = PwmLogger.forClass(ChallengeProfile.class);
@@ -113,12 +122,12 @@ public class ChallengeProfile implements Profile, Serializable {
     }
 
     public static ChallengeProfile createChallengeProfile(
-            String profileID,
-            Locale locale,
-            ChallengeSet challengeSet,
-            ChallengeSet helpdeskChallengeSet,
-            int minRandomSetup,
-            int minHelpdeskRandomSetup
+            final String profileID,
+            final Locale locale,
+            final ChallengeSet challengeSet,
+            final ChallengeSet helpdeskChallengeSet,
+            final int minRandomSetup,
+            final int minHelpdeskRandomSetup
     ) {
         return new ChallengeProfile(profileID, locale, challengeSet, helpdeskChallengeSet, minRandomSetup, minHelpdeskRandomSetup, null);
     }
@@ -165,14 +174,17 @@ public class ChallengeProfile implements Profile, Serializable {
             final StoredConfiguration storedConfiguration,
             final PwmSetting requiredChallenges,
             final PwmSetting randomChallenges,
-            int minimumRands
-    ) throws PwmOperationalException {
+            final int minimumRands
+    )
+            throws PwmOperationalException
+    {
         final List<ChallengeItemConfiguration> requiredQuestions = valueToChallengeItemArray(
                 storedConfiguration.readSetting(requiredChallenges, profileID), locale);
         final List<ChallengeItemConfiguration> randomQuestions = valueToChallengeItemArray(
                 storedConfiguration.readSetting(randomChallenges, profileID), locale);
 
         final List<Challenge> challenges = new ArrayList<>();
+        int randoms = minimumRands;
 
         if (requiredQuestions != null) {
             for (final ChallengeItemConfiguration item : requiredQuestions) {
@@ -207,15 +219,15 @@ public class ChallengeProfile implements Profile, Serializable {
                 }
             }
 
-            if (minimumRands > randomQuestions.size()) {
-                minimumRands = randomQuestions.size();
+            if (randoms > randomQuestions.size()) {
+                randoms = randomQuestions.size();
             }
         } else {
-            minimumRands = 0;
+            randoms = 0;
         }
 
         try {
-            return new ChaiChallengeSet(challenges, minimumRands, locale, PwmConstants.PWM_APP_NAME + "-defined " + PwmConstants.SERVLET_VERSION);
+            return new ChaiChallengeSet(challenges, randoms, locale, PwmConstants.PWM_APP_NAME + "-defined " + PwmConstants.SERVLET_VERSION);
         } catch (ChaiValidationException e) {
             throw new PwmOperationalException(new ErrorInformation(PwmError.CONFIG_FORMAT_ERROR,"invalid challenge set configuration: " + e.getMessage()));
         }

+ 2 - 2
src/main/java/password/pwm/config/profile/DeleteAccountProfile.java

@@ -32,7 +32,7 @@ import java.util.Map;
 public class DeleteAccountProfile extends AbstractProfile implements Profile {
     private static final ProfileType PROFILE_TYPE = ProfileType.DeleteAccount;
 
-    protected DeleteAccountProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected DeleteAccountProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 
@@ -43,7 +43,7 @@ public class DeleteAccountProfile extends AbstractProfile implements Profile {
     }
 
     @Override
-    public String getDisplayName(Locale locale)
+    public String getDisplayName(final Locale locale)
     {
         return this.getIdentifier();
     }

+ 7 - 4
src/main/java/password/pwm/config/profile/ForgottenPasswordProfile.java

@@ -22,12 +22,15 @@
 
 package password.pwm.config.profile;
 
-import password.pwm.config.*;
+import password.pwm.config.PwmSetting;
+import password.pwm.config.StoredValue;
 import password.pwm.config.option.IdentityVerificationMethod;
 import password.pwm.config.stored.StoredConfiguration;
 import password.pwm.config.value.VerificationMethodValue;
 
-import java.util.*;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
 
 public class ForgottenPasswordProfile extends AbstractProfile {
 
@@ -36,13 +39,13 @@ public class ForgottenPasswordProfile extends AbstractProfile {
     private Set<IdentityVerificationMethod> requiredRecoveryVerificationMethods;
     private Set<IdentityVerificationMethod> optionalRecoveryVerificationMethods;
 
-    public ForgottenPasswordProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    public ForgottenPasswordProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 
 
     @Override
-    public String getDisplayName(Locale locale) {
+    public String getDisplayName(final Locale locale) {
         return null;
     }
 

+ 8 - 3
src/main/java/password/pwm/config/profile/HelpdeskProfile.java

@@ -28,13 +28,18 @@ import password.pwm.config.option.IdentityVerificationMethod;
 import password.pwm.config.stored.StoredConfiguration;
 import password.pwm.config.value.VerificationMethodValue;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
 
 public class HelpdeskProfile extends AbstractProfile implements Profile {
 
     private static final ProfileType PROFILE_TYPE = ProfileType.Helpdesk;
 
-    protected HelpdeskProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected HelpdeskProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 
@@ -44,7 +49,7 @@ public class HelpdeskProfile extends AbstractProfile implements Profile {
     }
 
     @Override
-    public String getDisplayName(Locale locale)
+    public String getDisplayName(final Locale locale)
     {
         return this.getIdentifier();
     }

+ 1 - 2
src/main/java/password/pwm/config/profile/LdapProfile.java

@@ -32,13 +32,12 @@ import password.pwm.config.stored.StoredConfigurationImpl;
 import password.pwm.error.PwmUnrecoverableException;
 import password.pwm.util.StringUtil;
 
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 public class LdapProfile extends AbstractProfile implements Profile {
-    protected LdapProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected LdapProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 

+ 2 - 2
src/main/java/password/pwm/config/profile/NewUserProfile.java

@@ -51,7 +51,7 @@ public class NewUserProfile extends AbstractProfile {
     private Date newUserPasswordPolicyCacheTime;
     private final Map<Locale,PwmPasswordPolicy> newUserPasswordPolicyCache = new HashMap<>();
 
-    protected NewUserProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected NewUserProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 
@@ -67,7 +67,7 @@ public class NewUserProfile extends AbstractProfile {
     }
 
     @Override
-    public String getDisplayName(Locale locale) {
+    public String getDisplayName(final Locale locale) {
         final String value = this.readSettingAsLocalizedString(PwmSetting.NEWUSER_PROFILE_DISPLAY_NAME, locale);
         return value != null && !value.isEmpty() ? value : this.getIdentifier();
     }

+ 1 - 1
src/main/java/password/pwm/config/profile/ProfileType.java

@@ -37,7 +37,7 @@ public enum ProfileType {
     private final PwmSettingCategory category;
     private final PwmSetting queryMatch;
 
-    ProfileType(boolean authenticated, PwmSettingCategory category, PwmSetting queryMatch) {
+    ProfileType(final boolean authenticated, final PwmSettingCategory category, final PwmSetting queryMatch) {
         this.authenticated = authenticated;
         this.category = category;
         this.queryMatch = queryMatch;

+ 16 - 12
src/main/java/password/pwm/config/profile/PwmPasswordPolicy.java

@@ -59,11 +59,11 @@ public class PwmPasswordPolicy implements Profile,Serializable {
 
     private static final PwmLogger LOGGER = PwmLogger.forClass(PwmPasswordPolicy.class);
 
-    private static final PwmPasswordPolicy defaultPolicy;
+    private static final PwmPasswordPolicy DEFAULT_POLICY;
 
     private final Map<String, String> policyMap = new HashMap<>();
 
-    private transient final ChaiPasswordPolicy chaiPasswordPolicy;
+    private final transient ChaiPasswordPolicy chaiPasswordPolicy;
 
     private String profileID;
     private List<UserPermission> userPermissions;
@@ -97,11 +97,11 @@ public class PwmPasswordPolicy implements Profile,Serializable {
         } catch (Throwable t) {
             LOGGER.fatal("error initializing PwmPasswordPolicy class: " + t.getMessage(), t);
         }
-        defaultPolicy = newDefaultPolicy;
+        DEFAULT_POLICY = newDefaultPolicy;
     }
 
     public static PwmPasswordPolicy defaultPolicy() {
-        return defaultPolicy;
+        return DEFAULT_POLICY;
     }
 
 
@@ -139,7 +139,7 @@ public class PwmPasswordPolicy implements Profile,Serializable {
         return policyMap.get(rule.getKey());
     }
 
-    public void setProfileID(String profileID) {
+    public void setProfileID(final String profileID) {
         this.profileID = profileID;
     }
 
@@ -147,7 +147,7 @@ public class PwmPasswordPolicy implements Profile,Serializable {
         return userPermissions;
     }
 
-    public void setUserPermissions(List<UserPermission> userPermissions) {
+    public void setUserPermissions(final List<UserPermission> userPermissions) {
         this.userPermissions = userPermissions;
     }
 
@@ -155,7 +155,7 @@ public class PwmPasswordPolicy implements Profile,Serializable {
         return ruleText;
     }
 
-    public void setRuleText(String ruleText) {
+    public void setRuleText(final String ruleText) {
         this.ruleText = ruleText;
     }
 
@@ -227,6 +227,10 @@ public class PwmPasswordPolicy implements Profile,Serializable {
                                     newPasswordPolicies.put(ruleKey, String.valueOf(localValue && otherValue));
                                 }
                                 break;
+
+                            default:
+                                //continue processing
+                                break;
                         }
                 }
             }
@@ -287,7 +291,7 @@ public class PwmPasswordPolicy implements Profile,Serializable {
             return chaiRuleHelper.getDisallowedValues();
         }
 
-        public List<String> getDisallowedAttributes(Flag ... flags) {
+        public List<String> getDisallowedAttributes(final Flag ... flags) {
             final List<String> disallowedAttributes = chaiRuleHelper.getDisallowedAttributes();
 
             if (Helper.enumArrayContainsValue(flags, Flag.KeepThresholds)) {
@@ -313,11 +317,11 @@ public class PwmPasswordPolicy implements Profile,Serializable {
             }
         }
 
-        public List<Pattern> getRegExMatch(MacroMachine macroMachine) {
+        public List<Pattern> getRegExMatch(final MacroMachine macroMachine) {
             return readRegExSetting(PwmPasswordRule.RegExMatch, macroMachine);
         }
 
-        public List<Pattern> getRegExNoMatch(MacroMachine macroMachine) {
+        public List<Pattern> getRegExNoMatch(final MacroMachine macroMachine) {
             return readRegExSetting(PwmPasswordRule.RegExNoMatch, macroMachine);
         }
 
@@ -349,7 +353,7 @@ public class PwmPasswordPolicy implements Profile,Serializable {
             return StringHelper.convertStrToBoolean(value);
         }
 
-        private List<Pattern> readRegExSetting(final PwmPasswordRule rule, MacroMachine macroMachine) {
+        private List<Pattern> readRegExSetting(final PwmPasswordRule rule, final MacroMachine macroMachine) {
             final String input = passwordPolicy.policyMap.get(rule.getKey());
 
             return readRegExSetting(rule, macroMachine, input);
@@ -453,4 +457,4 @@ public class PwmPasswordPolicy implements Profile,Serializable {
 
         return Collections.unmodifiableList(returnList);
     }
-}
+}

+ 17 - 10
src/main/java/password/pwm/config/profile/PwmPasswordRule.java

@@ -22,11 +22,7 @@
 
 package password.pwm.config.profile;
 
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.Set;
-
+import com.novell.ldapchai.ChaiPasswordRule;
 import password.pwm.AppProperty;
 import password.pwm.config.Configuration;
 import password.pwm.config.PwmSetting;
@@ -34,7 +30,10 @@ import password.pwm.i18n.Message;
 import password.pwm.util.LocaleHelper;
 import password.pwm.util.logging.PwmLogger;
 
-import com.novell.ldapchai.ChaiPasswordRule;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
 
 /**
  * Password rules
@@ -103,7 +102,9 @@ public enum PwmPasswordRule {
     static {
         try {
             final Set<String> keys = new HashSet<>();
-            for (final PwmSetting setting : PwmSetting.values()) keys.add(setting.getKey());
+            for (final PwmSetting setting : PwmSetting.values()) {
+                keys.add(setting.getKey());
+            }
             assert keys.size() == PwmSetting.values().length;
         } catch (Throwable t) {
             LOGGER.fatal("error initializing PwmPasswordRule class: " + t.getMessage(),t);
@@ -136,9 +137,15 @@ public enum PwmPasswordRule {
     }
 
     public String getKey() {
-        if (chaiPasswordRule != null) return chaiPasswordRule.getKey();
-        if (pwmSetting       != null) return pwmSetting.getKey();
-        if (appProperty      != null) return appProperty.getKey();
+        if (chaiPasswordRule != null) {
+            return chaiPasswordRule.getKey();
+        }
+        if (pwmSetting       != null) {
+            return pwmSetting.getKey();
+        }
+        if (appProperty      != null) {
+            return appProperty.getKey();
+        }
 
         return this.name();
     }

+ 2 - 2
src/main/java/password/pwm/config/profile/UpdateAttributesProfile.java

@@ -33,7 +33,7 @@ public class UpdateAttributesProfile extends AbstractProfile implements Profile
 
     private static final ProfileType PROFILE_TYPE = ProfileType.UpdateAttributes;
 
-    protected UpdateAttributesProfile(String identifier, Map<PwmSetting, StoredValue> storedValueMap) {
+    protected UpdateAttributesProfile(final String identifier, final Map<PwmSetting, StoredValue> storedValueMap) {
         super(identifier, storedValueMap);
     }
 
@@ -44,7 +44,7 @@ public class UpdateAttributesProfile extends AbstractProfile implements Profile
     }
 
     @Override
-    public String getDisplayName(Locale locale)
+    public String getDisplayName(final Locale locale)
     {
         return this.getIdentifier();
     }

+ 2 - 2
src/main/java/password/pwm/config/stored/ConfigChangeLog.java

@@ -34,7 +34,7 @@ public interface ConfigChangeLog {
 
     void updateChangeLog(StoredConfigReference reference, StoredValue newValue);
 
-    public void updateChangeLog(final StoredConfigReference reference, final StoredValue currentValue, final StoredValue newValue);
+    void updateChangeLog( StoredConfigReference reference,  StoredValue currentValue,  StoredValue newValue);
 
-    public Collection<StoredConfigReference> changedValues();
+    Collection<StoredConfigReference> changedValues();
 }

+ 11 - 3
src/main/java/password/pwm/config/stored/ConfigChangeLogImpl.java

@@ -29,14 +29,18 @@ import password.pwm.util.LocaleHelper;
 import password.pwm.util.StringUtil;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TreeMap;
 
 public class ConfigChangeLogImpl implements Serializable, ConfigChangeLog {
     private final Map<StoredConfigReference,StoredValue> changeLog = new LinkedHashMap<>();
     private final Map<StoredConfigReference,StoredValue> originalValue = new LinkedHashMap<>();
     private final StorageEngine storedConfiguration;
 
-    public ConfigChangeLogImpl(StorageEngine storageEngine) {
+    public ConfigChangeLogImpl(final StorageEngine storageEngine) {
         this.storedConfiguration = storageEngine;
     }
 
@@ -46,7 +50,7 @@ public class ConfigChangeLogImpl implements Serializable, ConfigChangeLog {
     }
 
     @Override
-    public String changeLogAsDebugString(final Locale locale, boolean asHtml) {
+    public String changeLogAsDebugString(final Locale locale, final boolean asHtml) {
         final Map<String,String> outputMap = new TreeMap<>();
         final String SEPARATOR = LocaleHelper.getLocalizedMessage(locale, Config.Display_SettingNavigationSeparator, null);
 
@@ -72,6 +76,10 @@ public class ConfigChangeLogImpl implements Serializable, ConfigChangeLog {
                 }
                 break;
                 */
+
+                default:
+                    //continue
+                    break;
             }
         }
         final StringBuilder output = new StringBuilder();

+ 1 - 1
src/main/java/password/pwm/config/stored/ConfigurationProperty.java

@@ -35,7 +35,7 @@ public enum ConfigurationProperty {
 
     private final String key;
 
-    ConfigurationProperty(String key)
+    ConfigurationProperty(final String key)
     {
         this.key = key;
     }

+ 5 - 3
src/main/java/password/pwm/config/stored/ConfigurationReader.java

@@ -23,7 +23,6 @@
 package password.pwm.config.stored;
 
 import org.apache.commons.io.FileUtils;
-import org.omg.CORBA.UNKNOWN;
 import password.pwm.AppProperty;
 import password.pwm.PwmApplication;
 import password.pwm.PwmApplicationMode;
@@ -40,9 +39,12 @@ import password.pwm.util.JsonUtil;
 import password.pwm.util.TimeDuration;
 import password.pwm.util.logging.PwmLogger;
 
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.math.BigInteger;
-import java.nio.file.CopyOption;
 import java.nio.file.Files;
 import java.nio.file.StandardCopyOption;
 import java.util.Date;

Some files were not shown because too many files changed in this diff