Skip to content

Commit 3205695

Browse files
committed
Fix/ignore some bugs due to spotbugs upgrade
1 parent 8386272 commit 3205695

File tree

13 files changed

+46
-30
lines changed

13 files changed

+46
-30
lines changed

cli/src/main/java/org/seedstack/seed/cli/CliConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ public String getDefaultCommand() {
1717
return defaultCommand;
1818
}
1919

20+
public CliConfig setDefaultCommand(String defaultCommand) {
21+
this.defaultCommand = defaultCommand;
22+
return this;
23+
}
24+
2025
public boolean hasDefaultCommand() {
2126
return defaultCommand != null && !defaultCommand.isEmpty();
2227
}

core/src/main/java/org/seedstack/seed/core/internal/crypto/PBKDF2HashingService.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,24 @@
77
*/
88
package org.seedstack.seed.core.internal.crypto;
99

10+
import org.seedstack.seed.SeedException;
11+
import org.seedstack.seed.crypto.Hash;
12+
import org.seedstack.seed.crypto.HashingService;
13+
14+
import javax.crypto.SecretKeyFactory;
15+
import javax.crypto.spec.PBEKeySpec;
1016
import java.security.MessageDigest;
1117
import java.security.NoSuchAlgorithmException;
1218
import java.security.SecureRandom;
1319
import java.security.spec.InvalidKeySpecException;
14-
import javax.crypto.SecretKeyFactory;
15-
import javax.crypto.spec.PBEKeySpec;
16-
import org.seedstack.seed.SeedException;
17-
import org.seedstack.seed.crypto.Hash;
18-
import org.seedstack.seed.crypto.HashingService;
1920

