diff --git a/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/AbstractChangeOperationContext.java b/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/AbstractChangeOperationContext.java
index 24e4559..3e3dcff 100644
--- a/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/AbstractChangeOperationContext.java
+++ b/core-api/src/main/java/org/apache/directory/server/core/interceptor/context/AbstractChangeOperationContext.java
@@ -21,8 +21,8 @@
 
 
 import org.apache.directory.server.core.CoreSession;
-import org.apache.directory.server.core.changelog.LogChange;
 import org.apache.directory.server.core.changelog.ChangeLogEvent;
+import org.apache.directory.server.core.changelog.LogChange;
 import org.apache.directory.shared.ldap.name.LdapDN;
 
 
@@ -81,6 +81,6 @@
      */
     public boolean isLogChange()
     {
-        return logChange != logChange.FALSE;
+        return logChange != LogChange.FALSE;
     }
 }
diff --git a/core-api/src/main/java/org/apache/directory/server/core/schema/SchemaPartitionDaoImpl.java b/core-api/src/main/java/org/apache/directory/server/core/schema/SchemaPartitionDaoImpl.java
index 7c255b4..85d418e 100644
--- a/core-api/src/main/java/org/apache/directory/server/core/schema/SchemaPartitionDaoImpl.java
+++ b/core-api/src/main/java/org/apache/directory/server/core/schema/SchemaPartitionDaoImpl.java
@@ -650,7 +650,7 @@
 
         List<String> names = mr.getNames();
         
