diff --git a/app/src/main/java/org/apache/roller/RollerException.java b/app/src/main/java/org/apache/roller/RollerException.java
index f6bbd1e..6ff0f33 100644
--- a/app/src/main/java/org/apache/roller/RollerException.java
+++ b/app/src/main/java/org/apache/roller/RollerException.java
@@ -100,6 +100,7 @@
      * Print stack trace for exception and for root cause exception if there is one.
      * @see java.lang.Throwable#printStackTrace()
      */
+    @Override
     public void printStackTrace() {
         super.printStackTrace();
         if (mRootCause != null) {
@@ -113,6 +114,7 @@
      * Print stack trace for exception and for root cause exception if there is one.
      * @param s Stream to print to.
      */
+    @Override
     public void printStackTrace(PrintStream s) {
         super.printStackTrace(s);
         if (mRootCause != null) {
@@ -126,6 +128,7 @@
      * Print stack trace for exception and for root cause exception if there is one.
      * @param s Writer to write to.
      */
+    @Override
     public void printStackTrace(PrintWriter s) {
         super.printStackTrace(s);
         if (null != mRootCause) {
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java b/app/src/main/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
index d0b85d9..91768a9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/PreviewURLStrategy.java
@@ -117,6 +117,7 @@
     /**
      * Get url for a collection of entries on a given weblog.
      */
+    @Override
     public String getWeblogCollectionURL(Weblog weblog,
                                                       String locale,
                                                       String category,
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
index 0cc005d..b76ec5b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
@@ -97,13 +97,15 @@
     }
 
     
+    @Override
     public void release() {
         super.release();
         // tell JPA to close down
         this.strategy.release();
     }
 
-    
+
+    @Override
     public void shutdown() {
         // do our own shutdown first
         this.release();
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/pings/PingQueueTask.java b/app/src/main/java/org/apache/roller/weblogger/business/pings/PingQueueTask.java
index 7659ff5..ad7b13c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/pings/PingQueueTask.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/pings/PingQueueTask.java
@@ -78,6 +78,7 @@
         this.init(PingQueueTask.NAME);
     }
 
+    @Override
     public void init(String name) throws WebloggerException {
         super.init(name);
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
index 098d9f9..b99683f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ContinuousWorkerThread.java
@@ -56,6 +56,7 @@
      *
      * If we ever get interrupted then we quit.
      */
+    @Override
     public void run() {
         
         mLogger.info(this.id+" Started.");
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ResetHitCountsTask.java b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ResetHitCountsTask.java
index 8ef02e4..e254abd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/runnable/ResetHitCountsTask.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/runnable/ResetHitCountsTask.java
@@ -75,6 +75,7 @@
         this.init(ResetHitCountsTask.NAME);
     }
 
+    @Override
     public void init(String name) throws WebloggerException {
         super.init(name);
         
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/runnable/WorkerThread.java b/app/src/main/java/org/apache/roller/weblogger/business/runnable/WorkerThread.java
index 6675c0f..ae64d7a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/runnable/WorkerThread.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/runnable/WorkerThread.java
@@ -59,6 +59,7 @@
      *
      * We just execute the job we were given if it's non-null.
      */
+    @Override
     public void run() {
         
         // we only run once
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/search/operations/WriteToIndexOperation.java b/app/src/main/java/org/apache/roller/weblogger/business/search/operations/WriteToIndexOperation.java
index e1dce1c..b6cef10 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/search/operations/WriteToIndexOperation.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/search/operations/WriteToIndexOperation.java
@@ -35,6 +35,7 @@
     private static Log mLogger =
             LogFactory.getFactory().getInstance(WriteToIndexOperation.class);
     
+    @Override
     public void run() {
         try {
             manager.getReadWriteLock().writeLock().lock();
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/business/PlanetURLStrategy.java b/app/src/main/java/org/apache/roller/weblogger/planet/business/PlanetURLStrategy.java
index 367516b..2645bad 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/business/PlanetURLStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/business/PlanetURLStrategy.java
@@ -32,6 +32,7 @@
      * Get URL configured for Planet.
      * @param planet There's only one planet in Roller, so this is ignored.
      */
+    @Override
     public String getPlanetURL(String planet) {
         StringBuilder url = new StringBuilder();
         url.append(WebloggerRuntimeConfig.getProperty("site.absoluteurl"));
@@ -45,6 +46,7 @@
      * @param group   Handle of planet group (or null for default group).
      * @param pageNum Page number of results to return.
      */
+    @Override
     public String getPlanetGroupURL(String planet, String group, int pageNum) {
 
         StringBuilder url = new StringBuilder();
@@ -73,6 +75,7 @@
      * @param group Handle of planet group (or null for default group).
      * @param format  Feed format to be returned (ignored, currently only RSS is supported).
      */
+    @Override
     public String getPlanetGroupFeedURL(String planet, String group, String format) {
         
         StringBuilder url = new StringBuilder();
@@ -95,6 +98,7 @@
      * @param planet There's only one planet in Roller, so this is ignored.
      * @param group Handle of planet group.
      */
+    @Override
     public String getPlanetGroupOpmlURL(String planet, String group) {
         return null;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask.java b/app/src/main/java/org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask.java
index 358e492..85f1985 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/tasks/SyncWebsitesTask.java
@@ -90,6 +90,7 @@
         this.init(RefreshRollerPlanetTask.NAME);
     }
 
+    @Override
     public void init(String name) throws WebloggerException {
         super.init(name);
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
index d110e69..d3f8ede 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
@@ -64,6 +64,7 @@
     }
     
     
+    @Override
     public List<String> requiredGlobalPermissionActions() {
         return Collections.singletonList(GlobalPermission.ADMIN);
     }
@@ -97,7 +98,8 @@
         }
     }
 
-    
+
+    @Override
     public String execute() {
         return INPUT;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
index 26586d0..7d6ed54 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
@@ -105,6 +105,7 @@
     /**
      * Populate page model and forward to subscription page
      */
+    @Override
     public String execute() {
         return LIST;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
index ee3dff9..3140b97 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
@@ -58,6 +58,7 @@
     /**
      * Show planet groups page.
      */
+    @Override
     public String execute() {
         return LIST;
     }
diff --git a/app/src/main/java/org/apache/roller/weblogger/pojos/GlobalPermission.java b/app/src/main/java/org/apache/roller/weblogger/pojos/GlobalPermission.java
index ed909a8..2c9ed1c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/pojos/GlobalPermission.java
+++ b/app/src/main/java/org/apache/roller/weblogger/pojos/GlobalPermission.java
@@ -136,6 +136,7 @@
         return action1.equals(ADMIN) || (action1.equals(WEBLOG) && action2.equals(LOGIN));
     }
     
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("GlobalPermission: ");
diff --git a/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogPermission.java b/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogPermission.java
index fa643d3..6126b54 100644
--- a/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogPermission.java
+++ b/app/src/main/java/org/apache/roller/weblogger/pojos/WeblogPermission.java
@@ -115,6 +115,7 @@
         return false;
     }
     
+    @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("GlobalPermission: ");
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
index 7d9f85f..3e2d544 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
@@ -36,6 +36,7 @@
     /**
      * Setup Spring Security features.
      */
+    @Override
     protected void initializeSecurityFeatures(ServletContext context) { 
         // no need to setup Spring Security
     }
