diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
index c1b3289..79c441f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
@@ -67,6 +67,7 @@
     /**
      * Init method for this servlet
      */
+    @Override
     public void init(ServletConfig servletConfig) throws ServletException {
 
         super.init(servletConfig);
@@ -80,6 +81,7 @@
     /**
      * Handle GET requests for weblog pages.
      */
+    @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/TrackbackServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/TrackbackServlet.java
index dcd0303..2b43a4e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/TrackbackServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/TrackbackServlet.java
@@ -59,6 +59,7 @@
     private CommentValidationManager commentValidationManager = null;
     
 
+    @Override
     public void init(ServletConfig config) throws ServletException {
         commentValidationManager = new CommentValidationManager();
         
@@ -72,6 +73,7 @@
      *
      * The TrackbackServlet does not support GET requests, it's a 404.
      */
+    @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws IOException, ServletException {
         
@@ -84,6 +86,7 @@
      *
      * Here we handle incoming trackback posts.
      */
+    @Override
     public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
index facdd08..ee94984 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
@@ -90,6 +90,7 @@
         this.resourceId = resourceId;
     }
             
+    @Override
     protected boolean isLocale(String potentialLocale) {
         // We don't support locales in the resource Servlet so we've got to 
         // keep parent from treating upload sub-directory name as a locale.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
index 3fb2280..5df599d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
@@ -76,6 +76,7 @@
     }
     
     
+    @Override
     boolean isValidDestination(String servlet) {
         return (servlet != null && PREVIEW_SERVLET.equals(servlet));
     }
@@ -90,11 +91,13 @@
     }
     
     // override so that previews never show login status
+    @Override
     public String getAuthenticUser() {
         return null;
     }
     
     // override so that previews never show login status
+    @Override
     public boolean isLoggedIn() {
         return false;
     }
@@ -128,6 +131,7 @@
     }
     
     // if we have a preview entry we would prefer to return that