-        if ( ( names != null ) || ( names.size() > 0 ) )
+        if ( ( names != null ) && ( names.size() > 0 ) )
         {
             for ( String name : names )
             {
diff --git a/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java b/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java
index 001116b..afa0eba 100644
--- a/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java
+++ b/core/src/main/java/org/apache/directory/server/core/configuration/AttributesPropertyEditor.java
@@ -19,6 +19,15 @@
  */
 package org.apache.directory.server.core.configuration;
 
+import java.beans.PropertyEditor;
+import java.beans.PropertyEditorSupport;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+
+import javax.naming.NamingException;
+import javax.naming.directory.Attributes;
+
 import org.apache.directory.server.core.DirectoryService;
 import org.apache.directory.shared.ldap.entry.Entry;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
@@ -28,14 +37,6 @@
 import org.apache.directory.shared.ldap.util.AttributeUtils;
 import org.apache.directory.shared.ldap.util.StringTools;
 
-import javax.naming.NamingException;
-import javax.naming.directory.Attributes;
-import java.beans.PropertyEditor;
-import java.beans.PropertyEditorSupport;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-
 
 /**
  * A JavaBeans {@link PropertyEditor} that can convert {@link Attributes} to
@@ -68,7 +69,6 @@
     /**
      * Returns LDIF string of {@link Attributes} object.
      */
-    @SuppressWarnings("deprecation")
     public String getAsText()
     {
         Attributes attrs = (Attributes) getValue();
diff --git a/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java b/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java
index 99ab29d..6d8e778 100644
--- a/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java
+++ b/core/src/main/java/org/apache/directory/server/core/subtree/RefinementLeafEvaluator.java
@@ -20,18 +20,16 @@
 package org.apache.directory.server.core.subtree;
 
 
+import java.util.Iterator;
+
+import javax.naming.NamingException;
+
 import org.apache.directory.server.core.entry.ServerAttribute;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.entry.EntryAttribute;
-import org.apache.directory.shared.ldap.entry.client.ClientBinaryValue;
-import org.apache.directory.shared.ldap.entry.client.ClientStringValue;
 import org.apache.directory.shared.ldap.filter.EqualityNode;
 import org.apache.directory.shared.ldap.filter.SimpleNode;
 import org.apache.directory.shared.ldap.schema.registries.OidRegistry;
-import org.apache.directory.shared.ldap.util.StringTools;
-
-import javax.naming.NamingException;
-import java.util.Iterator;
 
 
 /**
diff --git a/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/components/Ticket.java b/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/components/Ticket.java
index 0261a59..0566f3e 100644
--- a/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/components/Ticket.java
+++ b/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/components/Ticket.java
@@ -29,14 +29,8 @@
 import org.apache.directory.server.kerberos.shared.KerberosConstants;
 import org.apache.directory.server.kerberos.shared.KerberosUtils;
 import org.apache.directory.server.kerberos.shared.exceptions.ErrorType;
-import org.apache.directory.server.kerberos.shared.messages.value.AuthorizationData;
 import org.apache.directory.server.kerberos.shared.messages.value.EncryptedData;
-import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
-import org.apache.directory.server.kerberos.shared.messages.value.HostAddresses;
-import org.apache.directory.server.kerberos.shared.messages.value.KerberosTime;
 import org.apache.directory.server.kerberos.shared.messages.value.PrincipalName;
-import org.apache.directory.server.kerberos.shared.messages.value.TransitedEncoding;
-import org.apache.directory.server.kerberos.shared.messages.value.flags.TicketFlags;
 import org.apache.directory.shared.asn1.AbstractAsn1Object;
 import org.apache.directory.shared.asn1.ber.tlv.TLV;
 import org.apache.directory.shared.asn1.ber.tlv.UniversalTag;
diff --git a/ldap-api-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java b/ldap-api-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java
index f9209b7..51c80dd 100644
--- a/ldap-api-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java
+++ b/ldap-api-test/src/test/java/org/apache/directory/shared/client/api/operations/ClientAddRequestTest.java
@@ -32,7 +32,6 @@
 import org.apache.directory.server.core.CoreSession;
 import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
 import org.apache.directory.server.core.integ.FrameworkRunner;
-import org.apache.directory.server.ldap.LdapServer;
 import org.apache.directory.shared.ldap.client.api.LdapConnection;
 import org.apache.directory.shared.ldap.client.api.exception.LdapException;
 import org.apache.directory.shared.ldap.client.api.listeners.AddListener;
diff --git a/server-tools/src/main/java/org/apache/directory/server/tools/IndexCommand.java b/server-tools/src/main/java/org/apache/directory/server/tools/IndexCommand.java
index b65774a..7e6d780 100644
--- a/server-tools/src/main/java/org/apache/directory/server/tools/IndexCommand.java
+++ b/server-tools/src/main/java/org/apache/directory/server/tools/IndexCommand.java
@@ -62,7 +62,6 @@
     }
 
 
-    @SuppressWarnings("unchecked")
     private SchemaManager loadSchemaManager() throws Exception
     {
         // --------------------------------------------------------------------
@@ -89,7 +88,7 @@
         
         for ( int ii = 0; ii < partitions.length; ii++ )
         {
-            File partitionDirectory = partitionDirectory = new File( getInstanceLayout().getPartitionsDir(), partitions[ii] );
+            File partitionDirectory = new File( getInstanceLayout().getPartitionsDir(), partitions[ii] );
             File indexDir = null;
             
             if( indexDirPath != null )
diff --git a/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java b/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java
index 05d7b3a..a34c97c 100644
--- a/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java
+++ b/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/LessEqCursor.java
@@ -135,7 +135,6 @@
     }
 
 
-    @SuppressWarnings("unchecked")
     public void before( IndexEntry<V, ServerEntry> element ) throws Exception
     {
         checkNotClosed( "before()" );
@@ -180,7 +179,6 @@
     }
 
 
-    @SuppressWarnings("unchecked")
     public void afterValue( Long id, V value ) throws Exception
     {
         checkNotClosed( "afterValue()" );
@@ -217,7 +215,6 @@
     }
 
 
-    @SuppressWarnings("unchecked")
     public void after( IndexEntry<V, ServerEntry> element ) throws Exception
     {
         checkNotClosed( "after()" );
@@ -337,7 +334,6 @@
     }
 
 
-    @SuppressWarnings("unchecked")
     public boolean next() throws Exception
     {
         checkNotClosed( "next()" );
diff --git a/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java b/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java
index 21b37af..f7d14a9 100644
--- a/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java
+++ b/xdbm-search/src/main/java/org/apache/directory/server/xdbm/search/impl/SubstringEvaluator.java
@@ -199,7 +199,6 @@
     }
 
 
-    @SuppressWarnings( { "UnusedDeclaration" } )
     private boolean evaluateWithIndex( ServerEntry entry ) throws Exception
     {
         throw new UnsupportedOperationException( "This is too inefficient without getId() on ServerEntry" );
diff --git a/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/OrCursorTest.java b/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/OrCursorTest.java
index d85d654..78251b4 100644
--- a/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/OrCursorTest.java
+++ b/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/OrCursorTest.java
@@ -162,7 +162,6 @@
 
     
     @Test
-    @SuppressWarnings( "unchecked" )
     public void testOrCursorUsingCursorBuilder() throws Exception
     {
         String filter = "(|(cn=J*)(sn=W*))";
