diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
index b4862dd..3946e75 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
@@ -93,6 +93,7 @@
     /**
      * Responds to app-init event and triggers startup procedures.
      */
+    @Override
     public void contextInitialized(ServletContextEvent sce) {
 
         // First, initialize everything that requires no database
@@ -194,6 +195,7 @@
     /**
      * Responds to app-destroy event and triggers shutdown sequence.
      */
+    @Override
     public void contextDestroyed(ServletContextEvent sce) {
         WebloggerFactory.getWeblogger().shutdown();
         // do we need a more generic mechanism for presentation layer shutdown?
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
index 968845c..79e4c5e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
@@ -122,12 +122,14 @@
     
     
     /** Create session's Roller instance */
+    @Override
     public void sessionCreated(HttpSessionEvent se) {
         RollerSession rollerSession = new RollerSession();
         se.getSession().setAttribute(ROLLER_SESSION, rollerSession);
     }
-    
-    
+
+
+    @Override
     public void sessionDestroyed(HttpSessionEvent se) {
         clearSession(se);
     }
@@ -144,6 +146,7 @@
      * to call it when sessions are saved and then restored at some later
      * point in time.
      */
+    @Override
     public void sessionWillPassivate(HttpSessionEvent se) {
         clearSession(se);
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
index 979b118..790e4b9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
@@ -81,9 +81,11 @@
     }
     
     
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
         context = filterConfig.getServletContext();
     }
-    
+
+    @Override
     public void destroy() {}    
 }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
index ea01e3f..eae80f8 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
@@ -46,12 +46,14 @@
     /**
      * init
      */
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     }
     
     /**
      * destroy
      */
+    @Override
     public void destroy() {
     }
     
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
index c2834be..263cd53 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
@@ -69,10 +69,10 @@
         log.info("");
     }
     
-    
+    @Override
     public void destroy() {}
     
-    
+    @Override
     public void init(FilterConfig filterConfig) {}
     
 }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
index 6caa1a6..2ceda14 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
@@ -42,6 +42,7 @@
     private static Log log = LogFactory.getLog(IPBanFilter.class);
     
     
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
         
         log.info("INIT IPBanFilter");
@@ -64,7 +65,7 @@
         }
     }
     
-    
+    @Override
     public void destroy() {}
     
 }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
index 2ae29e7..294b151 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
@@ -79,9 +79,11 @@
                 request.getRequestURI(), request.getRequestURL().toString());
     }
 
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     }
 
+    @Override
     public void destroy() {
     }
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
index 543c8ed..d96ad69 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
@@ -44,11 +44,11 @@
         chain.doFilter(request, response);
     }
  
-    //@Override
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     }
  
-    //@Override
+    @Override
     public void destroy() {
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
index ab24515..354424c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
@@ -68,8 +68,10 @@
     }
     
     
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {}
     
+    @Override
     public void destroy() {}
     
 }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
index 410033e..d663b97 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
@@ -56,9 +56,11 @@
     }
     
     
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {}
     
-    public void destroy() {}    
+    @Override
+    public void destroy() {}
 }
 
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
index a6ac2de..502aea6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
@@ -74,6 +74,7 @@
         chain.doFilter(request, response);
     }
 
+    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
 
         // Construct our list of ignored urls
@@ -84,6 +85,7 @@
         }
     }
 
+    @Override
     public void destroy() {
     }
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
index ec70518..ca765af 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerRememberMeServices.java
@@ -54,6 +54,7 @@
      *
      * If LDAP is enabled then a configurable dummy password is used in the calculation.
      */
+    @Override
     protected String makeTokenSignature(long tokenExpiryTime, String username, String password) {
 
         boolean usingLDAP = WebloggerConfig.getAuthMethod() == AuthMethod.LDAP;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java
index 18f876e..543a20f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java
@@ -57,6 +57,7 @@
     }
     
     