+    @Override
     public WeblogEntry getWeblogEntry() {
         
         if(weblogEntry == null && 
@@ -149,6 +153,7 @@
         return weblogEntry;
     }
     
+    @Override
     public void setWeblogEntry(WeblogEntry weblogEntry) {
         this.weblogEntry = weblogEntry;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
index 1d4c40e..d689d2c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
@@ -71,11 +71,13 @@
     }
     
     // override so that previews never show login status
+    @Override
     public String getAuthenticUser() {
         return null;
     }
     
     // override so that previews never show login status
+    @Override
     public boolean isLoggedIn() {
         return false;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
index 0cc52f4..c91c264 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
@@ -96,6 +96,7 @@
         this.resourcePath = resourcePath;
     }
             
+    @Override
     protected boolean isLocale(String potentialLocale) {
         // We don't support locales in the resource Servlet so we've got to 
         // keep parent from treating upload sub-directory name as a locale.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
index e75f266..920ab6c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
@@ -47,21 +47,25 @@
     }
     
     
+    @Override
     public List<String> requiredGlobalPermissionActions() {
         return Collections.singletonList(GlobalPermission.ADMIN);
     }
     
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
     
     
+    @Override
     public void myPrepare() {
         Map cacheStats = CacheManager.getStats();
         setStats(cacheStats);
     }
     
     
+    @Override
     public String execute() {
         return SUCCESS;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
index 750a8f1..5beb89a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
@@ -85,11 +85,13 @@
     
     
     // admin role required
+    @Override
     public List<String> requiredGlobalPermissionActions() {
         return Collections.singletonList(GlobalPermission.ADMIN);
     }
     
     // no weblog required
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
@@ -159,6 +161,7 @@
     
     
     // show comment management page
+    @Override
     public String execute() {
         
         // load list of comments from query
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
index fb7dd4b..148dbc9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
@@ -52,10 +52,12 @@
     }
 
     // no weblog required
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
 
+    @Override
     public void myPrepare() {
         PingTargetManager pingTargetMgr = WebloggerFactory.getWeblogger().getPingTargetManager();
 
@@ -80,6 +82,7 @@
     /**
      * Save ping target.
      */
+    @Override
     public String execute() {
         myValidate();
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
index fa7529a..c34fbc1 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
@@ -55,6 +55,7 @@
     private String pingTargetId = null;
 
     // no weblog required
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
@@ -70,6 +71,7 @@
     }
 
     // prepare method needs to set ping targets list
+    @Override
     public void myPrepare() {
 
         // load list of ping targets
@@ -89,6 +91,7 @@
     /**
      * Display the ping targets.
      */
+    @Override
     public String execute() {
         return LIST;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
index 29b0e24..53c0daa 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
@@ -44,17 +44,20 @@
 
     private AuthMethod authMethod = WebloggerConfig.getAuthMethod();
 
-    // admin role required    
+    // admin role required
+    @Override
     public List<String> requiredGlobalPermissionActions() {
         return Collections.singletonList(GlobalPermission.ADMIN);
     }
     
     // no weblog required
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
 
     // show user admin search page
+    @Override
     public String execute() {
         return SUCCESS;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
index 2cb4399..73107b9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
@@ -69,16 +69,19 @@
     }
 
     // admin role required
+    @Override
     public List<String> requiredGlobalPermissionActions() {
         return Collections.singletonList(GlobalPermission.ADMIN);
     }
     
     // no weblog required
+    @Override
     public boolean isWeblogRequired() { 
         return false;
     }
 
     // prepare for action by loading user object we are modifying
+    @Override
     public void myPrepare() {
 
         if (isAdd()) {
@@ -109,6 +112,7 @@
      * Show admin user edit page.
      */
     @SkipValidation
+    @Override
     public String execute() {
         if (isAdd()) {
             // initial user create
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
index 75cb170..54f619a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
@@ -49,7 +49,8 @@
      * content "hi there" will be represented as:
      *    {id : "3454545346", content : "hi there"}
      */
-    public void doGet(HttpServletRequest request, 
+    @Override
+    public void doGet(HttpServletRequest request,
                       HttpServletResponse response)
             throws ServletException, IOException {
         
@@ -88,6 +89,7 @@
      * Accepts request with comment 'id' parameter and replaces specified
      * comment's content with the content in the request.
      */
+    @Override
     public void doPut(HttpServletRequest request,
                       HttpServletResponse response)
             throws ServletException, IOException {
@@ -132,6 +134,7 @@
         }
     }
 
+    @Override
     public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
             throws ServletException, IOException {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
index 97bff15..2f4b87c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
@@ -42,12 +42,14 @@
  */
 public class ThemeDataServlet extends HttpServlet {
 
+    @Override
     protected void doPost(
             HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         doGet(request, response);
     }
 
+    @Override
     public void doGet(
             HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
index c9d7056..b3739ce 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
@@ -56,6 +56,7 @@
     private static final long serialVersionUID = -7596671919118637768L;
     private static final int MAX_LENGTH = 50;
 
+    @Override
     public void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
index 8795442..e810195 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
@@ -57,12 +57,14 @@
     
     
     // override default security, we do not require an action weblog
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
     
     
     @SkipValidation
+    @Override
     public String execute() {
 
         // check if blog administrator has enabled creation of new blogs
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
index 12de267..7ad0522 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
@@ -55,15 +55,18 @@
     private String databaseName = "Unknown";
 
 
+    @Override
     public boolean isUserRequired() {
         return false;
     }
 
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
 
 
+    @Override
     public String execute() {
 
         if (WebloggerFactory.isBootstrapped()) {
@@ -208,6 +211,7 @@
         return name;
     }
 
+    @Override
     public String getProp(String key) {
         // Static config only, we don't have database yet
         String value = WebloggerConfig.getProperty(key);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
index f0fbe76..0cd3a83 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
@@ -46,11 +46,13 @@
     }
 
     // override default security, we do not require an authenticated user
+    @Override
     public boolean isUserRequired() {
         return false;
     }
     
     // override default security, we do not require an action weblog
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
@@ -59,6 +61,7 @@
         return authMethod.name();
     }
 
+    @Override
     public String execute() {
         
         // set action error message if there was login error
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
index 9378018..566db7f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
@@ -50,11 +50,13 @@
     
     
     // override default security, we do not require an action weblog
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
     
     
+    @Override
     public String execute() {
         
         return SUCCESS;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
index 6b6fa51..52546b6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
@@ -45,12 +45,14 @@
     
     
     // override default security, we do not require an action weblog
+    @Override
     public boolean isWeblogRequired() {
         return false;
     }
 
 
     @SkipValidation
+    @Override
     public String execute() {
         boolean flush = false;
         
