[SHIRO-805] Spelling

* account
* against
* and
* application
* authentication
* authorization
* authorizer
* automatically
* axes
* both
* build
* case
* consistent
* contains
* control
* controls
* created
* deauthenticating
* defaults
* defined
* delimited
* delimiter
* deserialized
* deserializes
* e.g.
* efficient
* encapsulate
* encryption
* environment
* et al.
* etc.
* evaluate
* evaluator
* exception
* explicitly
* false
* filters
* from
* hash format
* hashed
* hierarchy
* i.e.
* identifier
* identifying
* immediately
* implementation
* implementers
* inferring
* injectable
* iterator
* join point
* manner
* modifier
* nonexistent
* obtained
* overridden
* password
* performing
* permission
* permissions
* preemptively
* recognized
* reget
* remnant
* request
* required
* resolvable
* returned
* safely
* session
* subsequent
* successfully
* type
* undertow
* usually
* wield

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
diff --git a/.jenkins.groovy b/.jenkins.groovy
index 2a44e33..769baee 100644
--- a/.jenkins.groovy
+++ b/.jenkins.groovy
@@ -40,7 +40,7 @@
                                 'jdk_11_latest', 'adopt_hs_11_latest', 'adopt_j9_11_latest',
                                 'jdk_16_latest', 'adopt_hs_16_latest', 'adopt_j9_16_latest'
                     }
-                    // Additional axess, like OS and maven version can be configured here.
+                    // Additional axes, like OS and maven version can be configured here.
                 }
 
                 agent {
@@ -159,7 +159,7 @@
                     // Send an email, if the last build was not successful and this one is.
                     success {
                         // Cleanup the build directory if the build was successful
-                        // (in this cae we probably don't have to do any post-build analysis)
+                        // (in this case we probably don't have to do any post-build analysis)
                         cleanWs()
                         script {
                             if (deployableBranch
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 44d7168..58e3501 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -53,7 +53,7 @@
 

 Bug

 

-    [SHIRO-767] - org.apache.shiro.util.ClassUtil cannot load the array of Primitive DataType when use undertown as web container

+    [SHIRO-767] - org.apache.shiro.util.ClassUtil cannot load the array of Primitive DataType when use undertow as web container

     [SHIRO-792] - ShiroWebFilterConfiguration seems to conflict with other FilterRegistrationBean

 

 New Feature

@@ -191,7 +191,7 @@
 Task

 

     [SHIRO-690] - Validate JDK11 compatibility

-    [SHIRO-692] - Upgrade and enforce min buid maven version to 3.5.0

+    [SHIRO-692] - Upgrade and enforce min build maven version to 3.5.0

     [SHIRO-698] - Improve build with maven profile

     [SHIRO-734] - Remove Spring-client sample

     [SHIRO-735] - Shiro does not support servlet-3.1 void method(@Suspended AsyncResponse)

@@ -448,7 +448,7 @@
 

     [SHIRO-316] - Annotations in samples-aspectj Project Does not Work

     [SHIRO-351] - Shiro Native Session implementation cannot extract JSESSIONID From URL if JSESSIONID is URL parameter (not HTTP parameter)

-    [SHIRO-379] - SimpleAccoutRealm concurrency access to roles and users

+    [SHIRO-379] - SimpleAccountRealm concurrency access to roles and users

     [SHIRO-380] - runAs feature (still) doesn't work

     [SHIRO-387] - EnvironmentLoader destroys wrong environment

     [SHIRO-388] - Stackoverflow org.apache.shiro.session.SessionListener.onStop()

diff --git a/cache/src/main/java/org/apache/shiro/cache/Cache.java b/cache/src/main/java/org/apache/shiro/cache/Cache.java
index 0ff7979..2b6f887 100644
--- a/cache/src/main/java/org/apache/shiro/cache/Cache.java
+++ b/cache/src/main/java/org/apache/shiro/cache/Cache.java
@@ -27,7 +27,7 @@
  * <p>Shiro doesn't implement a full Cache mechanism itself, since that is outside the core competency of a
  * Security framework.  Instead, this interface provides an abstraction (wrapper) API on top of an underlying
  * cache framework's cache instance (e.g. JCache, Ehcache, JCS, OSCache, JBossCache, TerraCotta, Coherence,
- * GigaSpaces, etc, etc), allowing a Shiro user to configure any cache mechanism they choose.
+ * GigaSpaces, etc., etc.), allowing a Shiro user to configure any cache mechanism they choose.
  *
  * @since 0.2
  */
diff --git a/cache/src/main/java/org/apache/shiro/cache/CacheManager.java b/cache/src/main/java/org/apache/shiro/cache/CacheManager.java
index 4719d4d..f50f06f 100644
--- a/cache/src/main/java/org/apache/shiro/cache/CacheManager.java
+++ b/cache/src/main/java/org/apache/shiro/cache/CacheManager.java
@@ -24,7 +24,7 @@
  * <p>Shiro doesn't implement a full Cache mechanism itself, since that is outside the core competency of a
  * Security framework.  Instead, this interface provides an abstraction (wrapper) API on top of an underlying
  * cache framework's main Manager component (e.g. JCache, Ehcache, JCS, OSCache, JBossCache, TerraCotta, Coherence,
- * GigaSpaces, etc, etc), allowing a Shiro user to configure any cache mechanism they choose.
+ * GigaSpaces, etc., etc.), allowing a Shiro user to configure any cache mechanism they choose.
  *
  * @since 0.9
  */
diff --git a/cache/src/main/java/org/apache/shiro/cache/MemoryConstrainedCacheManager.java b/cache/src/main/java/org/apache/shiro/cache/MemoryConstrainedCacheManager.java
index 3f0ee56..f9f683e 100644
--- a/cache/src/main/java/org/apache/shiro/cache/MemoryConstrainedCacheManager.java
+++ b/cache/src/main/java/org/apache/shiro/cache/MemoryConstrainedCacheManager.java
@@ -29,7 +29,7 @@
  * While the {@code Cache} instances created are thread-safe, they do not offer any enterprise-level features such as
  * cache coherency, optimistic locking, failover or other similar features.  For more enterprise features, consider
  * using a different {@code CacheManager} implementation backed by an enterprise-grade caching product (Hazelcast,
- * EhCache, TerraCotta, Coherence, GigaSpaces, etc, etc).
+ * EhCache, TerraCotta, Coherence, GigaSpaces, etc., etc.).
  *
  * @since 1.0
  */
diff --git a/core/src/main/java/org/apache/shiro/aop/MethodInvocation.java b/core/src/main/java/org/apache/shiro/aop/MethodInvocation.java
index d2dd5e3..cac02af 100644
--- a/core/src/main/java/org/apache/shiro/aop/MethodInvocation.java
+++ b/core/src/main/java/org/apache/shiro/aop/MethodInvocation.java
@@ -51,10 +51,10 @@
     Object[] getArguments();
 
     /**
-     * Returns the object that holds the current joinpoint's static part.
+     * Returns the object that holds the current join point's static part.
      * For instance, the target object for an invocation.
      *
-     * @return the object that holds the current joinpoint's static part.
+     * @return the object that holds the current join point's static part.
      * @since 1.0
      */
     Object getThis();
diff --git a/core/src/main/java/org/apache/shiro/aop/package-info.java b/core/src/main/java/org/apache/shiro/aop/package-info.java
index 34c94b9..0daa774 100644
--- a/core/src/main/java/org/apache/shiro/aop/package-info.java
+++ b/core/src/main/java/org/apache/shiro/aop/package-info.java
@@ -21,6 +21,6 @@
  * <p/>
  * As this package is a root-level package under <tt>org.apache.shiro</tt>, it contains AOP support classes
  * useful for any AOP environment and/or function. Feature-dependent AOP classes (e.g. authorization,
- * authentication, etc) will use these classes as their base in their respective packages.
+ * authentication, etc.) will use these classes as their base in their respective packages.
  */
 package org.apache.shiro.aop;
\ No newline at end of file
diff --git a/core/src/main/java/org/apache/shiro/authc/AbstractAuthenticator.java b/core/src/main/java/org/apache/shiro/authc/AbstractAuthenticator.java
index 4a1c081..125929b 100644
--- a/core/src/main/java/org/apache/shiro/authc/AbstractAuthenticator.java
+++ b/core/src/main/java/org/apache/shiro/authc/AbstractAuthenticator.java
@@ -247,7 +247,7 @@
      * {@code AuthenticationException} if there is a problem during
      * authentication instead of returning {@code null}.  A {@code null} return value indicates
      * a configuration or programming error, since {@code AuthenticationException}s should
-     * indicate any expected problem (such as an unknown account or username, or invalid password, etc).
+     * indicate any expected problem (such as an unknown account or username, or invalid password, etc.).
      *
      * @param token the authentication token encapsulating the user's login information.
      * @return an {@code AuthenticationInfo} object encapsulating the user's account information
diff --git a/core/src/main/java/org/apache/shiro/authc/Account.java b/core/src/main/java/org/apache/shiro/authc/Account.java
index 0f84d01..e99b17b 100644
--- a/core/src/main/java/org/apache/shiro/authc/Account.java
+++ b/core/src/main/java/org/apache/shiro/authc/Account.java
@@ -29,7 +29,7 @@
  * encapsulate both the authentication and authorization information used by both authc and authz operations.
  * <p/>
  * <b>Please Note</b>:  Since Shiro sometimes logs account operations, please ensure your Account's <code>toString()</code>
- * implementation does <em>not</em> print out account credentials (password, etc), as these might be viewable to
+ * implementation does <em>not</em> print out account credentials (password, etc.), as these might be viewable to
  * someone reading your logs.  This is good practice anyway, and account principals should rarely (if ever) be printed
  * out for any reason.  If you're using Shiro's default implementations of this interface, they only ever print the
  * account {@link #getPrincipals() principals}, so you do not need to do anything additional.
diff --git a/core/src/main/java/org/apache/shiro/authc/AuthenticationInfo.java b/core/src/main/java/org/apache/shiro/authc/AuthenticationInfo.java
index f00920b..3c20f0a 100644
--- a/core/src/main/java/org/apache/shiro/authc/AuthenticationInfo.java
+++ b/core/src/main/java/org/apache/shiro/authc/AuthenticationInfo.java
@@ -46,7 +46,7 @@
  * preferences.
  * <p/>
  * <p><b>Please note:</b>  Since Shiro sometimes logs authentication operations, please ensure your AuthenticationInfo's
- * <code>toString()</code> implementation does <em>not</em> print out account credentials (password, etc), as these might be viewable to
+ * <code>toString()</code> implementation does <em>not</em> print out account credentials (password, etc.), as these might be viewable to
  * someone reading your logs.  This is good practice anyway, and account credentials should rarely (if ever) be printed
  * out for any reason.  If you're using Shiro's default implementations of this interface, they only ever print the
  * account {@link #getPrincipals() principals}, so you do not need to do anything additional.</p>
@@ -59,7 +59,7 @@
 
     /**
      * Returns all principals associated with the corresponding Subject.  Each principal is an identifying piece of
-     * information useful to the application such as a username, or user id, a given name, etc - anything useful
+     * information useful to the application such as a username, or user id, a given name, etc. - anything useful
      * to the application to identify the current <code>Subject</code>.
      * <p/>
      * The returned PrincipalCollection should <em>not</em> contain any credentials used to verify principals, such
diff --git a/core/src/main/java/org/apache/shiro/authc/AuthenticationToken.java b/core/src/main/java/org/apache/shiro/authc/AuthenticationToken.java
index 5f5b682..570b816 100644
--- a/core/src/main/java/org/apache/shiro/authc/AuthenticationToken.java
+++ b/core/src/main/java/org/apache/shiro/authc/AuthenticationToken.java
@@ -34,7 +34,7 @@
  * <p/>
  * <p>Because applications represent user data and credentials in different ways, implementations
  * of this interface are application-specific.  You are free to acquire a user's principals and
- * credentials however you wish (e.g. web form, Swing form, fingerprint identification, etc) and
+ * credentials however you wish (e.g. web form, Swing form, fingerprint identification, etc.) and
  * then submit them to the Shiro framework in the form of an implementation of this
  * interface.
  * <p/>
@@ -68,7 +68,7 @@
      * sufficient for your use.
      * <p/>
      * <p>Ultimately, the object returned is application specific and can represent
-     * any account identity (user id, X.509 certificate, etc).
+     * any account identity (user id, X.509 certificate, etc.).
      *
      * @return the account identity submitted during the authentication process.
      * @see UsernamePasswordToken
diff --git a/core/src/main/java/org/apache/shiro/authc/LogoutAware.java b/core/src/main/java/org/apache/shiro/authc/LogoutAware.java
index 30f73c6..d686bfc 100644
--- a/core/src/main/java/org/apache/shiro/authc/LogoutAware.java
+++ b/core/src/main/java/org/apache/shiro/authc/LogoutAware.java
@@ -23,7 +23,7 @@
 /**
  * An SPI interface allowing cleanup logic to be executed during logout of a previously authenticated Subject/user.
  *
- * <p>As it is an SPI interface, it is really intended for SPI implementors such as those implementing Realms.
+ * <p>As it is an SPI interface, it is really intended for SPI implementers such as those implementing Realms.
  *
  * <p>All of Shiro's concrete Realm implementations implement this interface as a convenience for those wishing
  * to subclass them.
diff --git a/core/src/main/java/org/apache/shiro/authc/SimpleAccount.java b/core/src/main/java/org/apache/shiro/authc/SimpleAccount.java
index bbd3202..e65e07c 100644
--- a/core/src/main/java/org/apache/shiro/authc/SimpleAccount.java
+++ b/core/src/main/java/org/apache/shiro/authc/SimpleAccount.java
@@ -206,7 +206,7 @@
     ============================================*/
 
     /**
-     * Returns the principals, aka the identifying attributes (username, user id, first name, last name, etc) of this
+     * Returns the principals, aka the identifying attributes (username, user id, first name, last name, etc.) of this
      * Account.
      *
      * @return all the principals, aka the identifying attributes, of this Account.
@@ -216,7 +216,7 @@
     }
 
     /**
-     * Sets the principals, aka the identifying attributes (username, user id, first name, last name, etc) of this
+     * Sets the principals, aka the identifying attributes (username, user id, first name, last name, etc.) of this
      * Account.
      *
      * @param principals all the principals, aka the identifying attributes, of this Account.
@@ -249,10 +249,10 @@
     }
 
     /**
-     * Returns the salt used to hash this Account's credentials (eg for password hashing), or {@code null} if no salt
+     * Returns the salt used to hash this Account's credentials (e.g. for password hashing), or {@code null} if no salt
      * was used or credentials were not hashed at all.
      *
-     * @return the salt used to hash this Account's credentials (eg for password hashing), or {@code null} if no salt
+     * @return the salt used to hash this Account's credentials (e.g. for password hashing), or {@code null} if no salt
      *         was used or credentials were not hashed at all.
      * @since 1.1
      */
@@ -261,10 +261,10 @@
     }
 
     /**
-     * Sets the salt to use to hash this Account's credentials (eg for password hashing), or {@code null} if no salt
+     * Sets the salt to use to hash this Account's credentials (e.g. for password hashing), or {@code null} if no salt
      * is used or credentials are not hashed at all.
      *
-     * @param salt the salt to use to hash this Account's credentials (eg for password hashing), or {@code null} if no
+     * @param salt the salt to use to hash this Account's credentials (e.g. for password hashing), or {@code null} if no
      *             salt is used or credentials are not hashed at all.
      * @since 1.1
      */
@@ -360,7 +360,7 @@
     }
 
     /**
-     * Sets all object-based permissions assigned directly to this Account (not any of its realms).
+     * Set al. object-based permissions assigned directly to this Account (not any of its realms).
      *
      * @param permissions the object-based permissions to assign directly to this Account.
      */