+    @Override
     protected void loadWeblogEntries(Date startDate, Date endDate, String catName) {
         try {
             WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
@@ -75,6 +76,7 @@
     }
     
     
+    @Override
     public String getContent(Date day) {
         String content = null;
         try {
@@ -136,6 +138,7 @@
      * @param alwaysURL        Always return a URL, never return null
      * @return URL for day, or null if no weblog entry on that day
      */
+    @Override
     public String computeUrl(Date day, boolean nextPrevMonthURL, boolean alwaysURL) {
         String url = null;
         // get the 8 char YYYYMMDD datestring for day, returns null
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
index 0a5cf4a..a9d6f64 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
@@ -356,11 +356,13 @@
         return toString();
     }
     
+    @Override
     public int doStartTag() throws JspException {
         return doStartTag( new PrintWriter( pageContext.getOut(), true) );
     }
     
-    
+
+    @Override
     public int doEndTag() throws JspException {
         return doEndTag( new PrintWriter( pageContext.getOut(), true) );
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
index 153586f..18fe7ea 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
@@ -49,6 +49,7 @@
     // list of RequestMappers that want to inspect the request
     private final List<RequestMapper> requestMappers = new ArrayList<RequestMapper>();
     
+    @Override
     public void init(FilterConfig filterConfig) {
         
         // lookup set of request mappers we are going to use
@@ -134,7 +135,8 @@
         log.debug("exiting");
     }
     
-    
+
+    @Override
     public void destroy() {}
     
 }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java
index ab0d253..bf4eaed 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/FeedModel.java
@@ -159,6 +159,7 @@
             this.feedRequest = feedRequest;
         }
         
+        @Override
         protected String createURL(String url, Map params) {
             List tags = feedRequest.getTags();
             if(tags != null && tags.size() > 0) {
@@ -174,6 +175,7 @@
             return super.createURL(url, params);
         }
         
+        @Override
         public String getUrl() {
             return createURL(super.getUrl(), new HashMap());
         }
@@ -191,6 +193,7 @@
             this.feedRequest = feedRequest;
         }
         
+        @Override
         protected String createURL(String url, Map params) {
             List tags = feedRequest.getTags();
             if(tags != null && tags.size() > 0) {
@@ -206,6 +209,7 @@
             return super.createURL(url, params);
         }
         
+        @Override
         public String getUrl() {
             return createURL(super.getUrl(), new HashMap());
         }
@@ -223,6 +227,7 @@
             this.feedRequest = feedRequest;
         }
         
+        @Override
         protected String createURL(String url, Map params) {
             List tags = feedRequest.getTags();
             if(tags != null && tags.size() > 0) {
@@ -238,6 +243,7 @@
             return super.createURL(url, params);
         }
         
+        @Override
         public String getUrl() {
             return createURL(super.getUrl(), new HashMap());
         }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewPageModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewPageModel.java
index f627c13..f9873db 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewPageModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewPageModel.java
@@ -42,6 +42,7 @@
     /** 
      * Init model.
      */
+    @Override
     public void init(Map initData) throws WebloggerException {
         
         // we expect the init data to contain a weblogRequest object
@@ -69,12 +70,14 @@
     }    
     
     
+    @Override
     public boolean isPermalink() {
         return (previewRequest.getPreviewEntry() != null ||
                 previewRequest.getWeblogAnchor() != null);
     }
     
     
+    @Override
     public WeblogEntryWrapper getWeblogEntry() {
         
         if(previewRequest.getPreviewEntry() != null ||
@@ -90,6 +93,7 @@
      * pager for preview pages which can display things that we don't want
      * available on the "live" weblog, like DRAFT entries.
      */
+    @Override
     public WeblogEntriesPager getWeblogEntriesPager(String catArgument) {
         
         String anchor = previewRequest.getPreviewEntry();
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewURLModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewURLModel.java
index 3039000..f2392b6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewURLModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/PreviewURLModel.java
@@ -37,6 +37,7 @@
     private URLStrategy urlStrategy = null;
     
     
+    @Override
     public void init(Map initData) throws WebloggerException {
         
         // need a weblog request so that we can know the weblog and locale
@@ -71,6 +72,7 @@
      * knowing what theme you are previewing and thus couldn't find the
      * resources for that theme.
      */
+    @Override
     public String resource(String filePath) {
         return urlStrategy.getWeblogResourceURL(weblog, filePath, true);
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
index a4c9470..1796b3c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
@@ -78,6 +78,7 @@
 	private boolean websiteSpecificSearch = true;
 	private String errorMessage = null;
 
+	@Override
 	public void init(Map initData) throws WebloggerException {
 
 		// we expect the init data to contain a searchRequest object
@@ -152,16 +153,19 @@
 	/**
 	 * Is this page showing search results?
 	 */
+	@Override
 	public boolean isSearchResults() {
 		return true;
 	}
 
 	// override page model and return search results pager
+	@Override
 	public WeblogEntriesPager getWeblogEntriesPager() {
 		return pager;
 	}
 
 	// override page model and return search results pager
+	@Override
 	public WeblogEntriesPager getWeblogEntriesPager(String category) {
 		return pager;
 	}
@@ -285,6 +289,7 @@
 		return searchRequest.getWeblogCategoryName();
 	}
 
+	@Override
 	public WeblogCategoryWrapper getWeblogCategory() {
 		if (searchRequest.getWeblogCategory() != null) {
 			return WeblogCategoryWrapper.wrap(
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java
index b706154..1ab1402 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/pagers/CommentsPager.java
@@ -126,6 +126,7 @@
     }
     
     
+    @Override
     public boolean hasMoreItems() {
         return more;
     }