2021
class PBKDF2HashingService implements HashingService {
2122
private static final String PBKDF2_ALGORITHM = "PBKDF2WithHmacSHA1";
2223

2324
private static final int SALT_BYTE_SIZE = 24;
2425
private static final int HASH_BYTE_SIZE = 24;
2526
private static final int PBKDF2_ITERATIONS = 1000;
27+
private static final SecureRandom random = new SecureRandom();
2628

2729
@Override
2830
public Hash createHash(String toHash) {
@@ -31,8 +33,6 @@ public Hash createHash(String toHash) {
3133

3234
@Override
3335
public Hash createHash(char[] toHash) {
34-
// Generate a random salt
35-
SecureRandom random = new SecureRandom();
3636
byte[] salt = new byte[SALT_BYTE_SIZE];
3737
random.nextBytes(salt);
3838

core/src/main/java/org/seedstack/seed/core/internal/diagnostic/DiagnosticPlugin.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,10 @@ public Object nativeUnitModule() {
7676

7777
@Override
7878
public void start(Context context) {
79-
for (Map.Entry<String, DiagnosticInfoCollector> entry : diagnosticInfoCollectors.entrySet()) {
80-
diagnosticManager.registerDiagnosticInfoCollector(entry.getKey(), entry.getValue());
79+
if (diagnosticInfoCollectors != null && diagnosticManager != null) {
80+
for (Map.Entry<String, DiagnosticInfoCollector> entry : diagnosticInfoCollectors.entrySet()) {
81+
diagnosticManager.registerDiagnosticInfoCollector(entry.getKey(), entry.getValue());
82+
}
8183
}
8284
}
8385
}

core/src/main/java/org/seedstack/seed/core/internal/guice/BindingUtils.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
import com.google.inject.Key;
1212
import com.google.inject.TypeLiteral;
1313
import com.google.inject.util.Types;
14+
import org.seedstack.seed.SeedException;
15+
import org.seedstack.seed.core.internal.CoreErrorCode;
16+
import org.seedstack.shed.reflect.AnnotationPredicates;
17+
import org.seedstack.shed.reflect.Annotations;
18+
19+
import javax.inject.Qualifier;
1420
import java.lang.annotation.Annotation;
1521
import java.lang.reflect.Modifier;
1622
import java.lang.reflect.Type;
@@ -21,11 +27,6 @@
2127
import java.util.List;
2228
import java.util.Map;
2329
import java.util.Optional;
24-
import javax.inject.Qualifier;
25-
import org.seedstack.seed.SeedException;
26-
import org.seedstack.seed.core.internal.CoreErrorCode;
27-
import org.seedstack.shed.reflect.AnnotationPredicates;
28-
import org.seedstack.shed.reflect.Annotations;
2930

3031
/**
3132
* Utilities for Guice bindings.
@@ -76,7 +77,7 @@ private BindingUtils() {
7677
*/
7778
@SuppressWarnings({"unchecked", "rawtypes"})
7879
public static <T> Map<Key<T>, Class<? extends T>> resolveBindingDefinitions(Class<T> injecteeClass,
79-
Class<? extends T> firstImplClass, Class<? extends T>... restImplClasses) {
80+
Class<? extends T> firstImplClass, Class<? extends T>... restImplClasses) {
8081
Map<Key<T>, Class<? extends T>> typeLiterals = new HashMap<>();
8182
List<Class<? extends T>> subClasses = new ArrayList<>();
8283

@@ -89,13 +90,7 @@ public static <T> Map<Key<T>, Class<? extends T>> resolveBindingDefinitions(Clas
8990

9091
for (Class<? extends T> subClass : subClasses) {
9192
if (isBindable(subClass)) {
92-
Type resolvedType = TypeToken.of(subClass).getSupertype((Class) injecteeClass).getType();
93-
TypeLiteral<T> parentTypeLiteral;
94-
if (resolvedType == null) {
95-
parentTypeLiteral = TypeLiteral.get(injecteeClass);
96-
} else {
97-
parentTypeLiteral = (TypeLiteral<T>) TypeLiteral.get(resolvedType);
98-
}
93+
TypeLiteral<T> parentTypeLiteral = (TypeLiteral<T>) TypeLiteral.get(TypeToken.of(subClass).getSupertype(injecteeClass).getType());
9994

10095
Optional<Annotation> qualifier = Annotations.on(subClass)
10196
.traversingSuperclasses()
@@ -127,7 +122,7 @@ public static <T> Map<Key<T>, Class<? extends T>> resolveBindingDefinitions(Clas
127122
*/
128123
@SuppressWarnings("unchecked")
129124
public static <T> Map<Key<T>, Class<? extends T>> resolveBindingDefinitions(Class<T> injecteeClass,
130-
Collection<Class<? extends T>> implClasses) {
125+
Collection<Class<? extends T>> implClasses) {
131126
if (implClasses != null && !implClasses.isEmpty()) {
132127
return resolveBindingDefinitions(injecteeClass, null, implClasses.toArray(new Class[implClasses.size()]));
133128
}
@@ -157,7 +152,7 @@ public static boolean isBindable(Class<?> subClass) {
157152
*/
158153
@SuppressWarnings("unchecked")
159154
public static <T> Key<T> resolveKey(Class<T> injecteeClass, Class<? extends T> genericImplClass,
160-
Type... typeVariableClasses) {
155+
Type... typeVariableClasses) {
161156
Optional<Annotation> qualifier = Annotations.on(genericImplClass)
162157
.findAll()
163158
.filter(AnnotationPredicates.annotationAnnotatedWith(Qualifier.class, false))

pom.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@
4141
<tomcat.version>7.0.86</tomcat.version>
4242

4343
<compatibility.version>3.1.0</compatibility.version>
44-
45-
<!-- TODO remove the limitation to TLSv1.2 below once built on JDK 12 -->
46-
<itArgLine>-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"</itArgLine>
4744
</properties>
4845

4946
<modules>

rest/core/src/main/java/org/seedstack/seed/rest/internal/RestPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
1313
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
1414
import com.google.inject.AbstractModule;
15+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1516
import io.nuun.kernel.api.plugin.InitState;
1617
import io.nuun.kernel.api.plugin.context.InitContext;
1718
import io.nuun.kernel.api.plugin.request.ClasspathScanRequest;
@@ -47,6 +48,7 @@
4748
import java.util.Set;
4849
import java.util.function.Predicate;
4950

51+
@SuppressFBWarnings(value = "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", justification = "Fields init are following plugin lifecycle")
5052
public class RestPlugin extends AbstractSeedPlugin implements RestProvider {
5153
private static final Logger LOGGER = LoggerFactory.getLogger(RestPlugin.class);
5254
private final Map<Variant, Class<? extends RootResource>> rootResourcesByVariant = new HashMap<>();

security/core/src/main/java/org/seedstack/seed/security/internal/ShiroRealmAdapter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*/
88
package org.seedstack.seed.security.internal;
99

10+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1011
import org.apache.shiro.authc.AuthenticationException;
1112
import org.apache.shiro.authc.AuthenticationInfo;
1213
import org.apache.shiro.authc.AuthenticationToken;
@@ -34,6 +35,7 @@
3435
import java.util.List;
3536
import java.util.Set;
3637

38+
@SuppressFBWarnings(value = "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", justification = "Field cannot be set in constructor due to injection")
3739
class ShiroRealmAdapter extends AuthorizingRealm {
3840
private static final Logger LOGGER = LoggerFactory.getLogger(ShiroRealmAdapter.class);
3941
private Realm realm;
@@ -45,8 +47,8 @@ public AuthorizationInfo getAuthorizationInfo(PrincipalCollection principals) {
4547
return super.getAuthorizationInfo(principals);
4648
}
4749

48-
@SuppressWarnings("unchecked")
4950
@Override
51+
@SuppressWarnings("unchecked")
5052
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
5153
SeedAuthorizationInfo authzInfo = new SeedAuthorizationInfo();
5254
PrincipalProvider<?> idPrincipal = (PrincipalProvider<?>) principals.getPrimaryPrincipal();

web/core/src/main/java/org/seedstack/seed/web/internal/WebPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
/**
3939
* This plugin provides support for servlet-based Web applications.
4040
*/
41+
@SuppressFBWarnings(value = "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", justification = "Fields init are following plugin lifecycle")
4142
public class WebPlugin extends AbstractSeedPlugin {
4243
private static final Logger LOGGER = LoggerFactory.getLogger(WebPlugin.class);
4344
private static final String WEB_INF_LIB = "/WEB-INF/lib";

web/core/src/main/java/org/seedstack/seed/web/internal/diagnostic/WebDiagnosticPlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.seedstack.seed.web.internal.diagnostic;
99

1010
import com.google.common.collect.Lists;
11+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1112
import io.nuun.kernel.api.plugin.InitState;
1213
import io.nuun.kernel.api.plugin.context.InitContext;
1314
import java.util.List;
@@ -24,6 +25,7 @@
2425
import org.slf4j.Logger;
2526
import org.slf4j.LoggerFactory;
2627

28+
@SuppressFBWarnings(value = "UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", justification = "Fields init are following plugin lifecycle")
2729
public class WebDiagnosticPlugin extends AbstractSeedPlugin implements WebProvider {
2830
private static final Logger LOGGER = LoggerFactory.getLogger(WebDiagnosticPlugin.class);
2931
private DiagnosticManager diagnosticManager;

web/core/src/main/java/org/seedstack/seed/web/internal/scan/tomcat/JndiJarInputDir.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ protected Vfs.File computeNext() {
7575
@Override
7676
public void close() {
7777
try {
78-
jarInputStream.close();
78+
if (jarInputStream != null) {
79+
jarInputStream.close();
80+
}
7981
} catch (IOException e) {
8082
LOGGER.warn("Unable to close JAR at {}", url.toExternalForm(), e);
8183
}

web/core/src/main/java/org/seedstack/seed/web/internal/scan/websphere/WsInputDir.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ protected Vfs.File computeNext() {
8686
@Override
8787
public void close() {
8888
try {
89-
jarInputStream.close();
89+
if (jarInputStream != null) {
90+
jarInputStream.close();
91+
}
9092
} catch (IOException e) {
9193
LOGGER.warn("Unable to close WAR at {}", url.toExternalForm(), e);
9294
}

web/core/src/main/java/org/seedstack/seed/web/websocket/BaseClientEndpointConfigurator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
package org.seedstack.seed.web.websocket;
99

1010
import com.google.inject.Injector;
11+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
12+
1113
import javax.inject.Inject;
1214
import javax.websocket.ClientEndpointConfig;
1315

@@ -21,6 +23,7 @@ public class BaseClientEndpointConfigurator extends ClientEndpointConfig.Configu
2123
/**
2224
* Creates the endpoint configurator.
2325
*/
26+
@SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "False positive")
2427
public BaseClientEndpointConfigurator() {
2528
super();
2629
injector.injectMembers(this);

web/core/src/main/java/org/seedstack/seed/web/websocket/BaseServerEndpointConfigurator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
package org.seedstack.seed.web.websocket;
99

1010
import com.google.inject.Injector;
11+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
12+
1113
import javax.inject.Inject;
1214
import javax.websocket.server.ServerEndpointConfig;
1315

@@ -22,6 +24,7 @@ public class BaseServerEndpointConfigurator extends ServerEndpointConfig.Configu
2224
/**
2325
* Creates the endpoint configurator.
2426
*/
27+
@SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "False positive")
2528
public BaseServerEndpointConfigurator() {
2629
super();
2730
injector.injectMembers(this);

0 commit comments

Comments
 (0)