Enable spotbugs in mdsal-binding-spec-util 04/76904/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 11 Oct 2018 18:31:02 +0000 (20:31 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 11 Oct 2018 18:31:02 +0000 (20:31 +0200)
This fixes up the issues reported and flips enforcement to on.

Change-Id: I24d7722143253cc4c16cfac6f6d38976741ee6b2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-spec-util/pom.xml
binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java
binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/AugmentationFieldGetter.java
binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/StringValueObjectFactory.java

index e3547c1937f376e761f9421a4ea4933a88381a81..510673445bf6a4ad53fae1a4970542d7644f3d52 100644 (file)
                     <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>com.github.spotbugs</groupId>
+                <artifactId>spotbugs-maven-plugin</artifactId>
+                <configuration>
+                    <failOnError>true</failOnError>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
     <scm>
index 4d1ac4ce565eb0e6ee259d5d7ba707f50048190a..118c6d374adcae2d843562d02a8a5b2ce81e1ac8 100644 (file)
@@ -148,7 +148,7 @@ public final class BindingMapping {
         final StringBuilder builder = new StringBuilder();
         boolean first = true;
 
-        for (String p : DOT_SPLITTER.split(packageName.toLowerCase())) {
+        for (String p : DOT_SPLITTER.split(packageName.toLowerCase(Locale.ENGLISH))) {
             if (first) {
                 first = false;
             } else {
@@ -237,9 +237,9 @@ public final class BindingMapping {
             return str;
         }
         if (str.length() == 1) {
-            return str.toUpperCase();
+            return str.toUpperCase(Locale.ENGLISH);
         }
-        return str.substring(0, 1).toUpperCase() + str.substring(1);
+        return str.substring(0, 1).toUpperCase(Locale.ENGLISH) + str.substring(1);
     }
 
     /**
@@ -258,9 +258,9 @@ public final class BindingMapping {
             return str;
         }
         if (str.length() == 1) {
-            return str.toLowerCase();
+            return str.toLowerCase(Locale.ENGLISH);
         }
-        return str.substring(0, 1).toLowerCase() + str.substring(1);
+        return str.substring(0, 1).toLowerCase(Locale.ENGLISH) + str.substring(1);
     }
 
     /**
index 37e47f0a0fb876bc9d671ed48a40e691ff78bc34..33009197f109016591c15a89981c7673bcf7b3a2 100644 (file)
@@ -17,6 +17,9 @@ import java.lang.invoke.MethodHandles;
 import java.lang.invoke.MethodHandles.Lookup;
 import java.lang.invoke.MethodType;
 import java.lang.reflect.Field;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.util.Collections;
 import java.util.Map;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
@@ -70,9 +73,12 @@ abstract class AugmentationFieldGetter {
         public AugmentationFieldGetter load(final Class<?> key) throws IllegalAccessException {
             final Field field;
             try {
-                field = key.getDeclaredField(BindingMapping.AUGMENTATION_FIELD);
-                field.setAccessible(true);
-            } catch (NoSuchFieldException | SecurityException e) {
+                field = AccessController.doPrivileged((PrivilegedExceptionAction<Field>) () -> {
+                    final Field f = key.getDeclaredField(BindingMapping.AUGMENTATION_FIELD);
+                    f.setAccessible(true);
+                    return f;
+                });
+            } catch (PrivilegedActionException e) {
                 LOG.warn("Failed to acquire augmentation field {}, ignoring augmentations in class {}",
                     BindingMapping.AUGMENTATION_FIELD, key, e);
                 return DUMMY;
index 41328d5469d911cdde396c8c5caabf73b79f7e17..ac281ca986e2409dc4d6ef71446e4a78fb4ee967 100644 (file)
@@ -17,6 +17,8 @@ import java.lang.invoke.MethodType;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -75,8 +77,6 @@ public final class StringValueObjectFactory<T> {
         }
 
         final Field f = findValueField(clazz);
-        f.setAccessible(true);
-
         final StringValueObjectFactory<T> ret;
         try {
             ret = new StringValueObjectFactory<>(template,
@@ -113,17 +113,24 @@ public final class StringValueObjectFactory<T> {
     private static Field findValueField(final Class<?> orig) {
         NoSuchFieldException cause = null;
         Class<?> clazz = orig;
-        do {
+        while (clazz != null) {
+            final Field f;
             try {
-                return clazz.getDeclaredField("_value");
+                f = clazz.getDeclaredField("_value");
             } catch (NoSuchFieldException e) {
                 if (cause != null) {
                     e.addSuppressed(cause);
                 }
                 cause = e;
+                clazz = clazz.getSuperclass();
+                continue;
             }
-            clazz = clazz.getSuperclass();
-        } while (clazz != null);
+
+            return AccessController.doPrivileged((PrivilegedAction<Field>) () -> {
+                f.setAccessible(true);
+                return f;
+            });
+        }
 
         throw new IllegalArgumentException(orig + " nor its superclasses define required internal field _value", cause);
     }