diff --git a/core/src/main/java/org/apache/shiro/authc/SimpleAuthenticationInfo.java b/core/src/main/java/org/apache/shiro/authc/SimpleAuthenticationInfo.java
index 612d4a9..8ab6ae9 100644
--- a/core/src/main/java/org/apache/shiro/authc/SimpleAuthenticationInfo.java
+++ b/core/src/main/java/org/apache/shiro/authc/SimpleAuthenticationInfo.java
@@ -135,7 +135,7 @@
     /**
      * Sets the identifying principal(s) represented by this instance.
      *
-     * @param principals the indentifying attributes of the corresponding Realm account.
+     * @param principals the identifying attributes of the corresponding Realm account.
      */
     public void setPrincipals(PrincipalCollection principals) {
         this.principals = principals;
diff --git a/core/src/main/java/org/apache/shiro/authc/credential/DefaultPasswordService.java b/core/src/main/java/org/apache/shiro/authc/credential/DefaultPasswordService.java
index 6c0578f..25c0898 100644
--- a/core/src/main/java/org/apache/shiro/authc/credential/DefaultPasswordService.java
+++ b/core/src/main/java/org/apache/shiro/authc/credential/DefaultPasswordService.java
@@ -60,7 +60,7 @@
     /**
      * Constructs a new PasswordService with a default hash service and the default
      * algorithm name {@value #DEFAULT_HASH_ALGORITHM}, a default hash format (shiro2) and
-     * a default hashformat factory.
+     * a default hash format factory.
      *
      * <p>The default algorithm can change between minor versions and does not introduce
      * API incompatibility by design.</p>
diff --git a/core/src/main/java/org/apache/shiro/authc/credential/HashedCredentialsMatcher.java b/core/src/main/java/org/apache/shiro/authc/credential/HashedCredentialsMatcher.java
index 5e6b8ad..4e73810 100644
--- a/core/src/main/java/org/apache/shiro/authc/credential/HashedCredentialsMatcher.java
+++ b/core/src/main/java/org/apache/shiro/authc/credential/HashedCredentialsMatcher.java
@@ -93,7 +93,7 @@
  * If this is not possible for some reason, this class will retain 1.0 backwards-compatible behavior of obtaining
  * the salt via the now-deprecated {@link #getSalt(AuthenticationToken) getSalt(AuthenticationToken)} method.  This
  * method will only be invoked if a {@code Realm} <em>does not</em> return
- * {@link SaltedAuthenticationInfo SaltedAutenticationInfo} instances and {@link #isHashSalted() hashSalted} is
+ * {@link SaltedAuthenticationInfo SaltedAuthenticationInfo} instances and {@link #isHashSalted() hashSalted} is
  * {@code true}.
  * But please note that the {@link #isHashSalted() hashSalted} property and the
  * {@link #getSalt(AuthenticationToken) getSalt(AuthenticationToken)} methods will be removed before the Shiro 2.0
diff --git a/core/src/main/java/org/apache/shiro/authc/credential/HashingPasswordService.java b/core/src/main/java/org/apache/shiro/authc/credential/HashingPasswordService.java
index 618631e..bdde4f9 100644
--- a/core/src/main/java/org/apache/shiro/authc/credential/HashingPasswordService.java
+++ b/core/src/main/java/org/apache/shiro/authc/credential/HashingPasswordService.java
@@ -58,7 +58,7 @@
      * </pre>
      *
      * @param plaintext the raw password as 'byte-backed' object (String, character array, {@link ByteSource},
-     *                  etc) usually acquired from your application's 'new user' or 'password reset' workflow.
+     *                  etc.) usually acquired from your application's 'new user' or 'password reset' workflow.
      * @return the hashed password.
      * @throws IllegalArgumentException if the argument cannot be easily converted to bytes as defined by
      *                                  {@link ByteSource.Util#isCompatible(Object)}.
diff --git a/core/src/main/java/org/apache/shiro/authc/credential/PasswordService.java b/core/src/main/java/org/apache/shiro/authc/credential/PasswordService.java
index b322e0a..60cc9b7 100644
--- a/core/src/main/java/org/apache/shiro/authc/credential/PasswordService.java
+++ b/core/src/main/java/org/apache/shiro/authc/credential/PasswordService.java
@@ -106,7 +106,7 @@
      * </pre>
      *
      * @param plaintextPassword the raw password as 'byte-backed' object (String, character array, {@link ByteSource},
-     *                          etc) usually acquired from your application's 'new user' or 'password reset' workflow.
+     *                          etc.) usually acquired from your application's 'new user' or 'password reset' workflow.
      * @return the encrypted password, formatted for storage.
      * @throws IllegalArgumentException if the argument cannot be easily converted to bytes as defined by
      *                                  {@link ByteSource.Util#isCompatible(Object)}.
diff --git a/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java b/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
index 02bd3aa..6e8cbc0 100644
--- a/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
+++ b/core/src/main/java/org/apache/shiro/authc/pam/ModularRealmAuthenticator.java
@@ -210,7 +210,7 @@
             try {
                 aggregate = strategy.beforeAttempt(realm, token, aggregate);
             } catch (ShortCircuitIterationException shortCircuitSignal) {
-                // Break from continuing with subsequnet realms on receiving 
+                // Break from continuing with subsequent realms on receiving 
                 // short circuit signal from strategy
                 break;
             }
diff --git a/core/src/main/java/org/apache/shiro/authc/pam/package-info.java b/core/src/main/java/org/apache/shiro/authc/pam/package-info.java
index 1f20962..e6b3dc4 100644
--- a/core/src/main/java/org/apache/shiro/authc/pam/package-info.java
+++ b/core/src/main/java/org/apache/shiro/authc/pam/package-info.java
@@ -26,7 +26,7 @@
  * one or more Realm instances.
  * <p/>
  * How the <code>ModularRealmAuthenticator</code> actually coordinates this behavior is configurable based on your
- * application's needs using an injectible
+ * application's needs using an injectable
  * {@link AuthenticationStrategy}.
  */
 package org.apache.shiro.authc.pam;
diff --git a/core/src/main/java/org/apache/shiro/authz/AuthorizationInfo.java b/core/src/main/java/org/apache/shiro/authz/AuthorizationInfo.java
index cc35ef2..0efdd96 100644
--- a/core/src/main/java/org/apache/shiro/authz/AuthorizationInfo.java
+++ b/core/src/main/java/org/apache/shiro/authz/AuthorizationInfo.java
@@ -22,7 +22,7 @@
 import java.util.Collection;
 
 /**
- * <code>AuthorizationInfo</code> represents a single Subject's stored authorization data (roles, permissions, etc)
+ * <code>AuthorizationInfo</code> represents a single Subject's stored authorization data (roles, permissions, etc.)
  * used during authorization (access control) checks only.
  * <p/>
  * Roles are represented as a <code>Collection</code> of Strings
@@ -40,7 +40,7 @@
  * <p/>
  * Because the act of authorization (access control) is orthogonal to authentication (log-in), this interface is
  * intended to represent only the account data needed by Shiro during an access control check
- * (role, permission, etc).  Shiro also has a parallel
+ * (role, permission, etc.).  Shiro also has a parallel
  * {@link org.apache.shiro.authc.AuthenticationInfo AuthenticationInfo} interface for use during the authentication
  * process that represents identity data such as principals and credentials.
  * <p/>
diff --git a/core/src/main/java/org/apache/shiro/authz/Permission.java b/core/src/main/java/org/apache/shiro/authz/Permission.java
index d8728ff..23c42c7 100644
--- a/core/src/main/java/org/apache/shiro/authz/Permission.java
+++ b/core/src/main/java/org/apache/shiro/authz/Permission.java
@@ -36,7 +36,7 @@
  * <em>permissions</em> are assigned to these roles.
  * <p/>
  * Under this paradigm, permissions are immutable and reflect an application's raw functionality
- * (opening files, accessing a web URL, creating users, etc).  This is what allows a system's security policy
+ * (opening files, accessing a web URL, creating users, etc.).  This is what allows a system's security policy
  * to be dynamic: because Permissions represent raw functionality and only change when the application's
  * source code changes, they are immutable at runtime - they represent 'what' the system can do.  Roles, users, and
  * groups are the 'who' of the application.  Determining 'who' can do 'what' then becomes a simple exercise of
@@ -46,7 +46,7 @@
  * Permissions) and then associate users with roles (i.e. a user 'has a' collection of roles) so that by transitive
  * association, the user 'has' the permissions in their roles.  There are numerous variations on this theme
  * (permissions assigned directly to users, or assigned to groups, and users added to groups and these groups in turn
- * have roles, etc, etc).  When employing a permission-based security model instead of a role-based one, users, roles,
+ * have roles, etc., etc.).  When employing a permission-based security model instead of a role-based one, users, roles,
  * and groups can all be created, configured and/or deleted at runtime.  This enables  an extremely powerful security
  * model.
  * <p/>
diff --git a/core/src/main/java/org/apache/shiro/authz/UnauthenticatedException.java b/core/src/main/java/org/apache/shiro/authz/UnauthenticatedException.java
index 128bcad..5041008 100644
--- a/core/src/main/java/org/apache/shiro/authz/UnauthenticatedException.java
+++ b/core/src/main/java/org/apache/shiro/authz/UnauthenticatedException.java
@@ -23,7 +23,7 @@
  * authentication hasn't yet occurred.
  *
  * <p>Authorizations can only be performed after a successful
- * authentication because authorization data (roles, permissions, etc) must always be associated
+ * authentication because authorization data (roles, permissions, etc.) must always be associated
  * with a known identity.  Such a known identity can only be obtained upon a successful log-in.
  *
  * @since 0.1
diff --git a/core/src/main/java/org/apache/shiro/authz/aop/PermissionAnnotationMethodInterceptor.java b/core/src/main/java/org/apache/shiro/authz/aop/PermissionAnnotationMethodInterceptor.java
index 1bf70a4..c4f8082 100644
--- a/core/src/main/java/org/apache/shiro/authz/aop/PermissionAnnotationMethodInterceptor.java
+++ b/core/src/main/java/org/apache/shiro/authz/aop/PermissionAnnotationMethodInterceptor.java
@@ -53,7 +53,7 @@
      * @param methodArgs the <code>MethodInvocation</code> method arguments.
      * @param namePath the Annotation 'name' value, which is a string-based permission definition.
      * @return the String permission representation.
-     * @throws Exception if there is an error infering the target.
+     * @throws Exception if there is an error inferring the target.
      *
     protected String inferTargetFromPath(Object[] methodArgs, String namePath) throws Exception {
         int propertyStartIndex = -1;
diff --git a/core/src/main/java/org/apache/shiro/authz/permission/PermissionResolver.java b/core/src/main/java/org/apache/shiro/authz/permission/PermissionResolver.java
index 7636d33..1714c39 100644
--- a/core/src/main/java/org/apache/shiro/authz/permission/PermissionResolver.java
+++ b/core/src/main/java/org/apache/shiro/authz/permission/PermissionResolver.java
@@ -21,7 +21,7 @@
 import org.apache.shiro.authz.Permission;
 
 /**
- * A {@code PermisisonResolver} resolves a String value and converts it into a
+ * A {@code PermissionResolver} resolves a String value and converts it into a
  * {@link org.apache.shiro.authz.Permission Permission} instance.
  * <p/>
  * The default {@link WildcardPermissionResolver} should be
diff --git a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermissionResolver.java b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermissionResolver.java
index 0822735..0adffad 100644
--- a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermissionResolver.java
+++ b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermissionResolver.java
@@ -31,7 +31,7 @@
     boolean caseSensitive;
     
     /**
-     * Constructor to specify case sensitivity for the resolved premissions.
+     * Constructor to specify case sensitivity for the resolved permissions.
      * @param caseSensitive true if permissions should be case sensitive.
      */
     public WildcardPermissionResolver(boolean caseSensitive) {
diff --git a/core/src/main/java/org/apache/shiro/ldap/UnsupportedAuthenticationMechanismException.java b/core/src/main/java/org/apache/shiro/ldap/UnsupportedAuthenticationMechanismException.java
index f731cba..073bd34 100644
--- a/core/src/main/java/org/apache/shiro/ldap/UnsupportedAuthenticationMechanismException.java
+++ b/core/src/main/java/org/apache/shiro/ldap/UnsupportedAuthenticationMechanismException.java
@@ -23,7 +23,7 @@
 /**
  * Exception thrown when a configured LDAP
  * <a href="http://download.oracle.com/javase/jndi/tutorial/ldap/security/auth.html">
- * Authentication Mechanism</a> is unsupported by the target LDAP server. (e.g. DIGEST-MD5, simple, etc)
+ * Authentication Mechanism</a> is unsupported by the target LDAP server. (e.g. DIGEST-MD5, simple, etc.)
  *
  * @since 1.2
  */
diff --git a/core/src/main/java/org/apache/shiro/mgt/AbstractRememberMeManager.java b/core/src/main/java/org/apache/shiro/mgt/AbstractRememberMeManager.java
index 9908c2c..5ba5f2d 100644
--- a/core/src/main/java/org/apache/shiro/mgt/AbstractRememberMeManager.java
+++ b/core/src/main/java/org/apache/shiro/mgt/AbstractRememberMeManager.java
@@ -416,7 +416,7 @@
      * @param bytes          the bytes to decrypt if necessary and then deserialize.
      * @param subjectContext the contextual data, usually provided by a {@link Subject.Builder} implementation, that
      *                       is being used to construct a {@link Subject} instance.
-     * @return the de-serialized and possibly decrypted principals
+     * @return the deserialized and possibly decrypted principals
      */
     protected PrincipalCollection convertBytesToPrincipals(byte[] bytes, SubjectContext subjectContext) {
         if (getCipherService() != null) {
@@ -501,11 +501,11 @@
     }
 
     /**
-     * De-serializes the given byte array by using the {@link #getSerializer() serializer}'s
+     * Deserializes the given byte array by using the {@link #getSerializer() serializer}'s
      * {@link Serializer#deserialize deserialize} method.
      *
      * @param serializedIdentity the previously serialized {@code PrincipalCollection} as a byte array
-     * @return the de-serialized (reconstituted) {@code PrincipalCollection}
+     * @return the deserialized (reconstituted) {@code PrincipalCollection}
      */
     protected PrincipalCollection deserialize(byte[] serializedIdentity) {
         return getSerializer().deserialize(serializedIdentity);
@@ -513,7 +513,7 @@
 
     /**
      * Reacts to a failed login by immediately {@link #forgetIdentity(org.apache.shiro.subject.Subject) forgetting} any
-     * previously remembered identity.  This is an additional security feature to prevent any remenant identity data
+     * previously remembered identity.  This is an additional security feature to prevent any remnant identity data
      * from being retained in case the authentication attempt is not being executed by the expected user.
      *
      * @param subject the subject which executed the failed login attempt
diff --git a/core/src/main/java/org/apache/shiro/mgt/AuthenticatingSecurityManager.java b/core/src/main/java/org/apache/shiro/mgt/AuthenticatingSecurityManager.java
index 6720903..c1a7cdb 100644
--- a/core/src/main/java/org/apache/shiro/mgt/AuthenticatingSecurityManager.java
+++ b/core/src/main/java/org/apache/shiro/mgt/AuthenticatingSecurityManager.java
@@ -33,7 +33,7 @@
  * interface, but in reality, those methods are merely passthrough calls to the underlying 'real'
  * <tt>Authenticator</tt> instance.
  *
- * <p>All other <tt>SecurityManager</tt> (authorization, session, etc) methods are left to be implemented by subclasses.
+ * <p>All other <tt>SecurityManager</tt> (authorization, session, etc.) methods are left to be implemented by subclasses.
  *
  * <p>In keeping with the other classes in this hierarchy and Shiro's desire to minimize configuration whenever
  * possible, suitable default instances for all dependencies are created upon instantiation.
diff --git a/core/src/main/java/org/apache/shiro/mgt/DefaultSecurityManager.java b/core/src/main/java/org/apache/shiro/mgt/DefaultSecurityManager.java
index 235c877..9c59218 100644
--- a/core/src/main/java/org/apache/shiro/mgt/DefaultSecurityManager.java
+++ b/core/src/main/java/org/apache/shiro/mgt/DefaultSecurityManager.java
@@ -63,7 +63,7 @@
  * for this attribute at startup.
  * <p/>
  * Because RememberMe services are inherently client tier-specific and
- * therefore aplication-dependent, if you want {@code RememberMe} services enabled, you will have to specify an
+ * therefore application-dependent, if you want {@code RememberMe} services enabled, you will have to specify an
  * instance yourself via the {@link #setRememberMeManager(RememberMeManager) setRememberMeManager}
  * mutator.  However if you're reading this JavaDoc with the
  * expectation of operating in a Web environment, take a look at the
@@ -129,11 +129,11 @@
 
     /**
      * Returns the {@code SubjectDAO} responsible for persisting Subject state, typically used after login or when an
-     * Subject identity is discovered (eg after RememberMe services).  Unless configured otherwise, the default
+     * Subject identity is discovered (e.g. after RememberMe services).  Unless configured otherwise, the default
      * implementation is a {@link DefaultSubjectDAO}.
      *
      * @return the {@code SubjectDAO} responsible for persisting Subject state, typically used after login or when an
-     *         Subject identity is discovered (eg after RememberMe services).
+     *         Subject identity is discovered (e.g. after RememberMe services).
      * @see DefaultSubjectDAO
      * @since 1.2
      */
@@ -143,11 +143,11 @@
 
     /**
      * Sets the {@code SubjectDAO} responsible for persisting Subject state, typically used after login or when an
-     * Subject identity is discovered (eg after RememberMe services). Unless configured otherwise, the default
+     * Subject identity is discovered (e.g. after RememberMe services). Unless configured otherwise, the default
      * implementation is a {@link DefaultSubjectDAO}.
      *
      * @param subjectDAO the {@code SubjectDAO} responsible for persisting Subject state, typically used after login or when an
-     *                   Subject identity is discovered (eg after RememberMe services).
+     *                   Subject identity is discovered (e.g. after RememberMe services).
      * @see DefaultSubjectDAO
      * @since 1.2
      */
@@ -360,7 +360,7 @@
     /**
      * Actually creates a {@code Subject} instance by delegating to the internal
      * {@link #getSubjectFactory() subjectFactory}.  By the time this method is invoked, all possible
-     * {@code SubjectContext} data (session, principals, et. al.) has been made accessible using all known heuristics
+     * {@code SubjectContext} data (session, principals, et al.) has been made accessible using all known heuristics
      * and will be accessible to the {@code subjectFactory} via the {@code subjectContext.resolve*} methods.
      *
      * @param context the populated context (data map) to be used by the {@code SubjectFactory} when creating a
diff --git a/core/src/main/java/org/apache/shiro/realm/AuthenticatingRealm.java b/core/src/main/java/org/apache/shiro/realm/AuthenticatingRealm.java
index 0a19b6e..54d3963 100644
--- a/core/src/main/java/org/apache/shiro/realm/AuthenticatingRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/AuthenticatingRealm.java
@@ -216,7 +216,7 @@
      * <p/>
      * <p>The default value is <tt>{@link org.apache.shiro.authc.UsernamePasswordToken UsernamePasswordToken.class}</tt>, since
      * about 90% of realms use username/password authentication, regardless of their protocol (e.g. over jdbc, ldap,
-     * kerberos, http, etc).
+     * kerberos, http, etc.).
      * <p/>
      * <p>If subclasses haven't already overridden the {@link Realm#supports Realm.supports(AuthenticationToken)} method,
      * they must {@link #setAuthenticationTokenClass(Class) set a new class} if they won't support
@@ -695,7 +695,7 @@
     }
 
     /**
-     * Retrieves authentication data from an implementation-specific datasource (RDBMS, LDAP, etc) for the given
+     * Retrieves authentication data from an implementation-specific datasource (RDBMS, LDAP, etc.) for the given
      * authentication token.
      * <p/>
      * For most datasources, this means just 'pulling' authentication data for an associated subject/user and nothing
diff --git a/core/src/main/java/org/apache/shiro/realm/Realm.java b/core/src/main/java/org/apache/shiro/realm/Realm.java
index 2f534ed..3889fa6 100644
--- a/core/src/main/java/org/apache/shiro/realm/Realm.java
+++ b/core/src/main/java/org/apache/shiro/realm/Realm.java
@@ -28,7 +28,7 @@
  *
  * <p><tt>Realm</tt>s usually have a 1-to-1 correspondence with a datasource such as a relational database,
  * file system, or other similar resource.  As such, implementations of this interface use datasource-specific APIs to
- * determine authorization data (roles, permissions, etc), such as JDBC, File IO, Hibernate or JPA, or any other
+ * determine authorization data (roles, permissions, etc.), such as JDBC, File IO, Hibernate or JPA, or any other
  * Data Access API.  They are essentially security-specific
  * <a href="http://en.wikipedia.org/wiki/Data_Access_Object" target="_blank">DAO</a>s.
  *
@@ -51,7 +51,7 @@
  * practically any application environment.
  *
  * <p>Most users will not implement the <tt>Realm</tt> interface directly, but will extend one of the subclasses,
- * {@link org.apache.shiro.realm.AuthenticatingRealm AuthenticatingRealm} or {@link org.apache.shiro.realm.AuthorizingRealm}, greatly reducing the effort requird
+ * {@link org.apache.shiro.realm.AuthenticatingRealm AuthenticatingRealm} or {@link org.apache.shiro.realm.AuthorizingRealm}, greatly reducing the effort required
  * to implement a <tt>Realm</tt> from scratch.</p>
  *
  * @see org.apache.shiro.realm.CachingRealm CachingRealm
diff --git a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
index 39fa4b6..a1f0d9d 100644
--- a/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealm.java
@@ -125,7 +125,7 @@
      * <p/>
      * This implementation expects the <tt>principal</tt> argument to be a String username.
      * <p/>
-     * Subclasses can override this method to determine authorization data (roles, permissions, etc) in a more
+     * Subclasses can override this method to determine authorization data (roles, permissions, etc.) in a more
      * complex way.  Note that this default implementation does not support permissions, only roles.
      *
      * @param principals         the principal of the Subject whose account is being retrieved.
@@ -159,8 +159,8 @@
         Set<String> roleNames;
         roleNames = new LinkedHashSet<String>();
 
-        SearchControls searchCtls = new SearchControls();
-        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+        SearchControls searchControls = new SearchControls();
+        searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 
         String userPrincipalName = username;
         if (principalSuffix != null) {
@@ -169,7 +169,7 @@
 
         Object[] searchArguments = new Object[]{userPrincipalName};
 
-        NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchArguments, searchCtls);
+        NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchArguments, searchControls);
 
         while (answer.hasMoreElements()) {
             SearchResult sr = (SearchResult) answer.next();
diff --git a/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java b/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
index 58ab0e0..8388ae0 100644
--- a/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/jdbc/JdbcRealm.java
@@ -206,7 +206,7 @@
 
     /**
      * Makes it possible to switch off base64 encoding of password salt.
-     * The default value is true, ie. expect the salt from a string
+     * The default value is true, i.e. expect the salt from a string
      * value in a database to be base64 encoded.
      *
      * @param saltIsBase64Encoded the saltIsBase64Encoded to set
diff --git a/core/src/main/java/org/apache/shiro/realm/jndi/JndiRealmFactory.java b/core/src/main/java/org/apache/shiro/realm/jndi/JndiRealmFactory.java
index 973824e..45144d3 100644
--- a/core/src/main/java/org/apache/shiro/realm/jndi/JndiRealmFactory.java
+++ b/core/src/main/java/org/apache/shiro/realm/jndi/JndiRealmFactory.java
@@ -58,7 +58,7 @@
      * <p/>
      * The order of the collection determines the order that the Realms will be returned to the SecurityManager.
      * <p/>
-     * If you find it easier to specify these names as a comma-delmited string, you may use the
+     * If you find it easier to specify these names as a comma-delimited string, you may use the
      * {@link #setJndiNames(String)} method instead.
      *
      * @param jndiNames the JNDI names that will be used to look up Realm(s) from JNDI.
diff --git a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
index d28eb21..75f477e 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/DefaultLdapRealm.java
@@ -96,7 +96,7 @@
     ============================================*/

     /**

      * The LdapContextFactory instance used to acquire {@link javax.naming.ldap.LdapContext LdapContext}'s at runtime

-     * to acquire connections to the LDAP directory to perform authentication attempts and authorizatino queries.

+     * to acquire connections to the LDAP directory to perform authentication attempts and authorization queries.

      */

     private LdapContextFactory contextFactory;

 

diff --git a/core/src/main/java/org/apache/shiro/realm/ldap/JndiLdapContextFactory.java b/core/src/main/java/org/apache/shiro/realm/ldap/JndiLdapContextFactory.java
index b1b22d8..db66793 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/JndiLdapContextFactory.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/JndiLdapContextFactory.java
@@ -421,7 +421,7 @@
 

     /**

      * This implementation returns an LdapContext based on the configured JNDI/LDAP environment configuration.

-     * The environnmet (Map) used at runtime is created by merging the default/configured

+     * The environment (Map) used at runtime is created by merging the default/configured

      * {@link #getEnvironment() environment template} with some runtime values as necessary (e.g. a principal and

      * credential available at runtime only).

      * <p/>

@@ -429,7 +429,7 @@
      * {@link #createLdapContext(java.util.Hashtable) created} and returned.

      *

      * @param principal   the principal to use when acquiring a connection to the LDAP directory

-     * @param credentials the credentials (password, X.509 certificate, etc) to use when acquiring a connection to the

+     * @param credentials the credentials (password, X.509 certificate, etc.) to use when acquiring a connection to the

      *                    LDAP directory

      * @return the acquired {@code LdapContext} connection bound using the specified principal and credentials.

      * @throws NamingException

diff --git a/core/src/main/java/org/apache/shiro/realm/ldap/LdapContextFactory.java b/core/src/main/java/org/apache/shiro/realm/ldap/LdapContextFactory.java
index 373bff7..632d3b6 100644
--- a/core/src/main/java/org/apache/shiro/realm/ldap/LdapContextFactory.java
+++ b/core/src/main/java/org/apache/shiro/realm/ldap/LdapContextFactory.java
@@ -52,7 +52,7 @@
      * {@code X.509} certificate.
      *
      * @param principal   the principal to use when acquiring a connection to the LDAP directory
-     * @param credentials the credentials (password, X.509 certificate, etc) to use when acquiring a connection to the
+     * @param credentials the credentials (password, X.509 certificate, etc.) to use when acquiring a connection to the
      *                    LDAP directory
      * @return the acquired {@code LdapContext} connection bound using the specified principal and credentials.
      * @throws NamingException if unable to acquire a connection.
diff --git a/core/src/main/java/org/apache/shiro/realm/text/IniRealm.java b/core/src/main/java/org/apache/shiro/realm/text/IniRealm.java
index bf8890f..10b993b 100644
--- a/core/src/main/java/org/apache/shiro/realm/text/IniRealm.java
+++ b/core/src/main/java/org/apache/shiro/realm/text/IniRealm.java
@@ -58,7 +58,7 @@
 
     /**
      * This constructor will immediately process the definitions in the {@code Ini} argument.  If you need to perform
-     * additional configuration before processing (e.g. setting a permissionResolver, etc), do not call this
+     * additional configuration before processing (e.g. setting a permissionResolver, etc.), do not call this
      * constructor.  Instead, do the following:
      * <ol>
      * <li>Call the default no-arg constructor</li>
@@ -77,7 +77,7 @@
     /**
      * This constructor will immediately process the definitions in the {@code Ini} resolved from the specified
      * {@code resourcePath}.  If you need to perform additional configuration before processing (e.g. setting a
-     * permissionResolver, etc), do not call this constructor.  Instead, do the following:
+     * permissionResolver, etc.), do not call this constructor.  Instead, do the following:
      * <ol>
      * <li>Call the default no-arg constructor</li>
      * <li>Set the Ini instance you wish to use via {@code #setIni}</li>
diff --git a/core/src/main/java/org/apache/shiro/session/Session.java b/core/src/main/java/org/apache/shiro/session/Session.java
index 4535051..f91d224 100644
--- a/core/src/main/java/org/apache/shiro/session/Session.java
+++ b/core/src/main/java/org/apache/shiro/session/Session.java
@@ -24,7 +24,7 @@
 
 /**
  * A {@code Session} is a stateful data context associated with a single Subject (user, daemon process,
- * etc) who interacts with a software system over a period of time.
+ * etc.) who interacts with a software system over a period of time.
  * <p/>
  * A {@code Session} is intended to be managed by the business tier and accessible via other
  * tiers without being tied to any given client technology.  This is a <em>great</em> benefit to Java
@@ -149,7 +149,7 @@
      * It is common for a {@code Subject} implementation to retain authentication state in the
      * {@code Session}.  If the session
      * is explicitly stopped by application code by calling this method directly, it could clear out any
-     * authentication state that might exist, thereby effectively &quot;unauthenticating&quot; the {@code Subject}.
+     * authentication state that might exist, thereby effectively removing the &quot;authenticated&quot; state of the {@code Subject}.
      * <p/>
      * As such, you might consider {@link org.apache.shiro.subject.Subject#logout logging-out} the 'owning'
      * {@code Subject} instead of manually calling this method, as a log out is expected to stop the
diff --git a/core/src/main/java/org/apache/shiro/session/mgt/DefaultSessionManager.java b/core/src/main/java/org/apache/shiro/session/mgt/DefaultSessionManager.java
index da6930c..c7e40cf 100644
--- a/core/src/main/java/org/apache/shiro/session/mgt/DefaultSessionManager.java
+++ b/core/src/main/java/org/apache/shiro/session/mgt/DefaultSessionManager.java
@@ -101,7 +101,7 @@
      * This property is provided because some systems need the ability to perform querying/reporting against sessions in
      * the data store, even after they have stopped or expired.  Setting this attribute to {@code false} will allow
      * such querying, but with the caveat that the application developer/configurer deletes the sessions themselves by
-     * some other means (cron, quartz, etc).
+     * some other means (cron, quartz, etc.).
      *
      * @return {@code true} if sessions should be automatically deleted after they are discovered to be invalid,
      *         {@code false} if invalid sessions will be manually deleted by some process external to Shiro's control.
@@ -116,7 +116,7 @@
      * value is {@code true} to ensure no orphans will exist in the underlying data store.
      * <h4>WARNING</h4>
      * Only set this value to {@code false} if you are manually going to delete sessions yourself by some process
-     * (quartz, cron, etc) external to Shiro's control.  See the
+     * (quartz, cron, etc.) external to Shiro's control.  See the
      * {@link #isDeleteInvalidSessions() isDeleteInvalidSessions()} JavaDoc for more.
      *
      * @param deleteInvalidSessions whether or not sessions should be automatically deleted after they are discovered
diff --git a/core/src/main/java/org/apache/shiro/session/mgt/eis/CachingSessionDAO.java b/core/src/main/java/org/apache/shiro/session/mgt/eis/CachingSessionDAO.java
index aa0a854..f48dc75 100644
--- a/core/src/main/java/org/apache/shiro/session/mgt/eis/CachingSessionDAO.java
+++ b/core/src/main/java/org/apache/shiro/session/mgt/eis/CachingSessionDAO.java
@@ -32,7 +32,7 @@
 /**
  * An CachingSessionDAO is a SessionDAO that provides a transparent caching layer between the components that
  * use it and the underlying EIS (Enterprise Information System) session backing store (for example, filesystem,
- * database, enterprise grid/cloud, etc).
+ * database, enterprise grid/cloud, etc.).
  * <p/>
  * This implementation caches all active sessions in a configured
  * {@link #getActiveSessionsCache() activeSessionsCache}.  This property is {@code null} by default and if one is
@@ -41,7 +41,7 @@
  * <p/>
  * All {@code SessionDAO} methods are implemented by this class to employ
  * caching behavior and delegates the actual EIS operations to respective do* methods to be implemented by
- * subclasses (doCreate, doRead, etc).
+ * subclasses (doCreate, doRead, etc.).
  *
  * @since 0.2
  */
diff --git a/core/src/main/java/org/apache/shiro/session/mgt/eis/MemorySessionDAO.java b/core/src/main/java/org/apache/shiro/session/mgt/eis/MemorySessionDAO.java
index b1ed4e0..0095a26 100644
--- a/core/src/main/java/org/apache/shiro/session/mgt/eis/MemorySessionDAO.java
+++ b/core/src/main/java/org/apache/shiro/session/mgt/eis/MemorySessionDAO.java
@@ -43,7 +43,7 @@
  * <p/>
  * In this case, it is recommended to instead use a custom
  * {@link CachingSessionDAO} implementation that communicates with a higher-capacity data store of your choice
- * (file system, database, etc).
+ * (file system, database, etc.).
  * <h2>Changes in 1.0</h2>
  * This implementation prior to 1.0 used to subclass the {@link CachingSessionDAO}, but this caused problems with many
  * cache implementations that would expunge entries due to TTL settings, resulting in Sessions that would be randomly
diff --git a/core/src/main/java/org/apache/shiro/session/mgt/eis/SessionDAO.java b/core/src/main/java/org/apache/shiro/session/mgt/eis/SessionDAO.java
index 351a3cc..04722eb 100644
--- a/core/src/main/java/org/apache/shiro/session/mgt/eis/SessionDAO.java
+++ b/core/src/main/java/org/apache/shiro/session/mgt/eis/SessionDAO.java
@@ -31,7 +31,7 @@
  * {@link #create}, {@link #readSession(java.io.Serializable)}, {@link #update(org.apache.shiro.session.Session)},
  * and {@link #delete(org.apache.shiro.session.Session)}.
  * <p/>
- * The remaining {@link #getActiveSessions()} method exists as a support mechanism to pre-emptively orphaned sessions,
+ * The remaining {@link #getActiveSessions()} method exists as a support mechanism to preemptively orphaned sessions,
  * typically by {@link org.apache.shiro.session.mgt.ValidatingSessionManager ValidatingSessionManager}s), and should
  * be as efficient as possible, especially if there are thousands of active sessions.  Large scale/high performance
  * implementations will often return a subset of the total active sessions and perform validation a little more
@@ -43,7 +43,7 @@
 
     /**
      * Inserts a new Session record into the underling EIS (e.g. Relational database, file system, persistent cache,
-     * etc, depending on the DAO implementation).
+     * etc., depending on the DAO implementation).
      * <p/>
      * After this method is invoked, the {@link org.apache.shiro.session.Session#getId()}
      * method executed on the argument must return a valid session identifier.  That is, the following should
diff --git a/core/src/main/java/org/apache/shiro/subject/Subject.java b/core/src/main/java/org/apache/shiro/subject/Subject.java
index 346b22e..8599c7d 100644
--- a/core/src/main/java/org/apache/shiro/subject/Subject.java
+++ b/core/src/main/java/org/apache/shiro/subject/Subject.java
@@ -97,7 +97,7 @@
      * <p/>
      * The word &quot;principals&quot; is nothing more than a fancy security term for identifying attributes associated
      * with a Subject, aka, application user.  For example, user id, a surname (family/last name), given (first) name,
-     * social security number, nickname, username, etc, are all examples of a principal.
+     * social security number, nickname, username, etc., are all examples of a principal.
      *
      * @return all of this Subject's principals (identifying attributes).
      * @see #getPrincipal()
@@ -432,7 +432,7 @@
      * <h3>Web Environment Warning</h3>
      * Calling this method in web environments will usually remove any associated session cookie as part of
      * session invalidation.  Because cookies are part of the HTTP header, and headers can only be set before the
-     * response body (html, image, etc) is sent, this method in web environments must be called before <em>any</em>
+     * response body (html, image, etc.) is sent, this method in web environments must be called before <em>any</em>
      * content has been rendered.
      * <p/>
      * The typical approach most applications use in this scenario is to redirect the user to a different
@@ -670,7 +670,7 @@
          * specified {@code sessionId}.
          * <p/>
          * Usually when specifying a {@code sessionId}, no other {@code Builder} methods would be specified because
-         * everything else (principals, inet address, etc) can usually be reconstructed based on the referenced
+         * everything else (principals, inet address, etc.) can usually be reconstructed based on the referenced
          * session alone.  In other words, this is almost always sufficient:
          * <pre>
          * new Subject.Builder().sessionId(sessionId).buildSubject();</pre>
diff --git a/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java b/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
index d3040d1..ceeb0ef 100644
--- a/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
+++ b/core/src/main/java/org/apache/shiro/subject/support/DelegatingSubject.java
@@ -55,7 +55,7 @@
  * architecture.  It instead asks the underlying {@code SecurityManager} every time to perform
  * the authorization check.
  * <p/>
- * A common misconception in using this implementation is that an EIS resource (RDBMS, etc) would
+ * A common misconception in using this implementation is that an EIS resource (RDBMS, etc.) would
  * be &quot;hit&quot; every time a method is called.  This is not necessarily the case and is
  * up to the implementation of the underlying {@code SecurityManager} instance.  If caching of authorization
  * data is desired (to eliminate EIS round trips and therefore improve database performance), it is considered
diff --git a/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java b/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
index f8a5044..78c0f10 100644
--- a/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
+++ b/core/src/test/java/org/apache/shiro/authz/ModularRealmAuthorizerTest.java
@@ -83,7 +83,7 @@
         assertTrue( ((AuthorizingRealm) mockRealm).getRolePermissionResolver() == rolePermissionResolver );
         
         
-        // TODO: no way to unset them, not sure if that is a valid use case, but this is conistent with the PermissionResolver logic
+        // TODO: no way to unset them, not sure if that is a valid use case, but this is consistent with the PermissionResolver logic
 //        // now just to be sure, unset them
 //        modRealmAuthz.setRolePermissionResolver( null );
 //        for ( Realm realm : realms )
diff --git a/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java b/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
index 5a2ce0e..bb09008 100644
--- a/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
+++ b/core/src/test/java/org/apache/shiro/realm/activedirectory/ActiveDirectoryRealmTest.java
@@ -47,7 +47,7 @@
  * Simple test case for ActiveDirectoryRealm.
  * <p/>
  * todo:  While the original incarnation of this test case does not actually test the
- * heart of ActiveDirectoryRealm (no meaningful implemenation of queryForLdapAccount, etc) it obviously should.
+ * heart of ActiveDirectoryRealm (no meaningful implementation of queryForLdapAccount, etc.) it obviously should.
  * This version was intended to mimic my current usage scenario in an effort to debug upgrade issues which were not related
  * to LDAP connectivity.
  *
diff --git a/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java b/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
index 4b0b8c2..cd11e75 100644
--- a/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
+++ b/core/src/test/java/org/apache/shiro/realm/text/TextConfigurationRealmTest.java
@@ -35,7 +35,7 @@
     private void setRoles() {
         StringBuilder roleDefinitions = new StringBuilder()
                 .append("role1 = role1_permission1\n")
-                .append("role2 = role2_persission1, role2_permission2\n");
+                .append("role2 = role2_permission1, role2_permission2\n");
         realm.setRoleDefinitions(roleDefinitions.toString());
     }
 
diff --git a/core/src/test/java/org/apache/shiro/subject/DelegatingSubjectTest.java b/core/src/test/java/org/apache/shiro/subject/DelegatingSubjectTest.java
index 2bc0bbe..847aab6 100644
--- a/core/src/test/java/org/apache/shiro/subject/DelegatingSubjectTest.java
+++ b/core/src/test/java/org/apache/shiro/subject/DelegatingSubjectTest.java
@@ -232,8 +232,8 @@
 
         // then
         final Session session = sourceSubject.getSession(true);
-        String sesionId = (String) session.getId();
-        assertFalse("toString must not leak sessionId", subjectToString.contains(sesionId));
+        String sessionId = (String) session.getId();
+        assertFalse("toString must not leak sessionId", subjectToString.contains(sessionId));
         assertFalse("toString must not leak host", subjectToString.contains(hostname));
     }
 
diff --git a/core/src/test/java/org/apache/shiro/util/AntPathMatcherTests.java b/core/src/test/java/org/apache/shiro/util/AntPathMatcherTests.java
index 383686a..e1c6291 100644
--- a/core/src/test/java/org/apache/shiro/util/AntPathMatcherTests.java
+++ b/core/src/test/java/org/apache/shiro/util/AntPathMatcherTests.java
@@ -215,7 +215,7 @@
     }
 
     @Test
-    public void uniqueDeliminator() {
+    public void uniqueDelimiter() {
         pathMatcher.setPathSeparator(".");
 
         // test exact matching
diff --git a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/CipherService.java b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/CipherService.java
index 67f10fc..e281e86 100644
--- a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/CipherService.java
+++ b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/CipherService.java
@@ -71,7 +71,7 @@
  * contrast, JDK {@code Cipher} instances can support encrypting/decrypting data in chunks over time (because it
  * retains state), but this often introduces API clutter and confusion for most application developers.</li>
  * <li><b>Type Safe</b> - There are {@code CipherService} implementations for different Cipher algorithms
- * ({@code AesCipherService}, {@code BlowfishCipherService}, etc).  There is only one JDK {@code Cipher} class to
+ * ({@code AesCipherService}, {@code BlowfishCipherService}, etc.).  There is only one JDK {@code Cipher} class to
  * represent all cipher algorithms/instances.
  * <li><b>Simple Construction</b> - Because {@code CipherService} instances are type-safe, instantiating and using
  * one is often as simple as calling the default constructor, for example, <code>new AesCipherService();</code>.  The
@@ -113,12 +113,12 @@
      *     if (in != null) {
      *         try {
      *             in.close();
-     *         } catch (IOException ioe1) { ... log, trigger event, etc }
+     *         } catch (IOException ioe1) { ... log, trigger event, etc. }
      *     }
      *     if (out != null) {
      *         try {
      *             out.close();
-     *         } catch (IOException ioe2) { ... log, trigger event, etc }
+     *         } catch (IOException ioe2) { ... log, trigger event, etc. }
      *     }
      * }
      * </pre>
@@ -156,12 +156,12 @@
      *     if (in != null) {
      *         try {
      *             in.close();
-     *         } catch (IOException ioe1) { ... log, trigger event, etc }
+     *         } catch (IOException ioe1) { ... log, trigger event, etc. }
      *     }
      *     if (out != null) {
      *         try {
      *             out.close();
-     *         } catch (IOException ioe2) { ... log, trigger event, etc }
+     *         } catch (IOException ioe2) { ... log, trigger event, etc. }
      *     }
      * }
      * </pre>
diff --git a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/DefaultBlockCipherService.java b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/DefaultBlockCipherService.java
index 36280af..d147938 100644
--- a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/DefaultBlockCipherService.java
+++ b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/DefaultBlockCipherService.java
@@ -95,7 +95,7 @@
  * <p/>
  * You may set a padding scheme via the {@link #setPaddingScheme(PaddingScheme) paddingScheme} attribute, which
  * accepts a type-safe {@link PaddingScheme PaddingScheme} enum instance.  Like the {@link OperationMode} enum,
- * this enum offers type safety to help avoid typos and guarantees that the mode will be recongized by the underlying
+ * this enum offers type safety to help avoid typos and guarantees that the mode will be recognized by the underlying
  * JCA provider.
  * <p/>
  * <b>*</b>If no padding scheme is specified, this class defaults to the {@link PaddingScheme#PKCS5} scheme, specifically
diff --git a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/JcaCipherService.java b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/JcaCipherService.java
index 8f5f4cb..49d738b 100644
--- a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/JcaCipherService.java
+++ b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/JcaCipherService.java
@@ -136,7 +136,7 @@
 
     /**
      * Returns the cipher algorithm name that will be used for all encryption, decryption, and key operations (for
-     * example, 'AES', 'Blowfish', 'RSA', 'DSA', 'TripleDES', etc).
+     * example, 'AES', 'Blowfish', 'RSA', 'DSA', 'TripleDES', etc.).
      *
      * @return the cipher algorithm name that will be used for all encryption, decryption, and key operations
      */
@@ -399,7 +399,7 @@
     /**
      * Returns a new {@link javax.crypto.Cipher Cipher} instance to use for encryption/decryption operations.  The
      * Cipher's {@code transformationString} for the {@code Cipher}.{@link javax.crypto.Cipher#getInstance getInstance}
-     * call is obtaind via the {@link #getTransformationString(boolean) getTransformationString} method.
+     * call is obtained via the {@link #getTransformationString(boolean) getTransformationString} method.
      *
      * @param streaming {@code true} if the cipher instance will be used as a stream cipher, {@code false} if it will be
      *                  used as a block cipher.
@@ -454,7 +454,7 @@
      * Calls the {@link javax.crypto.Cipher#doFinal(byte[]) doFinal(bytes)} method, propagating any exception that
      * might arise in an {@link CryptoException}
      *
-     * @param cipher the JDK Cipher to finalize (perform the actual cryption)
+     * @param cipher the JDK Cipher to finalize (perform the actual encryption)
      * @param bytes  the bytes to crypt
      * @return the resulting crypted byte array.
      * @throws CryptoException if there is an illegal block size or bad padding
diff --git a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/OperationMode.java b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/OperationMode.java
index 4794dad..517946c 100644
--- a/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/OperationMode.java
+++ b/crypto/cipher/src/main/java/org/apache/shiro/crypto/cipher/OperationMode.java
@@ -78,7 +78,7 @@
     CTR,
 
     /**
-     * <a href="http://en.wikipedia.org/wiki/EAX_mode">EAX Mode</a><b>*</b>.  This is a patent-free but less-effecient
+     * <a href="http://en.wikipedia.org/wiki/EAX_mode">EAX Mode</a><b>*</b>.  This is a patent-free but less-efficient
      * alternative to {@link #OCB OCB} and has capabilities beyond what {@link #CCM CCM} can provide.
      * <p/>
      * <b>*THIS IS A NON-STANDARD MODE</b>. It is not guaranteed to be supported across JDK installations.  You must
diff --git a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/HashService.java b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/HashService.java
index 4dc5019..126c2e9 100644
--- a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/HashService.java
+++ b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/HashService.java
@@ -40,7 +40,7 @@
  * save(hash);
  * </pre>
  * In this example, often only the input source will change during runtime, while the hashing strategy (how salts
- * are generated or acquired, how many hash iterations will be performed, etc) usually remain consistent.  A HashService
+ * are generated or acquired, how many hash iterations will be performed, etc.) usually remain consistent.  A HashService
  * internalizes this logic so the above becomes simply this:
  * <pre>
  * HashRequest request = new HashRequest.Builder().source(source).build();
diff --git a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
index eb58a89..3028ceb 100644
--- a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
+++ b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/SimpleHash.java
@@ -37,7 +37,7 @@
 /**

  * A {@code Hash} implementation that allows any {@link java.security.MessageDigest MessageDigest} algorithm name to

  * be used.  This class is a less type-safe variant than the other {@code AbstractHash} subclasses

- * (e.g. {@link Sha512Hash}, etc), but it does allow for any algorithm name to be specified in case the other subclass

+ * (e.g. {@link Sha512Hash}, etc.), but it does allow for any algorithm name to be specified in case the other subclass

  * implementations do not represent an algorithm that you may want to use.

  * <p/>

  * As of Shiro 1.1, this class effectively replaces the (now-deprecated) {@link AbstractHash} class.  It subclasses

diff --git a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/Base64Format.java b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/Base64Format.java
index 35b3394..62da65b 100644
--- a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/Base64Format.java
+++ b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/Base64Format.java
@@ -24,7 +24,7 @@
 
 /**
  * {@code HashFormat} that outputs <em>only</em> the hash's digest bytes in Base64 format.  It does not print out
- * anything else (salt, iterations, etc).  This implementation is mostly provided as a convenience for
+ * anything else (salt, iterations, etc.).  This implementation is mostly provided as a convenience for
  * command-line hashing.
  *
  * @since 1.2
diff --git a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/HexFormat.java b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/HexFormat.java
index 2dfb802..7e0c80c 100644
--- a/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/HexFormat.java
+++ b/crypto/hash/src/main/java/org/apache/shiro/crypto/hash/format/HexFormat.java
@@ -22,7 +22,7 @@
 
 /**
  * {@code HashFormat} that outputs <em>only</em> The hash's digest bytes in hex format.  It does not print out
- * anything else (salt, iterations, etc).  This implementation is mostly provided as a convenience for
+ * anything else (salt, iterations, etc.).  This implementation is mostly provided as a convenience for
  * command-line hashing.
  *
  * @since 1.2
diff --git a/event/src/main/java/org/apache/shiro/event/support/EventListener.java b/event/src/main/java/org/apache/shiro/event/support/EventListener.java
index adf386a..683c51d 100644
--- a/event/src/main/java/org/apache/shiro/event/support/EventListener.java
+++ b/event/src/main/java/org/apache/shiro/event/support/EventListener.java
@@ -27,7 +27,7 @@
  * {@link org.apache.shiro.event.Subscribe Subscribe} annotation on methods they wish to receive events.
  * <p/>
  * This interface therefore mainly represents a 'middle man' between the event bus and the actual subscribing
- * component.  As such, event bus implementors (or framework/infrastructural implementors) or those that wish to
+ * component.  As such, event bus implementers (or framework/infrastructural implementers) or those that wish to
  * customize listener/dispatch functionality might find this concept useful.
  * <p/>
  * It is a concept almost always used in conjunction with a {@link EventListenerResolver} implementation.
diff --git a/event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModiferSubscriber.groovy b/event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModifierSubscriber.groovy
similarity index 96%
rename from event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModiferSubscriber.groovy
rename to event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModifierSubscriber.groovy
index 3751669..5f7230e 100644
--- a/event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModiferSubscriber.groovy
+++ b/event/src/test/groovy/org/apache/shiro/event/support/InvalidMethodModifierSubscriber.groovy
@@ -23,7 +23,7 @@
 /**
  * @since 1.3
  */
-class InvalidMethodModiferSubscriber {
+class InvalidMethodModifierSubscriber {
 
     @Subscribe
     protected void onEvent(Object event) {
diff --git a/event/src/test/groovy/org/apache/shiro/event/support/SingleArgumentMethodEventListenerTest.groovy b/event/src/test/groovy/org/apache/shiro/event/support/SingleArgumentMethodEventListenerTest.groovy
index c0424fc..52dd1c9 100644
--- a/event/src/test/groovy/org/apache/shiro/event/support/SingleArgumentMethodEventListenerTest.groovy
+++ b/event/src/test/groovy/org/apache/shiro/event/support/SingleArgumentMethodEventListenerTest.groovy
@@ -93,8 +93,8 @@
 
     @Test(expected=IllegalArgumentException)
     void testNonPublicMethodSubscriber() {
-        def target = new InvalidMethodModiferSubscriber()
-        def method = InvalidMethodModiferSubscriber.class.getDeclaredMethods().find { it.name == "onEvent" }
+        def target = new InvalidMethodModifierSubscriber()
+        def method = InvalidMethodModifierSubscriber.class.getDeclaredMethods().find { it.name == "onEvent" }
 
         new SingleArgumentMethodEventListener(target, method)
     }
diff --git a/integration-tests/guice3/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java b/integration-tests/guice3/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
index 1288c84..96dbbab 100644
--- a/integration-tests/guice3/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
+++ b/integration-tests/guice3/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
@@ -55,7 +55,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("root");
         form.<HtmlInput>getInputByName("password").setValueAttribute("secret");
         page = form.<HtmlInput>getInputByName("submit").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/logout");
     }
 
diff --git a/integration-tests/guice4/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java b/integration-tests/guice4/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
index 1288c84..96dbbab 100644
--- a/integration-tests/guice4/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
+++ b/integration-tests/guice4/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
@@ -55,7 +55,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("root");
         form.<HtmlInput>getInputByName("password").setValueAttribute("secret");
         page = form.<HtmlInput>getInputByName("submit").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/logout");
     }
 
diff --git a/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java b/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
index 9125e41..941e389 100644
--- a/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
+++ b/lang/src/main/java/org/apache/shiro/lang/io/ClassResolvingObjectInputStream.java
@@ -27,7 +27,7 @@
 import java.io.ObjectStreamClass;
 
 /**
- * Enables correct ClassLoader lookup in various environments (e.g. JEE Servers, etc).
+ * Enables correct ClassLoader lookup in various environments (e.g. JEE Servers, etc.).
  *
  * @since 1.2
  * @see <a href="https://issues.apache.org/jira/browse/SHIRO-334">SHIRO-334</a>
diff --git a/lang/src/main/java/org/apache/shiro/lang/util/Assert.java b/lang/src/main/java/org/apache/shiro/lang/util/Assert.java
index a1486bf..cff02e6 100644
--- a/lang/src/main/java/org/apache/shiro/lang/util/Assert.java
+++ b/lang/src/main/java/org/apache/shiro/lang/util/Assert.java
@@ -35,7 +35,7 @@
  * <p>Typically used to validate method arguments rather than configuration
  * properties, to check for cases that are usually programmer errors rather than
  * configuration errors. In contrast to config initialization code, there is
- * usally no point in falling back to defaults in such methods.
+ * usually no point in falling back to defaults in such methods.
  *
  * <p>This class is similar to JUnit's assertion library. If an argument value is
  * deemed invalid, an {@link IllegalArgumentException} is thrown (typically).
diff --git a/lang/src/main/java/org/apache/shiro/lang/util/SoftHashMap.java b/lang/src/main/java/org/apache/shiro/lang/util/SoftHashMap.java
index ffd3bd4..cf20c7d 100644
--- a/lang/src/main/java/org/apache/shiro/lang/util/SoftHashMap.java
+++ b/lang/src/main/java/org/apache/shiro/lang/util/SoftHashMap.java
@@ -87,7 +87,7 @@
      * Creates a new SoftHashMap with the specified retention size.
      * <p/>
      * The retention size (n) is the total number of most recent entries in the map that will be strongly referenced
-     * (ie 'retained') to prevent them from being eagerly garbage collected.  That is, the point of a SoftHashMap is to
+     * (i.e.'retained') to prevent them from being eagerly garbage collected.  That is, the point of a SoftHashMap is to
      * allow the garbage collector to remove as many entries from this map as it desires, but there will always be (n)
      * elements retained after a GC due to the strong references.
      * <p/>
@@ -124,7 +124,7 @@
      * Creates a {@code SoftHashMap} backed by the specified {@code source}, with the specified retention size.
      * <p/>
      * The retention size (n) is the total number of most recent entries in the map that will be strongly referenced
-     * (ie 'retained') to prevent them from being eagerly garbage collected.  That is, the point of a SoftHashMap is to
+     * (i.e.'retained') to prevent them from being eagerly garbage collected.  That is, the point of a SoftHashMap is to
      * allow the garbage collector to remove as many entries from this map as it desires, but there will always be (n)
      * elements retained after a GC due to the strong references.
      * <p/>
diff --git a/pom.xml b/pom.xml
index ac96652..2011d5a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <!-- pick up Apache distributionManagement for releasing (snapshots, releases, etc): -->
+    <!-- pick up Apache distributionManagement for releasing (snapshots, releases, etc.): -->
     <parent>
         <groupId>org.apache</groupId>
         <artifactId>apache</artifactId>
diff --git a/samples/aspectj/src/main/java/org/apache/shiro/samples/aspectj/bank/SecureBankService.java b/samples/aspectj/src/main/java/org/apache/shiro/samples/aspectj/bank/SecureBankService.java
index 5d71f51..41f0e3a 100644
--- a/samples/aspectj/src/main/java/org/apache/shiro/samples/aspectj/bank/SecureBankService.java
+++ b/samples/aspectj/src/main/java/org/apache/shiro/samples/aspectj/bank/SecureBankService.java
@@ -137,7 +137,7 @@
         assertServiceState();
         log.info("Getting owner of account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
         return a.getOwnerName();
     }
 
@@ -150,7 +150,7 @@
         assertServiceState();
         log.info("Getting balance of account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
         return a.getBalance();
     }
 
@@ -164,7 +164,7 @@
         log.info("Making deposit of " + anAmount + " into account " + anAccountId);
 
         try {
-            Account a = safellyRetrieveAccountForId(anAccountId);
+            Account a = safelyRetrieveAccountForId(anAccountId);
             AccountTransaction tx = AccountTransaction.createDepositTx(anAccountId, anAmount);
             tx.setCreatedBy(getCurrentUsername());
             log.debug("Created a new transaction " + tx);
@@ -188,7 +188,7 @@
         assertServiceState();
         log.info("Making withdrawal of " + anAmount + " from account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
         AccountTransaction tx = AccountTransaction.createWithdrawalTx(anAccountId, anAmount);
         tx.setCreatedBy(getCurrentUsername());
         log.debug("Created a new transaction " + tx);
@@ -208,7 +208,7 @@
         assertServiceState();
         log.info("Getting transactions of account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
 
         TxLog[] txs = new TxLog[a.getTransactions().size()];
         int index = 0;
@@ -234,7 +234,7 @@
         assertServiceState();
         log.info("Closing account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
         if (!a.isActive()) {
             throw new InactiveAccountException("The account " + anAccountId + " is already closed");
         }
@@ -263,19 +263,19 @@
         assertServiceState();
         log.info("Getting active status of account " + anAccountId);
 
-        Account a = safellyRetrieveAccountForId(anAccountId);
+        Account a = safelyRetrieveAccountForId(anAccountId);
         return a.isActive();
     }
 
 
     /**
-     * Internal method that safelly (concurrency-wise) retrieves an account from the id passed in.
+     * Internal method that safely (concurrency-wise) retrieves an account from the id passed in.
      *
      * @param anAccountId The identifier of the account to retrieve.
      * @return The account instance retrieved.
      * @throws AccountNotFoundException If no account is found for the provided identifier.
      */
-    protected Account safellyRetrieveAccountForId(long anAccountId) throws AccountNotFoundException {
+    protected Account safelyRetrieveAccountForId(long anAccountId) throws AccountNotFoundException {
         Account account = null;
         synchronized (_accounts) {
             account = _accountsById.get(anAccountId);
diff --git a/samples/guice/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java b/samples/guice/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
index 579357e..7ad30f5 100644
--- a/samples/guice/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
+++ b/samples/guice/src/test/java/org/apache/shiro/samples/guice/ContainerIntegrationIT.java
@@ -54,7 +54,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("root");
         form.<HtmlInput>getInputByName("password").setValueAttribute("secret");
         page = form.<HtmlInput>getInputByName("submit").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/logout");
     }
 
diff --git a/samples/servlet-plugin/src/test/java/org/apache/shiro/test/ContainerIntegrationIT.java b/samples/servlet-plugin/src/test/java/org/apache/shiro/test/ContainerIntegrationIT.java
index 658415a..376f98f 100644
--- a/samples/servlet-plugin/src/test/java/org/apache/shiro/test/ContainerIntegrationIT.java
+++ b/samples/servlet-plugin/src/test/java/org/apache/shiro/test/ContainerIntegrationIT.java
@@ -52,7 +52,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("root");
         form.<HtmlInput>getInputByName("password").setValueAttribute("secret");
         page = form.<HtmlInput>getInputByName("submit").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/logout");
     }
 }
diff --git a/samples/spring-hibernate/src/test/java/org/apache/shiro/samples/ContainerIntegrationIT.java b/samples/spring-hibernate/src/test/java/org/apache/shiro/samples/ContainerIntegrationIT.java
index 12c2247..a256373 100644
--- a/samples/spring-hibernate/src/test/java/org/apache/shiro/samples/ContainerIntegrationIT.java
+++ b/samples/spring-hibernate/src/test/java/org/apache/shiro/samples/ContainerIntegrationIT.java
@@ -56,7 +56,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("admin");
         form.<HtmlInput>getInputByName("password").setValueAttribute("admin");
         page = form.<HtmlInput>getInputByValue("Login").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/s/logout");
     }
 }
diff --git a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java
index 7e50f0a..f7e4712 100644
--- a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java
+++ b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/BootstrapDataPopulator.java
@@ -73,7 +73,7 @@
         jdbcTemplate.execute(CREATE_TABLES);
 
         //password is 'user1' SHA hashed and base64 encoded:
-        //The first argument to the hash constructor is the actual value to be hased.  The 2nd is the
+        //The first argument to the hash constructor is the actual value to be hashed.  The 2nd is the
         //salt.  In this simple demo scenario, the username and the password are the same, but to clarify the
         //distinction, you would see this in practice:
         //new Sha256Hash( <password>, <cryptographically strong randomly generated salt> (not the username!) )
diff --git a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
index 9c06eae..77f568c 100644
--- a/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
+++ b/samples/spring-mvc/src/main/java/org/apache/shiro/samples/spring/config/ApplicationConfig.java
@@ -74,7 +74,7 @@
 
 
     /**
-     * Used by the SecurityManager to access security data (users, roles, etc).
+     * Used by the SecurityManager to access security data (users, roles, etc.).
      * Many other realm implementations can be used too (PropertiesRealm,
      * LdapRealm, etc.
      * @param dataSource
@@ -109,7 +109,7 @@
         EhCacheManager ehCacheManager = new EhCacheManager();
 
         // Set a net.sf.ehcache.CacheManager instance here if you already have one.
-        // If not, a new one will be creaed with a default config:
+        // If not, a new one will be created with a default config:
         // ehCacheManager.setCacheManager(...);
 
         // If you don't have a pre-built net.sf.ehcache.CacheManager instance to inject, but you want
diff --git a/samples/web/src/test/java/org/apache/shiro/test/WebAppContainerIntegrationIT.java b/samples/web/src/test/java/org/apache/shiro/test/WebAppContainerIntegrationIT.java
index 3f724f3..cfaa354 100644
--- a/samples/web/src/test/java/org/apache/shiro/test/WebAppContainerIntegrationIT.java
+++ b/samples/web/src/test/java/org/apache/shiro/test/WebAppContainerIntegrationIT.java
@@ -55,7 +55,7 @@
         form.<HtmlInput>getInputByName("username").setValueAttribute("root");
         form.<HtmlInput>getInputByName("password").setValueAttribute("secret");
         page = form.<HtmlInput>getInputByName("submit").click();
-        // This'll throw an expection if not logged in
+        // This'll throw an exception if not logged in
         page.getAnchorByHref("/logout");
     }
 }
diff --git a/support/aspectj/src/main/java/org/apache/shiro/aspectj/AspectjAnnotationsAuthorizingMethodInterceptor.java b/support/aspectj/src/main/java/org/apache/shiro/aspectj/AspectjAnnotationsAuthorizingMethodInterceptor.java
index 8837731..67a5aee 100644
--- a/support/aspectj/src/main/java/org/apache/shiro/aspectj/AspectjAnnotationsAuthorizingMethodInterceptor.java
+++ b/support/aspectj/src/main/java/org/apache/shiro/aspectj/AspectjAnnotationsAuthorizingMethodInterceptor.java
@@ -28,8 +28,8 @@
 import java.util.Arrays;
 
 /**
- * Extends the annotations authorizing method interceptor class hierarchie to adapt
- * an aspectj {@link JoinPoint} into a {@link MethodInvocation} amd to perform the
+ * Extends the annotations authorizing method interceptor class hierarchy to adapt
+ * an aspectj {@link JoinPoint} into a {@link MethodInvocation} and to perform the
  * authorization of method invocations.
  *
  * @since 1.0
@@ -44,7 +44,7 @@
      * Performs the method interception of the before advice at the specified joint point.
      *
      * @param aJoinPoint The joint point to intercept.
-     * @throws Throwable If an error occurs berforming the method invocation.
+     * @throws Throwable If an error occurs performing the method invocation.
      */
     protected void performBeforeInterception(JoinPoint aJoinPoint) throws Throwable {
         if (log.isTraceEnabled()) log.trace("#### Invoking a method decorated with a Shiro annotation" +
diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
index b0b603c..1c1b8b6 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
@@ -317,7 +317,7 @@
 

     /**

      * Builds a FilterConfig from a Filer and configuration String

-     * @param typeLiteral The TyleLiteral of the filter key to be used.

+     * @param typeLiteral The TypeLiteral of the filter key to be used.

      * @param configValue the configuration used.

      * @param <T> A Servlet Filter class.

      * @return A FilterConfig used to map a String path to this configuration.

diff --git a/support/guice/src/main/java/org/apache/shiro/guice/web/SimpleFilterChain.java b/support/guice/src/main/java/org/apache/shiro/guice/web/SimpleFilterChain.java
index eee6230..badb110 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/web/SimpleFilterChain.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/web/SimpleFilterChain.java
@@ -47,7 +47,7 @@
 

     /**

      * Exposed for testing, not part of public API.

-     * @return an Iterater of filters.

+     * @return an Iterator of filters.

      */

     Iterator<? extends Filter> getFilters() {

         return chain;

diff --git a/support/guice/src/test/java/org/apache/shiro/guice/ShiroSessionScopeTest.java b/support/guice/src/test/java/org/apache/shiro/guice/ShiroSessionScopeTest.java
index 9b8c901..9b84dc2 100644
--- a/support/guice/src/test/java/org/apache/shiro/guice/ShiroSessionScopeTest.java
+++ b/support/guice/src/test/java/org/apache/shiro/guice/ShiroSessionScopeTest.java
@@ -40,14 +40,14 @@
             Provider<SomeClass> mockProvider = createMock(Provider.class);

             Session session = createMock(Session.class);

 

-            SomeClass retuned = new SomeClass();

+            SomeClass returned = new SomeClass();

 

             expect(subject.getSession()).andReturn(session);

             expect(session.getAttribute(key)).andReturn(null);

-            expect(mockProvider.get()).andReturn(retuned);

+            expect(mockProvider.get()).andReturn(returned);

 

             expect(subject.getSession()).andReturn(session);

-            expect(session.getAttribute(key)).andReturn(retuned);

+            expect(session.getAttribute(key)).andReturn(returned);

 

 

             replay(subject, mockProvider, session);

@@ -55,9 +55,9 @@
             ShiroSessionScope underTest = new ShiroSessionScope();

 

             // first time the session doesn't contain it, we expect the provider to be invoked

-            assertSame(retuned, underTest.scope(key, mockProvider).get());

+            assertSame(returned, underTest.scope(key, mockProvider).get());

             // second time the session does contain it, we expect the provider to not be invoked

-            assertSame(retuned, underTest.scope(key, mockProvider).get());

+            assertSame(returned, underTest.scope(key, mockProvider).get());

 

             verify(subject, mockProvider, session);

         } finally {

diff --git a/support/guice/src/test/java/org/apache/shiro/guice/web/DefaultFiltersTest.java b/support/guice/src/test/java/org/apache/shiro/guice/web/DefaultFiltersTest.java
index 948bbd3..22a5ff1 100644
--- a/support/guice/src/test/java/org/apache/shiro/guice/web/DefaultFiltersTest.java
+++ b/support/guice/src/test/java/org/apache/shiro/guice/web/DefaultFiltersTest.java
@@ -45,7 +45,7 @@
                     }

                 }

                 if(!found) {

-                    fail("Guice ShiroWebModule containts a default filter that Shiro proper does not. (" + filterType.getName() + ")");

+                    fail("Guice ShiroWebModule contains a default filter that Shiro proper does not. (" + filterType.getName() + ")");

                 }

             }

         }

diff --git a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
index 6de5a75..ac02d2a 100644
--- a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
+++ b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
@@ -261,7 +261,7 @@
     @Test

     public void testAddFilterChainGuice3Only() {

 

-        Assume.assumeTrue("This test only runs agains Guice 3.x", ShiroWebModule.isGuiceVersion3());

+        Assume.assumeTrue("This test only runs against Guice 3.x", ShiroWebModule.isGuiceVersion3());

 

         final ShiroModuleTest.MockRealm mockRealm = createMock(ShiroModuleTest.MockRealm.class);

         ServletContext servletContext = createMock(ServletContext.class);

diff --git a/support/quartz/src/main/java/org/apache/shiro/session/mgt/quartz/package-info.java b/support/quartz/src/main/java/org/apache/shiro/session/mgt/quartz/package-info.java
index 435ff42..e73918a 100644
--- a/support/quartz/src/main/java/org/apache/shiro/session/mgt/quartz/package-info.java
+++ b/support/quartz/src/main/java/org/apache/shiro/session/mgt/quartz/package-info.java
@@ -19,6 +19,6 @@
 /**
  * <a href="http://www.opensymphony.com/quartz/" target="_top">Quartz</a>-based implementations of
  * components that help <tt>SessionManager</tt> implementations maintain sessions (timed expiration, orphan cleanup,
- * etc).
+ * etc.).
  */
 package org.apache.shiro.session.mgt.quartz;
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java b/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
index 531b59b..46f0282 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/ShiroEventBusBeanPostProcessor.java
@@ -31,7 +31,7 @@
 /**
  * Spring {@link BeanPostProcessor} that detects, {@link EventBusAware} and classes containing {@link Subscribe @Subscribe} methods.
  * Any classes implementing EventBusAware will have the setEventBus() method called with the <code>eventBus</code>. Any
- * classes discovered with methods that are annotated with @Subscribe will be automaticly registered with the EventBus.
+ * classes discovered with methods that are annotated with @Subscribe will be automatically registered with the EventBus.
  *
  * <p><strong>NOTE:</strong> in a Spring environment implementing EventBusAware is not necessary, as you can just inject the EventBus with
  * {@link org.springframework.beans.factory.annotation.Autowire @Autowire}.</p>
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AopAllianceAnnotationsAuthorizingMethodInterceptor.java b/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AopAllianceAnnotationsAuthorizingMethodInterceptor.java
index bdfca87..e2ab836 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AopAllianceAnnotationsAuthorizingMethodInterceptor.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/security/interceptor/AopAllianceAnnotationsAuthorizingMethodInterceptor.java
@@ -57,7 +57,7 @@
      * Creates a {@link MethodInvocation MethodInvocation} that wraps an
      * {@link org.aopalliance.intercept.MethodInvocation org.aopalliance.intercept.MethodInvocation} instance,
      * enabling Shiro Annotations in <a href="http://aopalliance.sourceforge.net/">AOP Alliance</a> environments
-     * (Spring, etc).
+     * (Spring, etc.).
      *
      * @param implSpecificMethodInvocation AOP Alliance {@link org.aopalliance.intercept.MethodInvocation MethodInvocation}
      * @return a Shiro {@link MethodInvocation MethodInvocation} instance that wraps the AOP Alliance instance.
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java b/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
index 44e5280..7fb5a26 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/web/ShiroFilterFactoryBean.java
@@ -99,7 +99,7 @@
  * and each of these 3 classes has configurable properties that are application-specific.
  * <p/>
  * A dilemma arises where, if you want to for example set the application's 'loginUrl' for any Filter, you don't want
- * to have to manually specify that value for <em>each</em> filter instance definied.
+ * to have to manually specify that value for <em>each</em> filter instance defined.
  * <p/>
  * To prevent configuration duplication, this implementation provides the following properties to allow you
  * to set relevant values in only one place:
@@ -178,7 +178,7 @@
     /**
      * Sets the application's login URL to be assigned to all acquired Filters that subclass
      * {@link AccessControlFilter}.  This is a convenience mechanism: for all configured {@link #setFilters filters},
-     * as well for any default ones ({@code authc}, {@code user}, etc), this value will be passed on to each Filter
+     * as well for any default ones ({@code authc}, {@code user}, etc.), this value will be passed on to each Filter
      * via the {@link AccessControlFilter#setLoginUrl(String)} method<b>*</b>.  This eliminates the need to
      * configure the 'loginUrl' property manually on each filter instance, and instead that can be configured once
      * via this attribute.
@@ -210,7 +210,7 @@
     /**
      * Sets the application's after-login success URL to be assigned to all acquired Filters that subclass
      * {@link AuthenticationFilter}.  This is a convenience mechanism: for all configured {@link #setFilters filters},
-     * as well for any default ones ({@code authc}, {@code user}, etc), this value will be passed on to each Filter
+     * as well for any default ones ({@code authc}, {@code user}, etc.), this value will be passed on to each Filter
      * via the {@link AuthenticationFilter#setSuccessUrl(String)} method<b>*</b>.  This eliminates the need to
      * configure the 'successUrl' property manually on each filter instance, and instead that can be configured once
      * via this attribute.
@@ -242,7 +242,7 @@
     /**
      * Sets the application's 'unauthorized' URL to be assigned to all acquired Filters that subclass
      * {@link AuthorizationFilter}.  This is a convenience mechanism: for all configured {@link #setFilters filters},
-     * as well for any default ones ({@code roles}, {@code perms}, etc), this value will be passed on to each Filter
+     * as well for any default ones ({@code roles}, {@code perms}, etc.), this value will be passed on to each Filter
      * via the {@link AuthorizationFilter#setUnauthorizedUrl(String)} method<b>*</b>.  This eliminates the need to
      * configure the 'unauthorizedUrl' property manually on each filter instance, and instead that can be configured once
      * via this attribute.
diff --git a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
index b8def1b..bd511ca 100644
--- a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
+++ b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationTest.groovy
@@ -60,9 +60,9 @@
         assertSame(((DefaultSecurityManager)securityManager).getEventBus(), eventBus)
 
         def defaultSecurityManager = (DefaultSecurityManager) securityManager
-        def authorizor = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
-        assertNull authorizor.rolePermissionResolver
-        assertNull authorizor.permissionResolver
+        def authorizer = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
+        assertNull authorizer.rolePermissionResolver
+        assertNull authorizer.permissionResolver
 
         // now lets do a couple quick permission tests to make sure everything has been initialized correctly.
         Subject joeCoder = new Subject.Builder(securityManager).buildSubject()
diff --git a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
index 12dff58..6dc2dba 100644
--- a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
+++ b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroConfigurationWithOptionalComponentsTest.groovy
@@ -59,9 +59,9 @@
         assertNotNull securityManager.cacheManager
 
         def defaultSecurityManager = (DefaultSecurityManager) securityManager
-        def authorizor = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
-        assertNotNull authorizor.rolePermissionResolver
-        assertNotNull authorizor.permissionResolver
+        def authorizer = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
+        assertNotNull authorizer.rolePermissionResolver
+        assertNotNull authorizer.permissionResolver
 
         // now lets do a couple quick permission tests to make sure everything has been initialized correctly.
         Subject joeCoder = new Subject.Builder(securityManager).buildSubject()
diff --git a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
index 5105293..39d50fc 100644
--- a/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
+++ b/support/spring/src/test/groovy/org/apache/shiro/spring/config/ShiroWebConfigurationTest.groovy
@@ -66,9 +66,9 @@
         assertSame(((DefaultSecurityManager)securityManager).getEventBus(), eventBus)
 
         def defaultSecurityManager = (DefaultSecurityManager) securityManager
-        def authorizor = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
-        assertNull authorizor.rolePermissionResolver
-        assertNull authorizor.permissionResolver
+        def authorizer = (ModularRealmAuthorizer) defaultSecurityManager.getAuthorizer();
+        assertNull authorizer.rolePermissionResolver
+        assertNull authorizer.permissionResolver
 
         // now lets do a couple quick permission tests to make sure everything has been initialized correctly.
         Subject joeCoder = new Subject.Builder(securityManager).buildSubject()
diff --git a/support/spring/src/test/resources/org/apache/shiro/spring/security/interceptor/AbstractAuthorizationAnnotationTest-context.xml b/support/spring/src/test/resources/org/apache/shiro/spring/security/interceptor/AbstractAuthorizationAnnotationTest-context.xml
index 2dc1d51..fb0f8e4 100644
--- a/support/spring/src/test/resources/org/apache/shiro/spring/security/interceptor/AbstractAuthorizationAnnotationTest-context.xml
+++ b/support/spring/src/test/resources/org/apache/shiro/spring/security/interceptor/AbstractAuthorizationAnnotationTest-context.xml
@@ -28,7 +28,7 @@
        will provide another Spring file in addition to this one that will

        turn on a different way of enabling Spring AOP.  (i.e. one will use

        a DefaultAutoProxyCreator, another will use the <aop:config/> mechanism,

-       etc). -->

+       etc.). -->

 

     <bean id="iniRealm" class="org.apache.shiro.realm.text.IniRealm">

         <property name="userDefinitions">

diff --git a/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java b/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
index 020d6d4..3e5e717 100644
--- a/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
+++ b/tools/hasher/src/main/java/org/apache/shiro/tools/hasher/Hasher.java
@@ -54,7 +54,7 @@
 import static java.util.Collections.emptyMap;
 
 /**
- * Commandline line utility to hash data such as strings, passwords, resources (files, urls, etc).
+ * Commandline line utility to hash data such as strings, passwords, resources (files, urls, etc.).
  * <p/>
  * Usage:
  * <pre>
@@ -174,7 +174,7 @@
                 generateSalt = true;
                 generatedSaltSize = getRequiredPositiveInt(line, SALT_GEN_SIZE);
                 if (generatedSaltSize % 8 != 0) {
-                    throw new IllegalArgumentException("Generated salt size must be a multiple of 8 (e.g. 128, 192, 256, 512, etc).");
+                    throw new IllegalArgumentException("Generated salt size must be a multiple of 8 (e.g. 128, 192, 256, 512, etc.).");
                 }
             }
             if (line.hasOption(PRIVATE_SALT.getOpt())) {
diff --git a/web/src/main/java/org/apache/shiro/web/env/EnvironmentLoader.java b/web/src/main/java/org/apache/shiro/web/env/EnvironmentLoader.java
index 9a3d9b5..3ee752b 100644
--- a/web/src/main/java/org/apache/shiro/web/env/EnvironmentLoader.java
+++ b/web/src/main/java/org/apache/shiro/web/env/EnvironmentLoader.java
@@ -40,7 +40,7 @@
  * {@code ServletContext} at application startup.
  * <p/>
  * In Shiro 1.1 and earlier, the Shiro ServletFilter was responsible for creating the {@code WebSecurityManager} and
- * any additional objects (security filters, etc).  However, any component not filtered by the Shiro Filter (such
+ * any additional objects (security filters, etc.).  However, any component not filtered by the Shiro Filter (such
  * as other context listeners) was not able to easily acquire the these objects to perform security operations.
  * <p/>
  * Due to this, in Shiro 1.2 and later, this {@code EnvironmentLoader} (or more likely, the
diff --git a/web/src/main/java/org/apache/shiro/web/env/IniWebEnvironment.java b/web/src/main/java/org/apache/shiro/web/env/IniWebEnvironment.java
index 81e9f11..9c0110a 100644
--- a/web/src/main/java/org/apache/shiro/web/env/IniWebEnvironment.java
+++ b/web/src/main/java/org/apache/shiro/web/env/IniWebEnvironment.java
@@ -324,7 +324,7 @@
      */
     private Ini convertPathToIni(String path, boolean required) {
 
-        //TODO - this logic is ugly - it'd be ideal if we had a Resource API to polymorphically encaspulate this behavior
+        //TODO - this logic is ugly - it'd be ideal if we had a Resource API to polymorphically encapsulate this behavior
 
         Ini ini = null;
 
@@ -360,7 +360,7 @@
         return ini;
     }
 
-    //TODO - this logic is ugly - it'd be ideal if we had a Resource API to polymorphically encaspulate this behavior
+    //TODO - this logic is ugly - it'd be ideal if we had a Resource API to polymorphically encapsulate this behavior
     private InputStream getServletContextResourceStream(String path) {
         InputStream is = null;
 
diff --git a/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java b/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
index 11eec59..d6bf30c 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/PathMatchingFilter.java
@@ -64,7 +64,7 @@
     protected Map<String, Object> appliedPaths = new LinkedHashMap<String, Object>();
 
     /**
-     * Splits any comma-delmited values that might be found in the <code>config</code> argument and sets the resulting
+     * Splits any comma-delimited values that might be found in the <code>config</code> argument and sets the resulting
      * <code>String[]</code> array on the <code>appliedPaths</code> internal Map.
      * <p/>
      * That is:
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authc/AnonymousFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authc/AnonymousFilter.java
index 18e6b41..419a878 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authc/AnonymousFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authc/AnonymousFilter.java
@@ -24,7 +24,7 @@
 import javax.servlet.ServletResponse;
 
 /**
- * Filter that allows access to a path immeidately without performing security checks of any kind.
+ * Filter that allows access to a path immediately without performing security checks of any kind.
  * <p/>
  * This filter is useful primarily in exclusionary policies, where you have defined a url pattern
  * to require a certain security level, but maybe only subset of urls in that pattern should allow any access.
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticatingFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticatingFilter.java
index 2d58931..7d82cb1 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticatingFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authc/AuthenticatingFilter.java
@@ -99,7 +99,7 @@
      * current <code>request</code>, <code>false</code> otherwise.
      * <p/>
      * This implementation always returns <code>false</code> and is provided as a template hook to subclasses that
-     * support <code>rememberMe</code> logins and wish to determine <code>rememberMe</code> in a custom mannner
+     * support <code>rememberMe</code> logins and wish to determine <code>rememberMe</code> in a custom manner
      * based on the current <code>request</code>.
      *
      * @param request the incoming ServletRequest
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
index a6496f4..296add6 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authc/FormAuthenticationFilter.java
@@ -47,7 +47,7 @@
  * <p>If the login attempt fails, the resulting <code>AuthenticationException</code> fully qualified class name will
  * be set as a request attribute under the {@link #setFailureKeyAttribute(String) failureKeyAttribute} key.  This
  * FQCN can be used as an i18n key or lookup mechanism to explain to the user why their login attempt failed
- * (e.g. no account, incorrect password, etc).
+ * (e.g. no account, incorrect password, etc.).
  * <p/>
  * <p>If you would prefer to handle the authentication validation and login in your own code, consider using the
  * {@link PassThruAuthenticationFilter} instead, which allows requests to the
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
index f08bc4b..e847382 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authc/HttpAuthenticationFilter.java
@@ -64,7 +64,7 @@
     protected static final String AUTHENTICATE_HEADER = "WWW-Authenticate";
 
     /**
-     * The name that is displayed during the challenge process of authentication, defauls to <code>application</code>
+     * The name that is displayed during the challenge process of authentication, defaults to <code>application</code>
      * and can be overridden by the {@link #setApplicationName(String) setApplicationName} method.
      */
     private String applicationName = "application";
@@ -265,7 +265,7 @@
      * <p/>
      * This implementation merely casts the request to an <code>HttpServletRequest</code> and returns the header:
      * <p/>
-     * <code>HttpServletRequest httpRequest = {@link WebUtils#toHttp(ServletRequest) toHttp(reaquest)};<br/>
+     * <code>HttpServletRequest httpRequest = {@link WebUtils#toHttp(ServletRequest) toHttp(request)};<br/>
      * return httpRequest.getHeader({@link #AUTHORIZATION_HEADER AUTHORIZATION_HEADER});</code>
      *
      * @param request the incoming <code>ServletRequest</code>
@@ -287,7 +287,7 @@
      * return authzHeader.toLowerCase().startsWith(authzScheme);</code>
      *
      * @param authzHeader the 'Authorization' header value (guaranteed to be non-null if the
-     *                    {@link #isLoginAttempt(ServletRequest, ServletResponse)} method is not overriden).
+     *                    {@link #isLoginAttempt(ServletRequest, ServletResponse)} method is not overridden).
      * @return <code>true</code> if the authzHeader value matches that configured as defined by
      *         the {@link #getAuthzScheme() authzScheme}.
      */
@@ -384,7 +384,7 @@
     }
 
     /**
-     * Returns a String[] containing credential parts parsed fom the "Authorization" header.
+     * Returns a String[] containing credential parts parsed from the "Authorization" header.
      *
      * @param scheme  the {@link #getAuthcScheme() authcScheme} found in the request
      *                {@link #getAuthzHeader(ServletRequest) authzHeader}.  It is ignored by this implementation,
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilter.java
index f646c8e..0e88d87 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilter.java
@@ -30,7 +30,7 @@
 import java.util.Map;
 
 /**
- * A filter that translates an HTTP Request's Method (eg GET, POST, etc)
+ * A filter that translates an HTTP Request's Method (e.g. GET, POST, etc.)
  * into an corresponding action (verb) and uses that verb to construct a permission that will be checked to determine
  * access.
  * <p/>
@@ -40,7 +40,7 @@
  * <p/>
  * This filter functions as follows:
  * <ol>
- * <li>The incoming HTTP request's Method (GET, POST, PUT, DELETE, etc) is discovered.</li>
+ * <li>The incoming HTTP request's Method (GET, POST, PUT, DELETE, etc.) is discovered.</li>
  * <li>The Method is translated into a more 'application friendly' verb, such as 'create', edit', 'delete', etc.</li>
  * <li>The verb is appended to any configured permissions for the
  * {@link org.apache.shiro.web.filter.PathMatchingFilter currently matching path}.</li>
@@ -87,7 +87,7 @@
      */
     private final Map<String, String> httpMethodActions = new HashMap<String, String>();
 
-    //Actions representing HTTP Method values (GET -> read, POST -> create, etc)
+    //Actions representing HTTP Method values (GET -> read, POST -> create, etc.)
     private static final String CREATE_ACTION = "create";
     private static final String READ_ACTION = "read";
     private static final String UPDATE_ACTION = "update";
@@ -156,7 +156,7 @@
 
     /**
      * Determines the corresponding application action that will be performed on the filtered resource based on the
-     * specified HTTP method (GET, POST, etc).
+     * specified HTTP method (GET, POST, etc.).
      *
      * @param method to be translated into the verb.
      * @return The string equivalent verb of the method.
diff --git a/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java b/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
index 8528aa2..9730c5a 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/authz/IpFilter.java
@@ -101,7 +101,7 @@
 
     /**
      * Returns the remote host for a given HTTP request. By default uses the
-     * remote method ServletRequest.getRemoteAddr(). May be overriden by
+     * remote method ServletRequest.getRemoteAddr(). May be overridden by
      * subclasses to obtain address information from specific headers (e.g. XFF
      * or Forwarded) in situations with reverse proxies.
      */
diff --git a/web/src/main/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolver.java b/web/src/main/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolver.java
index e216108..a3f989a 100644
--- a/web/src/main/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolver.java
+++ b/web/src/main/java/org/apache/shiro/web/filter/mgt/PathMatchingFilterChainResolver.java
@@ -114,7 +114,7 @@
                 return filterChainManager.proxy(originalChain, pathPattern);
             } else {
 
-                // in spring web, the requestURI "/resource/menus" ---- "resource/menus/" bose can access the resource
+                // in spring web, the requestURI "/resource/menus" ---- "resource/menus/" both can access the resource
                 // but the pathPattern match "/resource/menus" can not match "resource/menus/"
                 // user can use requestURI + "/" to simply bypassed chain filter, to bypassed shiro protect
 
@@ -139,7 +139,7 @@
      * <p/>
      * Simply delegates to
      * <b><code>{@link #getPathMatcher() getPathMatcher()}.{@link org.apache.shiro.lang.util.PatternMatcher#matches(String, String) matches(pattern,path)}</code></b>.
-     * Subclass implementors should think carefully before overriding this method, as typically a custom
+     * Subclass implementers should think carefully before overriding this method, as typically a custom
      * {@code PathMatcher} should be configured for custom path matching behavior instead.  Favor OO composition
      * rather than inheritance to limit your exposure to Shiro implementation details which may change over time.
      *
@@ -159,7 +159,7 @@
      * and can be overridden by subclasses for custom request-to-application-path resolution behavior.
      *
      * @param request the incoming {@code ServletRequest}
-     * @return the request's path within the appliation.
+     * @return the request's path within the application.
      */
     protected String getPathWithinApplication(ServletRequest request) {
         return WebUtils.getPathWithinApplication(WebUtils.toHttp(request));
diff --git a/web/src/main/java/org/apache/shiro/web/mgt/CookieRememberMeManager.java b/web/src/main/java/org/apache/shiro/web/mgt/CookieRememberMeManager.java
index e6b3503..cca1837 100644
--- a/web/src/main/java/org/apache/shiro/web/mgt/CookieRememberMeManager.java
+++ b/web/src/main/java/org/apache/shiro/web/mgt/CookieRememberMeManager.java
@@ -40,7 +40,7 @@
  * Remembers a Subject's identity by saving the Subject's {@link Subject#getPrincipals() principals} to a {@link Cookie}
  * for later retrieval.
  * <p/>
- * Cookie attributes (path, domain, maxAge, etc) may be set on this class's default
+ * Cookie attributes (path, domain, maxAge, etc.) may be set on this class's default
  * {@link #getCookie() cookie} attribute, which acts as a template to use to set all properties of outgoing cookies
  * created by this implementation.
  * <p/>
diff --git a/web/src/main/java/org/apache/shiro/web/mgt/DefaultWebSecurityManager.java b/web/src/main/java/org/apache/shiro/web/mgt/DefaultWebSecurityManager.java
index f0fb938..59d1aca 100644
--- a/web/src/main/java/org/apache/shiro/web/mgt/DefaultWebSecurityManager.java
+++ b/web/src/main/java/org/apache/shiro/web/mgt/DefaultWebSecurityManager.java
@@ -46,7 +46,7 @@
 
 /**
  * Default {@link WebSecurityManager WebSecurityManager} implementation used in web-based applications or any
- * application that requires HTTP connectivity (SOAP, http remoting, etc).
+ * application that requires HTTP connectivity (SOAP, http remoting, etc.).
  *
  * @since 0.2
  */
@@ -69,13 +69,13 @@
 
     public DefaultWebSecurityManager() {
         super();
-        DefaultWebSessionStorageEvaluator webEvalutator = new DefaultWebSessionStorageEvaluator();  
-        ((DefaultSubjectDAO) this.subjectDAO).setSessionStorageEvaluator(webEvalutator);
+        DefaultWebSessionStorageEvaluator webEvaluator = new DefaultWebSessionStorageEvaluator();  
+        ((DefaultSubjectDAO) this.subjectDAO).setSessionStorageEvaluator(webEvaluator);
         this.sessionMode = HTTP_SESSION_MODE;
         setSubjectFactory(new DefaultWebSubjectFactory());
         setRememberMeManager(new CookieRememberMeManager());
         setSessionManager(new ServletContainerSessionManager());
-        webEvalutator.setSessionManager(getSessionManager());
+        webEvaluator.setSessionManager(getSessionManager());
     }
 
     @SuppressWarnings({"UnusedDeclaration"})
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/AbstractShiroFilter.java b/web/src/main/java/org/apache/shiro/web/servlet/AbstractShiroFilter.java
index 7e2ed55..a412e47 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/AbstractShiroFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/AbstractShiroFilter.java
@@ -40,7 +40,7 @@
 
 /**
  * Abstract base class that provides all standard Shiro request filtering behavior and expects
- * subclasses to implement configuration-specific logic (INI, XML, .properties, etc).
+ * subclasses to implement configuration-specific logic (INI, XML, .properties, etc.).
  * <p/>
  * Subclasses should perform configuration and construction logic in an overridden
  * {@link #init()} method implementation.  That implementation should make available any constructed
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/IniShiroFilter.java b/web/src/main/java/org/apache/shiro/web/servlet/IniShiroFilter.java
index b701aea..94a6cb9 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/IniShiroFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/IniShiroFilter.java
@@ -342,7 +342,7 @@
             ini = getServletContextIniResource(path);
             if (ini == null) {
                 String msg = "There is no servlet context resource corresponding to configPath '" + path + "'  If " +
-                        "the resource is located elsewhere (not immediately resolveable in the servlet context), " +
+                        "the resource is located elsewhere (not immediately resolvable in the servlet context), " +
                         "specify an appropriate classpath:, url:, or file: resource prefix accordingly.";
                 throw new ConfigurationException(msg);
             }
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/OncePerRequestFilter.java b/web/src/main/java/org/apache/shiro/web/servlet/OncePerRequestFilter.java
index 2d0b380..40906ea 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/OncePerRequestFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/OncePerRequestFilter.java
@@ -37,7 +37,7 @@
  * is based on the configured name of the concrete filter instance.
  * <h3>Controlling filter execution</h3>
  * 1.2 introduced the {@link #isEnabled(javax.servlet.ServletRequest, javax.servlet.ServletResponse)} method and
- * {@link #isEnabled()} property to allow explicit controll over whether the filter executes (or allows passthrough)
+ * {@link #isEnabled()} property to allow explicit control over whether the filter executes (or allows passthrough)
  * for any given request.
  * <p/>
  * <b>NOTE</b> This class was initially borrowed from the Spring framework but has continued modifications.
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/ShiroFilter.java b/web/src/main/java/org/apache/shiro/web/servlet/ShiroFilter.java
index 1c1a34f..7e169ac 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/ShiroFilter.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/ShiroFilter.java
@@ -50,7 +50,7 @@
  *     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
  * &lt;/filter-mapping&gt;
  * </pre>
- * Configuration options (configuration file paths, etc) are specified as part of the
+ * Configuration options (configuration file paths, etc.) are specified as part of the
  * {@code EnvironmentLoaderListener} configuration.  See the
  * {@link org.apache.shiro.web.env.EnvironmentLoader EnvironmentLoader} JavaDoc for configuration options.
  *
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
index 072f2af..d9600ca 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletRequest.java
@@ -34,7 +34,7 @@
 /**
  * A {@code ShiroHttpServletRequest} wraps the Servlet container's original {@code ServletRequest} instance, but ensures
  * that all {@link HttpServletRequest} invocations that require Shiro's support ({@link #getRemoteUser getRemoteUser},
- * {@link #getSession getSession}, etc) can be executed first by Shiro as necessary before allowing the underlying
+ * {@link #getSession getSession}, etc.) can be executed first by Shiro as necessary before allowing the underlying
  * Servlet container instance's method to be invoked.
  *
  * @since 0.2
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletResponse.java b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletResponse.java
index 744a736..e4cf57f 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletResponse.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpServletResponse.java
@@ -295,7 +295,7 @@
      *
      * @param url       URL to be encoded with the session id
      * @param sessionId Session id to be included in the encoded URL
-     * @return the url with the session identifer properly encoded.
+     * @return the url with the session identifier properly encoded.
      */
     protected String toEncoded(String url, String sessionId) {
 
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpSession.java b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpSession.java
index 4aa607b..c98452c 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpSession.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/ShiroHttpSession.java
@@ -33,7 +33,7 @@
 /**
  * Wrapper class that uses a Shiro {@link Session Session} under the hood for all session operations instead of the
  * Servlet Container's session mechanism.  This is required in heterogeneous client environments where the Session
- * is used on both the business tier as well as in multiple client technologies (web, swing, flash, etc) since
+ * is used on both the business tier as well as in multiple client technologies (web, swing, flash, etc.) since
  * Servlet container sessions alone cannot support this feature.
  *
  * @since 0.2
diff --git a/web/src/main/java/org/apache/shiro/web/servlet/package-info.java b/web/src/main/java/org/apache/shiro/web/servlet/package-info.java
index 4482648..6567f29 100644
--- a/web/src/main/java/org/apache/shiro/web/servlet/package-info.java
+++ b/web/src/main/java/org/apache/shiro/web/servlet/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 /**
- * Shiro-specific implementations of the Servlet API (Servlet Filters, et al).
+ * Shiro-specific implementations of the Servlet API (Servlet Filters, et al.).
  *
  * @see ShiroFilter
  */
diff --git a/web/src/main/java/org/apache/shiro/web/session/HttpServletSession.java b/web/src/main/java/org/apache/shiro/web/session/HttpServletSession.java
index 0f39eb5..6d76365 100644
--- a/web/src/main/java/org/apache/shiro/web/session/HttpServletSession.java
+++ b/web/src/main/java/org/apache/shiro/web/session/HttpServletSession.java
@@ -33,7 +33,7 @@
 /**
  * {@link Session Session} implementation that is backed entirely by a standard servlet container
  * {@link HttpSession HttpSession} instance.  It does not interact with any of Shiro's session-related components
- * {@code SessionManager}, {@code SecurityManager}, etc, and instead satisfies all method implementations by interacting
+ * {@code SessionManager}, {@code SecurityManager}, etc., and instead satisfies all method implementations by interacting
  * with a servlet container provided {@link HttpSession HttpSession} instance.
  *
  * @since 1.0
diff --git a/web/src/main/java/org/apache/shiro/web/session/mgt/ServletContainerSessionManager.java b/web/src/main/java/org/apache/shiro/web/session/mgt/ServletContainerSessionManager.java
index 937fc53..42b5572 100644
--- a/web/src/main/java/org/apache/shiro/web/session/mgt/ServletContainerSessionManager.java
+++ b/web/src/main/java/org/apache/shiro/web/session/mgt/ServletContainerSessionManager.java
@@ -44,7 +44,7 @@
  * protocol.
  * <p/>
  * Therefore, if you need {@code Session} support for heterogeneous clients (e.g. web browsers,
- * RMI clients, etc), use the {@link DefaultWebSessionManager DefaultWebSessionManager}
+ * RMI clients, etc.), use the {@link DefaultWebSessionManager DefaultWebSessionManager}
  * instead.  The {@code DefaultWebSessionManager} supports both traditional web-based access as well as non web-based
  * clients.
  *
diff --git a/web/src/main/java/org/apache/shiro/web/tags/package-info.java b/web/src/main/java/org/apache/shiro/web/tags/package-info.java
index 6c48e52..3021432 100644
--- a/web/src/main/java/org/apache/shiro/web/tags/package-info.java
+++ b/web/src/main/java/org/apache/shiro/web/tags/package-info.java
@@ -19,7 +19,7 @@
 /**
  * Provides the Shiro JSP Tag Library implementations.
  * <p/>
- * Shiro JSP Tags can be used to evalute or not evaluate (show or not show) parts of a JSP page based on the
+ * Shiro JSP Tags can be used to evaluate or not evaluate (show or not show) parts of a JSP page based on the
  * current user's authentication status and/or authorization (access control) abilities.
  */
 package org.apache.shiro.web.tags;
diff --git a/web/src/main/resources/META-INF/shiro.tld b/web/src/main/resources/META-INF/shiro.tld
index 1501357..f40b23f 100644
--- a/web/src/main/resources/META-INF/shiro.tld
+++ b/web/src/main/resources/META-INF/shiro.tld
@@ -115,7 +115,7 @@
     <name>notAuthenticated</name>
     <tag-class>org.apache.shiro.web.tags.NotAuthenticatedTag</tag-class>
     <body-content>JSP</body-content>
-    <description>Displays body content only if the current user has NOT succesfully authenticated
+    <description>Displays body content only if the current user has NOT successfully authenticated
       _during their current session_. It is logically opposite to the 'authenticated' tag.
     </description>
   </tag>
diff --git a/web/src/test/groovy/org/apache/shiro/web/config/IniFilterChainResolverFactoryTest.groovy b/web/src/test/groovy/org/apache/shiro/web/config/IniFilterChainResolverFactoryTest.groovy
index ba9c57f..e050ce3 100644
--- a/web/src/test/groovy/org/apache/shiro/web/config/IniFilterChainResolverFactoryTest.groovy
+++ b/web/src/test/groovy/org/apache/shiro/web/config/IniFilterChainResolverFactoryTest.groovy
@@ -197,6 +197,6 @@
         def invalidRequestFilter = resolver.filterChainManager.getChain("/index.html").get(0) // this will be the invalidRequest filter
 
         assertThat(invalidRequestFilter, Matchers.instanceOf(InvalidRequestFilter))
-        assertThat("blockSemicolon should be faluse", invalidRequestFilter.blockBackslash)
+        assertThat("blockSemicolon should be false", invalidRequestFilter.blockBackslash)
     }
 }
diff --git a/web/src/test/groovy/org/apache/shiro/web/servlet/IniShiroFilterTest.groovy b/web/src/test/groovy/org/apache/shiro/web/servlet/IniShiroFilterTest.groovy
index bc56913..a4fe6ed 100644
--- a/web/src/test/groovy/org/apache/shiro/web/servlet/IniShiroFilterTest.groovy
+++ b/web/src/test/groovy/org/apache/shiro/web/servlet/IniShiroFilterTest.groovy
@@ -89,7 +89,7 @@
         IniShiroFilter filter = new IniShiroFilter()
         try {
             filter.init(filterConfig)
-            fail "Filter init should have failed due to specified nonexisting resource path."
+            fail "Filter init should have failed due to specified nonexistent resource path."
         } catch (ServletException expected) {
         }
 
diff --git a/web/src/test/java/org/apache/shiro/web/config/WebIniSecurityManagerFactoryTest.java b/web/src/test/java/org/apache/shiro/web/config/WebIniSecurityManagerFactoryTest.java
index 5ec67d8..a0fdcca 100644
--- a/web/src/test/java/org/apache/shiro/web/config/WebIniSecurityManagerFactoryTest.java
+++ b/web/src/test/java/org/apache/shiro/web/config/WebIniSecurityManagerFactoryTest.java
@@ -45,7 +45,7 @@
     @Test
     public void testDefaultFiltersPresent() {
         Ini ini = new Ini();
-        //just a normal configuration line in the MAIN section for any of the default filtes should work
+        //just a normal configuration line in the MAIN section for any of the default filters should work
         //out of the box.  So, create the main section and just config one of them:
         Ini.Section section = ini.addSection(IniSecurityManagerFactory.MAIN_SECTION_NAME);
         section.put("authc.loginUrl", "/login.jsp");
diff --git a/web/src/test/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilterTest.java b/web/src/test/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilterTest.java
index 5c1003c..e798745 100644
--- a/web/src/test/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilterTest.java
+++ b/web/src/test/java/org/apache/shiro/web/filter/authz/HttpMethodPermissionFilterTest.java
@@ -25,7 +25,7 @@
 public class HttpMethodPermissionFilterTest {
 
     @Test
-    public void testPermisisonMapping() {
+    public void testPermissionMapping() {
         // Testing the isAccessAllowed would be easier, but would need to mock out the servlet request
 
         HttpMethodPermissionFilter filter = new HttpMethodPermissionFilter();
diff --git a/web/src/test/java/org/apache/shiro/web/servlet/ShiroHttpServletRequestTest.java b/web/src/test/java/org/apache/shiro/web/servlet/ShiroHttpServletRequestTest.java
index b74911a..6c5bada 100644
--- a/web/src/test/java/org/apache/shiro/web/servlet/ShiroHttpServletRequestTest.java
+++ b/web/src/test/java/org/apache/shiro/web/servlet/ShiroHttpServletRequestTest.java
@@ -54,7 +54,7 @@
      * Test asserting <a href="https://issues.apache.org/jira/browse/SHIRO-637">SHIRO-637<a/>.
      */
     @Test
-    public void testRegetSession() {
+    public void testReGetSession() {
         Session session1 = mock(Session.class);
         Session session2 = mock(Session.class);
         AtomicInteger counter = new AtomicInteger();