<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<skip>true</skip>
+ <propertyExpansion>checkstyle.violationSeverity=warning</propertyExpansion>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <configuration>
+ <failOnError>true</failOnError>
</configuration>
</plugin>
</plugins>
import static org.opendaylight.yangtools.triemap.PresencePredicate.ABSENT;
import static org.opendaylight.yangtools.triemap.PresencePredicate.PRESENT;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
return rec_insertif(k, v, hc, cond, lev, parent, gen, ct);
}
+ @SuppressFBWarnings(value = "NP_OPTIONAL_RETURN_NULL",
+ justification = "Returning null Optional indicates the need to restart.")
private Optional<V> insertDual(final TrieMap<K, V> ct, final CNode<K, V> cn, final int pos, final SNode<K, V> sn,
final K k, final V v, final int hc, final int lev) {
final CNode<K, V> rn = (cn.gen == gen) ? cn : cn.renewed(gen, ct);
return GCAS(cn, nn, ct) ? Optional.empty() : null;
}
+ @SuppressFBWarnings(value = "NP_OPTIONAL_RETURN_NULL",
+ justification = "Returning null Optional indicates the need to restart.")
private Optional<V> rec_insertif(final K k, final V v, final int hc, final Object cond, final int lev,
final INode<K, V> parent, final Gen startgen, final TrieMap<K, V> ct) {
while (true) {
return rec_remove(k, cond, hc, lev, parent, gen, ct);
}
+ @SuppressFBWarnings(value = "NP_OPTIONAL_RETURN_NULL",
+ justification = "Returning null Optional indicates the need to restart.")
private Optional<V> rec_remove(final K k, final Object cond, final int hc, final int lev, final INode<K, V> parent,
final Gen startgen, final TrieMap<K, V> ct) {
final MainNode<K, V> m = GCAS_READ(ct); // use -Yinline!
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.annotations.Beta;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
*/
@Beta
public final class ImmutableTrieMap<K, V> extends TrieMap<K, V> {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "Handled by SerializationProxy")
private final INode<K, V> root;
ImmutableTrieMap(final INode<K, V> root, final Equivalence<? super K> equiv) {
*/
package org.opendaylight.yangtools.triemap;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Map.Entry;
/**
return EntryUtil.hash(key, value);
}
+ @SuppressFBWarnings(value = "EQ_UNUSUAL", justification = "Equality handled by utility methods")
@Override
public final boolean equals(final Object o) {
return EntryUtil.equal(o, key, value);
import com.google.common.annotations.Beta;
import com.google.common.base.Verify;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
*/
@Beta
final class MutableTrieMap<K, V> extends TrieMap<K, V> {
+ private static final long serialVersionUID = 1L;
+
@SuppressWarnings("rawtypes")
private static final AtomicReferenceFieldUpdater<MutableTrieMap, Object> ROOT_UPDATER =
AtomicReferenceFieldUpdater.newUpdater(MutableTrieMap.class, Object.class, "root");
return toNullable(removehc(k, null, computeHash(k)));
}
+ @SuppressFBWarnings(value = "NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE",
+ justification = "API contract allows null value, but we are not")
@Override
public boolean remove(final Object key, final Object value) {
@SuppressWarnings("unchecked")
*/
package org.opendaylight.yangtools.triemap;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
final class SNode<K, V> extends BasicNode implements EntryNode<K, V> {
final K k;
final V v;
return EntryUtil.hash(k, v);
}
+ @SuppressFBWarnings(value = "EQ_UNUSUAL", justification = "Equality handled by utility methods")
@Override
public boolean equals(final Object o) {
return EntryUtil.equal(o, k, v);
*/
package org.opendaylight.yangtools.triemap;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
final class TNode<K, V> extends MainNode<K, V> implements EntryNode<K, V> {
final K k;
final V v;
return EntryUtil.hash(k, v);
}
+ @SuppressFBWarnings(value = "EQ_UNUSUAL", justification = "Equality handled by utility methods")
@Override
public boolean equals(final Object o) {
return EntryUtil.equal(o, k, v);