diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/constants/SchemaConstants.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/constants/SchemaConstants.java
index 578f507..2011cfb 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/constants/SchemaConstants.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/constants/SchemaConstants.java
@@ -28,7 +28,6 @@
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  */
-@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
 public final class SchemaConstants
 {
     /**
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java
index 3ccf6cd..1ac0014 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/entry/DefaultEntryAttribute.java
@@ -2456,8 +2456,6 @@
     /**
      * {@inheritDoc}
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public void deserialize( ObjectInput in ) throws IOException, ClassNotFoundException
     {
         // Read the ID and the UPId
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/exception/LdapSchemaException.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/exception/LdapSchemaException.java
index 913c2a9..7b7ec39 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/exception/LdapSchemaException.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/exception/LdapSchemaException.java
@@ -21,7 +21,6 @@
 
 
 import org.apache.directory.shared.ldap.model.schema.SchemaManager;
-import org.apache.directory.shared.ldap.model.schema.MutableSchemaObject;
 import org.apache.directory.shared.ldap.model.schema.SchemaObject;
 
 
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/LdapURL.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/LdapURL.java
index 7d2611e..ace46e0 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/LdapURL.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/filter/LdapURL.java
@@ -362,8 +362,6 @@
      *         apply to the byte buffer TODO check that the topLabel is valid
      *         (it must start with an alpha)
      */
-    @SuppressWarnings("PMD.CollapsibleIfStatements")
-    // Used because of comments
     private int parseHost( char[] chars, int pos )
     {
 
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java
index 4abd979..0b94657 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifAttributesReader.java
@@ -437,8 +437,6 @@
      * @return A list of Attributes, or an empty List
      * @throws LdapLdifException If something went wrong
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public Attributes parseAttributes( String ldif ) throws LdapLdifException
     {
         lines = new ArrayList<String>();
@@ -500,8 +498,6 @@
      * @return An entry
      * @throws LdapLdifException If something went wrong
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public Entry parseEntry( String ldif ) throws LdapLdifException
     {
         lines = new ArrayList<String>();
@@ -565,8 +561,6 @@
      * @return An entry
      * @throws LdapLdifException If something went wrong
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public Entry parseEntry( SchemaManager schemaManager, String ldif ) throws LdapLdifException
     {
         lines = new ArrayList<String>();
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java
index 4d2d001..415b4ac 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/ldif/LdifReader.java
@@ -1575,8 +1575,6 @@
      * @return A list of entries
      * @throws LdapLdifException If the parsing fails
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public List<LdifEntry> parseLdifFile( String fileName, String encoding ) throws LdapLdifException
     {
         if ( Strings.isEmpty(fileName) )
@@ -1637,8 +1635,6 @@
      * @return A list of entries, or an empty List
      * @throws LdapLdifException If something went wrong
      */
-    // This will suppress PMD.EmptyCatchBlock warnings in this method
-    @SuppressWarnings("PMD.EmptyCatchBlock")
     public List<LdifEntry> parseLdif( String ldif ) throws LdapLdifException
     {
         LOG.debug( "Starts parsing ldif buffer" );
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java
index d477d45..3257c3a 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/name/Ava.java
@@ -683,7 +683,6 @@
                 {
                     Object o1 = normValue.get();
                     Object o2 = instance.normValue.get();
-                    @SuppressWarnings("unchecked")
                     LdapComparator<Object> comparator = ( LdapComparator<Object> ) equalityMatchingRule.getLdapComparator();
                     return comparator.compare( o1, o2 ) == 0;
                 }
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableLdapSyntaxRegistry.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableLdapSyntaxRegistry.java
index 5ea1dec..cd96480 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableLdapSyntaxRegistry.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableLdapSyntaxRegistry.java
@@ -47,6 +47,7 @@
      *
      * @param ldapSyntaxRegistry The wrapped LdapSyntax registry
      */
+    @SuppressWarnings({ "rawtypes", "unchecked" })
     public ImmutableLdapSyntaxRegistry( LdapSyntaxRegistry ldapSyntaxRegistry )
     {
         immutableLdapSyntaxRegistry = ldapSyntaxRegistry;
diff --git a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableNormalizerRegistry.java b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableNormalizerRegistry.java
index aab8026..6348887 100644
--- a/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableNormalizerRegistry.java
+++ b/ldap/model/src/main/java/org/apache/directory/shared/ldap/model/schema/registries/ImmutableNormalizerRegistry.java
@@ -46,6 +46,7 @@
      * 
      * @param normalizerRegistry The wrapped Normalizer registry 
      */
+    @SuppressWarnings({ "rawtypes", "unchecked" })
     public ImmutableNormalizerRegistry( NormalizerRegistry normalizerRegistry )
     {
         immutableNormalizerRegistry = normalizerRegistry;
