Skip to content

Commit 48c274e

Browse files
authored
Include findbugs plugin, add nullable annotation to DAO functions (#797)
1 parent a38d6e0 commit 48c274e

File tree

10 files changed

+93
-65
lines changed

10 files changed

+93
-65
lines changed

gradle/scripts/dependency.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ ext.externalDependency = [
5050
"lombok" : "org.projectlombok:lombok:1.16.18",
5151

5252
"guava" : "com.google.guava:guava:15.0",
53+
"jsr305" : "com.google.code.findbugs:jsr305:3.0.2"
5354
]

wherehows-dao/build.gradle

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
apply plugin: 'java'
2+
apply plugin: 'findbugs'
23

34
dependencies {
4-
compile project(':wherehows-data-model')
5-
compile externalDependency.commons_lang3
6-
compile externalDependency.slf4j_api
7-
compile externalDependency.spring_jdbc
8-
compile externalDependency.jackson_databind
9-
compile externalDependency.jackson_core
10-
compile externalDependency.jackson_annotations
11-
compile externalDependency.lombok
12-
compile externalDependency.hibernate_core
13-
compile externalDependency.hibernate_hikaricp
5+
compile project(':wherehows-data-model')
6+
compile externalDependency.commons_lang3
7+
compile externalDependency.slf4j_api
8+
compile externalDependency.spring_jdbc
9+
compile externalDependency.jackson_databind
10+
compile externalDependency.jackson_core
11+
compile externalDependency.jackson_annotations
12+
compile externalDependency.lombok
13+
compile externalDependency.jsr305
14+
compile externalDependency.hibernate_core
15+
compile externalDependency.hibernate_hikaricp
1416

15-
testCompile externalDependency.testng
17+
testCompile externalDependency.testng
18+
}
19+
20+
findbugs {
21+
ignoreFailures = true
22+
}
23+
24+
tasks.withType(FindBugs) {
25+
reports {
26+
xml.enabled false
27+
html.enabled true
28+
}
1629
}
1730

1831
test {
19-
// enable TestNG support (default is JUnit)
20-
useTestNG()
32+
// enable TestNG support (default is JUnit)
33+
useTestNG()
2134
}

wherehows-dao/src/main/java/wherehows/dao/table/BaseDao.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.ArrayList;
1717
import java.util.List;
1818
import java.util.Map;
19+
import javax.annotation.Nonnull;
1920
import javax.persistence.EntityManager;
2021
import javax.persistence.EntityManagerFactory;
2122
import javax.persistence.Query;
@@ -30,7 +31,7 @@ public class BaseDao {
3031

3132
protected final EntityManagerFactory entityManagerFactory;
3233

33-
public BaseDao(EntityManagerFactory factory) {
34+
public BaseDao(@Nonnull EntityManagerFactory factory) {
3435
this.entityManagerFactory = factory;
3536
}
3637

@@ -43,7 +44,7 @@ public BaseDao(EntityManagerFactory factory) {
4344
*/
4445
@SneakyThrows
4546
@SuppressWarnings("unchecked")
46-
public <T> T find(Class<T> entityClass, Object primaryKey) {
47+
public <T> T find(@Nonnull Class<T> entityClass, @Nonnull Object primaryKey) {
4748
EntityManager entityManager = entityManagerFactory.createEntityManager();
4849
try {
4950
return (T) entityManager.find(entityClass, primaryKey);
@@ -62,7 +63,7 @@ public <T> T find(Class<T> entityClass, Object primaryKey) {
6263
*/
6364
@SneakyThrows
6465
@SuppressWarnings("unchecked")
65-
public <T> T findBy(Class<T> entityClass, String criteriaKey, Object criteriaValue) {
66+
public <T> T findBy(@Nonnull Class<T> entityClass, @Nonnull String criteriaKey, @Nonnull Object criteriaValue) {
6667
EntityManager entityManager = entityManagerFactory.createEntityManager();
6768
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
6869
CriteriaQuery<T> criteria = cb.createQuery(entityClass);
@@ -86,7 +87,8 @@ public <T> T findBy(Class<T> entityClass, String criteriaKey, Object criteriaVal
8687
*/
8788
@SneakyThrows
8889
@SuppressWarnings("unchecked")
89-
public <T> List<T> findListBy(Class<T> entityClass, String criteriaKey, Object criteriaValue) {
90+
public <T> List<T> findListBy(@Nonnull Class<T> entityClass, @Nonnull String criteriaKey,
91+
@Nonnull Object criteriaValue) {
9092
EntityManager entityManager = entityManagerFactory.createEntityManager();
9193
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
9294
CriteriaQuery<T> criteria = cb.createQuery(entityClass);
@@ -109,7 +111,7 @@ public <T> List<T> findListBy(Class<T> entityClass, String criteriaKey, Object c
109111
*/
110112
@SneakyThrows
111113
@SuppressWarnings("unchecked")
112-
public <T> List<T> findListBy(Class<T> entityClass, Map<String, ? extends Object> params) {
114+
public <T> List<T> findListBy(@Nonnull Class<T> entityClass, @Nonnull Map<String, ? extends Object> params) {
113115
EntityManager entityManager = entityManagerFactory.createEntityManager();
114116
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
115117
CriteriaQuery<T> criteria = cb.createQuery(entityClass);
@@ -136,7 +138,7 @@ public <T> List<T> findListBy(Class<T> entityClass, Map<String, ? extends Object
136138
* @return the persisted / managed record
137139
*/
138140
@SneakyThrows
139-
public Object update(Object record) {
141+
public Object update(@Nonnull Object record) {
140142
EntityManager entityManager = entityManagerFactory.createEntityManager();
141143
entityManager.getTransaction().begin();
142144
try {
@@ -153,7 +155,7 @@ record = entityManager.merge(record);
153155
* @param records a list of entity objects
154156
*/
155157
@SneakyThrows
156-
public void updateList(List<? extends Object> records) {
158+
public void updateList(@Nonnull List<? extends Object> records) {
157159
EntityManager entityManager = entityManagerFactory.createEntityManager();
158160
entityManager.getTransaction().begin();
159161
try {
@@ -172,7 +174,7 @@ public void updateList(List<? extends Object> records) {
172174
* @param record an entity object
173175
*/
174176
@SneakyThrows
175-
public void remove(Object record) {
177+
public void remove(@Nonnull Object record) {
176178
EntityManager entityManager = entityManagerFactory.createEntityManager();
177179
entityManager.getTransaction().begin();
178180
try {
@@ -188,7 +190,7 @@ public void remove(Object record) {
188190
* @param records a list of entity object
189191
*/
190192
@SneakyThrows
191-
public void removeList(List<? extends Object> records) {
193+
public void removeList(@Nonnull List<? extends Object> records) {
192194
EntityManager entityManager = entityManagerFactory.createEntityManager();
193195
entityManager.getTransaction().begin();
194196
try {
@@ -208,7 +210,7 @@ public void removeList(List<? extends Object> records) {
208210
* @param params Parameters
209211
*/
210212
@SneakyThrows
211-
public void executeUpdate(String queryStr, Map<String, Object> params) {
213+
public void executeUpdate(@Nonnull String queryStr, @Nonnull Map<String, Object> params) {
212214
EntityManager entityManager = entityManagerFactory.createEntityManager();
213215
try {
214216
Query query = entityManager.createQuery(queryStr);

wherehows-dao/src/main/java/wherehows/dao/table/DatasetComplianceDao.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.linkedin.events.metadata.CompliancePolicy;
1818
import com.linkedin.events.metadata.DatasetIdentifier;
1919
import com.linkedin.events.metadata.SuggestedCompliancePolicy;
20+
import javax.annotation.Nonnull;
2021
import javax.persistence.EntityManagerFactory;
2122
import lombok.extern.slf4j.Slf4j;
2223
import wherehows.models.table.DsCompliance;
@@ -28,11 +29,11 @@
2829
@Slf4j
2930
public class DatasetComplianceDao extends BaseDao {
3031

31-
public DatasetComplianceDao(EntityManagerFactory factory) {
32+
public DatasetComplianceDao(@Nonnull EntityManagerFactory factory) {
3233
super(factory);
3334
}
3435

35-
public DsCompliance findComplianceByUrn(String datasetUrn) {
36+
public DsCompliance findComplianceByUrn(@Nonnull String datasetUrn) {
3637
return findBy(DsCompliance.class, "datasetUrn", datasetUrn);
3738
}
3839

@@ -48,8 +49,8 @@ public DsCompliance findComplianceById(int datasetId) {
4849
* @param compliance MCE CompliancePolicy
4950
* @throws Exception
5051
*/
51-
public void insertUpdateCompliance(DatasetIdentifier identifier, int datasetId, ChangeAuditStamp auditStamp,
52-
CompliancePolicy compliance) throws Exception {
52+
public void insertUpdateCompliance(@Nonnull DatasetIdentifier identifier, int datasetId, @Nonnull ChangeAuditStamp auditStamp,
53+
@Nonnull CompliancePolicy compliance) throws Exception {
5354

5455
String datasetUrn = toWhDatasetUrn(identifier);
5556

@@ -80,8 +81,8 @@ public void insertUpdateCompliance(DatasetIdentifier identifier, int datasetId,
8081
* @param datasetUrn String
8182
* @param actor String
8283
*/
83-
public void fillDsComplianceByCompliancePolicy(DsCompliance dsCompliance, CompliancePolicy compliance,
84-
String datasetUrn, String actor) {
84+
public void fillDsComplianceByCompliancePolicy(@Nonnull DsCompliance dsCompliance, @Nonnull CompliancePolicy compliance,
85+
@Nonnull String datasetUrn, @Nonnull String actor) {
8586

8687
dsCompliance.setDatasetUrn(datasetUrn);
8788
dsCompliance.setCompliancePurgeType(compliance.compliancePurgeType.name());
@@ -94,7 +95,7 @@ public void fillDsComplianceByCompliancePolicy(DsCompliance dsCompliance, Compli
9495
dsCompliance.setModifiedBy(actor);
9596
}
9697

97-
public DsComplianceSuggestion findComplianceSuggestionByUrn(String datasetUrn) {
98+
public DsComplianceSuggestion findComplianceSuggestionByUrn(@Nonnull String datasetUrn) {
9899
return null;
99100
}
100101

@@ -106,8 +107,8 @@ public DsComplianceSuggestion findComplianceSuggestionByUrn(String datasetUrn) {
106107
* @param suggestion MCE SuggestedCompliancePolicy
107108
* @throws Exception
108109
*/
109-
public void insertUpdateSuggestedCompliance(DatasetIdentifier identifier, int datasetId, ChangeAuditStamp auditStamp,
110-
SuggestedCompliancePolicy suggestion) throws Exception {
110+
public void insertUpdateSuggestedCompliance(@Nonnull DatasetIdentifier identifier, int datasetId, @Nonnull ChangeAuditStamp auditStamp,
111+
@Nonnull SuggestedCompliancePolicy suggestion) throws Exception {
111112
// TODO: write suggested compliance information to DB
112113
}
113114
}

wherehows-dao/src/main/java/wherehows/dao/table/DatasetOwnerDao.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.HashMap;
2323
import java.util.List;
2424
import java.util.Map;
25+
import javax.annotation.Nonnull;
2526
import javax.persistence.EntityManagerFactory;
2627
import lombok.extern.slf4j.Slf4j;
2728
import wherehows.models.table.DsOwner;
@@ -32,19 +33,19 @@
3233
@Slf4j
3334
public class DatasetOwnerDao extends BaseDao {
3435

35-
public DatasetOwnerDao(EntityManagerFactory factory) {
36+
public DatasetOwnerDao(@Nonnull EntityManagerFactory factory) {
3637
super(factory);
3738
}
3839

39-
public List<DsOwner> findByUrn(String datasetUrn) {
40+
public List<DsOwner> findByUrn(@Nonnull String datasetUrn) {
4041
return findListBy(DsOwner.class, "datasetUrn", datasetUrn);
4142
}
4243

4344
public List<DsOwner> findById(int datasetId) {
4445
return findListBy(DsOwner.class, "datasetId", datasetId);
4546
}
4647

47-
public List<DsOwner> findByIdAndSource(int datasetId, String source) {
48+
public List<DsOwner> findByIdAndSource(int datasetId, @Nonnull String source) {
4849
Map<String, Object> params = new HashMap<>();
4950
params.put("datasetId", datasetId);
5051
params.put("ownerSource", source);
@@ -59,8 +60,8 @@ public List<DsOwner> findByIdAndSource(int datasetId, String source) {
5960
* @param auditStamp ChangeAuditStamp
6061
* @param owners List<OwnerInfo>
6162
*/
62-
public void insertUpdateOwnership(DatasetIdentifier identifier, int datasetId, ChangeAuditStamp auditStamp,
63-
List<OwnerInfo> owners) throws Exception {
63+
public void insertUpdateOwnership(DatasetIdentifier identifier, int datasetId, @Nonnull ChangeAuditStamp auditStamp,
64+
@Nonnull List<OwnerInfo> owners) throws Exception {
6465

6566
String datasetUrn = toWhDatasetUrn(identifier);
6667

@@ -89,11 +90,11 @@ public void insertUpdateOwnership(DatasetIdentifier identifier, int datasetId, C
8990
* @param dsOwner DsOwner
9091
* @param sourceTime int
9192
*/
92-
public void fillDsOwnerByOwnerInfo(OwnerInfo owner, DsOwner dsOwner, int sourceTime) {
93+
public void fillDsOwnerByOwnerInfo(@Nonnull OwnerInfo owner, @Nonnull DsOwner dsOwner, int sourceTime) {
9394
dsOwner.setOwnerId(owner.owner.toString());
9495
dsOwner.setOwnerIdType(owner.ownerType.name());
9596
dsOwner.setOwnerType(owner.ownerCategory.name());
96-
dsOwner.setOwnerSource(owner.ownershipProvider.name());
97+
dsOwner.setOwnerSource(owner.ownershipProvider == null ? "" : owner.ownershipProvider.name());
9798

9899
if (owner.ownerType == OwnerType.USER) {
99100
dsOwner.setAppId(300);
@@ -123,8 +124,8 @@ public void fillDsOwnerByOwnerInfo(OwnerInfo owner, DsOwner dsOwner, int sourceT
123124
* @param sourceTime int epoch second
124125
* @return [ updated list , removed list of owners]
125126
*/
126-
public List<List<DsOwner>> diffOwnerList(List<DsOwner> originalList, List<OwnerInfo> owners, int datasetId,
127-
String datasetUrn, int sourceTime) {
127+
public List<List<DsOwner>> diffOwnerList(@Nonnull List<DsOwner> originalList, @Nonnull List<OwnerInfo> owners,
128+
int datasetId, String datasetUrn, int sourceTime) {
128129

129130
List<DsOwner> updatedOwners = new ArrayList<>();
130131

wherehows-dao/src/main/java/wherehows/dao/table/DatasetsDao.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,15 @@
2222
import java.util.HashMap;
2323
import java.util.List;
2424
import java.util.Map;
25+
import lombok.extern.slf4j.Slf4j;
2526
import org.apache.commons.lang3.StringUtils;
26-
import org.slf4j.Logger;
27-
import org.slf4j.LoggerFactory;
2827
import org.springframework.dao.EmptyResultDataAccessException;
2928
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
3029
import org.springframework.jdbc.core.JdbcTemplate;
3130
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
3231
import wherehows.models.table.DatasetCompliance;
3332
import wherehows.models.table.DatasetFieldEntity;
3433
import wherehows.models.view.DatasetOwner;
35-
import lombok.extern.slf4j.Slf4j;
3634

3735
import static wherehows.util.JsonUtil.*;
3836

wherehows-dao/src/main/java/wherehows/dao/table/DictDatasetDao.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import java.util.HashMap;
2727
import java.util.List;
2828
import java.util.Map;
29+
import javax.annotation.Nonnull;
30+
import javax.annotation.Nullable;
2931
import javax.persistence.EntityManagerFactory;
3032
import lombok.extern.slf4j.Slf4j;
3133
import wherehows.models.table.DictDataset;
@@ -36,11 +38,11 @@
3638
@Slf4j
3739
public class DictDatasetDao extends BaseDao {
3840

39-
public DictDatasetDao(EntityManagerFactory factory) {
41+
public DictDatasetDao(@Nonnull EntityManagerFactory factory) {
4042
super(factory);
4143
}
4244

43-
public DictDataset findByUrn(String urn) {
45+
public DictDataset findByUrn(@Nonnull String urn) {
4446
return findBy(DictDataset.class, "urn", urn);
4547
}
4648

@@ -60,9 +62,10 @@ public DictDataset findById(int datasetId) {
6062
* @return dataset id
6163
* @throws Exception
6264
*/
63-
public DictDataset insertUpdateDataset(DatasetIdentifier identifier, ChangeAuditStamp auditStamp,
64-
DatasetProperty property, DatasetSchema schema, List<DeploymentDetail> deployments, List<String> tags,
65-
List<Capacity> capacities, PartitionSpecification partitions) throws Exception {
65+
public DictDataset insertUpdateDataset(@Nonnull DatasetIdentifier identifier, @Nonnull ChangeAuditStamp auditStamp,
66+
@Nullable DatasetProperty property, @Nullable DatasetSchema schema, @Nullable List<DeploymentDetail> deployments,
67+
@Nullable List<String> tags, @Nullable List<Capacity> capacities, @Nullable PartitionSpecification partitions)
68+
throws Exception {
6669

6770
String urn = toWhDatasetUrn(identifier);
6871

@@ -98,9 +101,10 @@ public DictDataset insertUpdateDataset(DatasetIdentifier identifier, ChangeAudit
98101
* @param partitions PartitionSpecification
99102
* @throws IOException
100103
*/
101-
public void fillDictDataset(DictDataset ds, String urn, ChangeAuditStamp auditStamp, DatasetProperty property,
102-
DatasetSchema schema, List<DeploymentDetail> deployments, List<String> tags, List<Capacity> capacities,
103-
PartitionSpecification partitions) throws IOException {
104+
public void fillDictDataset(@Nonnull DictDataset ds, @Nonnull String urn, @Nonnull ChangeAuditStamp auditStamp,
105+
@Nullable DatasetProperty property, @Nullable DatasetSchema schema, @Nullable List<DeploymentDetail> deployments,
106+
@Nullable List<String> tags, List<Capacity> capacities, @Nullable PartitionSpecification partitions)
107+
throws IOException {
104108

105109
ObjectMapper mapper = new ObjectMapper();
106110

0 commit comments

Comments
 (0)