diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..c5f3f6b9
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "java.configuration.updateBuildConfiguration": "interactive"
+}
\ No newline at end of file
diff --git a/ci/pmd-ruleset.xml b/ci/pmd-ruleset.xml
new file mode 100644
index 00000000..6866d596
--- /dev/null
+++ b/ci/pmd-ruleset.xml
@@ -0,0 +1,34 @@
+
+
+
+
+ Reports unused code as part of the build. The Java compiler's -Xlint
+ cannot detect unused local variables, private fields, private methods or
+ private/constructor parameters.
+
+ Note: there is no reliable rule for "unused public class/method" as those may
+ form part of the published API and cannot be judged from this codebase alone,
+ so they are intentionally out of scope.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/data/MultiIPIDataCloud.java b/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/data/MultiIPIDataCloud.java
index bd6d870b..f25e0edc 100644
--- a/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/data/MultiIPIDataCloud.java
+++ b/ip-intelligence.cloud/src/main/java/fiftyone/ipintelligence/cloud/data/MultiIPIDataCloud.java
@@ -41,7 +41,7 @@
* by the 51Degrees Cloud service when evidence matching multiple profiles is
* provided.
*/
-public class MultiIPIDataCloud
+public final class MultiIPIDataCloud
extends AspectDataBase
implements MultiProfileData {
private static final String PROFILE_LIST_KEY = "profiles";
diff --git a/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/IPIntelligenceCloudEngineTests.java b/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/IPIntelligenceCloudEngineTests.java
index 6b14439c..dc30c665 100644
--- a/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/IPIntelligenceCloudEngineTests.java
+++ b/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/IPIntelligenceCloudEngineTests.java
@@ -38,7 +38,6 @@
import java.net.InetAddress;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/MissingPropertyHandlingTests.java b/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/MissingPropertyHandlingTests.java
index fa7ec56f..2e860d03 100644
--- a/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/MissingPropertyHandlingTests.java
+++ b/ip-intelligence.cloud/src/test/java/fiftyone/ipintelligence/cloud/flowelements/MissingPropertyHandlingTests.java
@@ -26,7 +26,6 @@
import fiftyone.pipeline.cloudrequestengine.data.CloudRequestData;
import fiftyone.pipeline.cloudrequestengine.flowelements.CloudRequestEngine;
import fiftyone.pipeline.core.data.FlowData;
-import fiftyone.pipeline.core.data.IWeightedValue;
import fiftyone.pipeline.engines.data.AspectPropertyMetaData;
import fiftyone.pipeline.engines.data.AspectPropertyMetaDataDefault;
import fiftyone.pipeline.engines.data.AspectPropertyValue;
diff --git a/ip-intelligence.engine.on-premise/src/test/java/fiftyone/ipintelligence/engine/onpremise/data/DataValidatorHash.java b/ip-intelligence.engine.on-premise/src/test/java/fiftyone/ipintelligence/engine/onpremise/data/DataValidatorHash.java
index 017ee631..3ae0e1d8 100644
--- a/ip-intelligence.engine.on-premise/src/test/java/fiftyone/ipintelligence/engine/onpremise/data/DataValidatorHash.java
+++ b/ip-intelligence.engine.on-premise/src/test/java/fiftyone/ipintelligence/engine/onpremise/data/DataValidatorHash.java
@@ -26,13 +26,10 @@
import fiftyone.ipintelligence.shared.IPIntelligenceData;
import fiftyone.ipintelligence.shared.testhelpers.data.DataValidator;
import fiftyone.pipeline.core.data.FlowData;
-import fiftyone.pipeline.core.data.IWeightedValue;
import fiftyone.pipeline.engines.data.AspectPropertyValue;
import fiftyone.pipeline.engines.exceptions.NoValueException;
import fiftyone.pipeline.engines.fiftyone.data.FiftyOneAspectPropertyMetaData;
-import java.util.Arrays;
-import java.util.List;
import java.util.Map;
import static org.junit.Assert.*;
diff --git a/ip-intelligence.shared/src/main/java/fiftyone/ipintelligence/shared/flowelements/OnPremiseIPIntelligenceEngineBuilderBase.java b/ip-intelligence.shared/src/main/java/fiftyone/ipintelligence/shared/flowelements/OnPremiseIPIntelligenceEngineBuilderBase.java
index a3612c71..52c90d9f 100644
--- a/ip-intelligence.shared/src/main/java/fiftyone/ipintelligence/shared/flowelements/OnPremiseIPIntelligenceEngineBuilderBase.java
+++ b/ip-intelligence.shared/src/main/java/fiftyone/ipintelligence/shared/flowelements/OnPremiseIPIntelligenceEngineBuilderBase.java
@@ -24,7 +24,6 @@
import fiftyone.pipeline.engines.data.AspectData;
import fiftyone.pipeline.engines.data.AspectPropertyMetaData;
-import fiftyone.pipeline.engines.data.AspectPropertyValue;
import fiftyone.pipeline.engines.fiftyone.flowelements.FiftyOneAspectEngine;
import fiftyone.pipeline.engines.fiftyone.flowelements.FiftyOneOnPremiseAspectEngineBuilderBase;
import fiftyone.pipeline.engines.services.DataUpdateService;
diff --git a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/FileUtilsTest.java b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/FileUtilsTest.java
index a06de96f..bb1b302b 100644
--- a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/FileUtilsTest.java
+++ b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/FileUtilsTest.java
@@ -22,7 +22,6 @@
package fiftyone.ipintelligence.shared.testhelpers;
-import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/ListRuntimeConfigTest.java b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/ListRuntimeConfigTest.java
index 14b85ca3..bdf7aae6 100644
--- a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/ListRuntimeConfigTest.java
+++ b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/ListRuntimeConfigTest.java
@@ -22,7 +22,6 @@
package fiftyone.ipintelligence.shared.testhelpers;
-import org.junit.Ignore;
import org.junit.Test;
public class ListRuntimeConfigTest {
diff --git a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/MetaDataTests.java b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/MetaDataTests.java
index d4563f92..7a5f5e90 100644
--- a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/MetaDataTests.java
+++ b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/MetaDataTests.java
@@ -30,7 +30,6 @@
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicBoolean;
import static org.junit.Assert.assertEquals;
diff --git a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/ValueTests.java b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/ValueTests.java
index bc033403..4934d973 100644
--- a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/ValueTests.java
+++ b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/data/ValueTests.java
@@ -33,7 +33,10 @@
import fiftyone.pipeline.engines.fiftyone.data.FiftyOneAspectPropertyMetaData;
import java.lang.reflect.Method;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
import static fiftyone.pipeline.util.StringManipulation.stringJoin;
import static org.junit.Assert.*;
diff --git a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/flowelements/ProcessTests.java b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/flowelements/ProcessTests.java
index c2d0fbb7..5b273669 100644
--- a/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/flowelements/ProcessTests.java
+++ b/ip-intelligence.shared/src/test/java/fiftyone/ipintelligence/shared/testhelpers/flowelements/ProcessTests.java
@@ -27,10 +27,7 @@
import fiftyone.ipintelligence.shared.testhelpers.data.DataValidator;
import fiftyone.pipeline.core.data.FlowData;
-import java.util.Arrays;
-import java.util.List;
-import static fiftyone.pipeline.util.StringManipulation.stringJoin;
public class ProcessTests {
diff --git a/ip-intelligence/src/main/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilder.java b/ip-intelligence/src/main/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilder.java
index 59042020..0ebff7a8 100644
--- a/ip-intelligence/src/main/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilder.java
+++ b/ip-intelligence/src/main/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilder.java
@@ -34,7 +34,6 @@
import fiftyone.pipeline.engines.flowelements.AspectEngine;
import fiftyone.pipeline.engines.flowelements.PrePackagedPipelineBuilderBase;
import fiftyone.pipeline.engines.services.DataUpdateService;
-import fiftyone.pipeline.engines.services.HttpClient;
import org.slf4j.ILoggerFactory;
import org.slf4j.LoggerFactory;
diff --git a/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilderTest.java b/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilderTest.java
index dd745168..98b386e9 100644
--- a/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilderTest.java
+++ b/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceOnPremisePipelineBuilderTest.java
@@ -42,7 +42,6 @@
import java.io.File;
import java.lang.reflect.Field;
-import java.nio.file.Files;
import java.util.List;
import static org.junit.Assert.*;
@@ -160,7 +159,7 @@ public void setDataFileSystemWatcher_PropertyPropagatedToDataFileConfiguration()
@Test
public void setDataUpdateService_RegisterDataFileTriggered() throws Exception {
DataUpdateServiceDefault dataUpdateServiceDefault = mock(DataUpdateServiceDefault.class);
- Pipeline pipeline = builder
+ builder
.setAutoUpdate(true)
.setDataUpdateService(dataUpdateServiceDefault)
.build();
diff --git a/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceTests.java b/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceTests.java
index b40f3c62..231e7198 100644
--- a/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceTests.java
+++ b/ip-intelligence/src/test/java/fiftyone/ipintelligence/IPIntelligenceTests.java
@@ -43,6 +43,7 @@
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -56,7 +57,7 @@
import static fiftyone.ipintelligence.shared.testhelpers.FileUtils.IP_ADDRESSES_FILE_NAME;
import static fiftyone.pipeline.engines.Constants.PerformanceProfiles.*;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -230,6 +231,8 @@ public void TestOnPremiseBuilder_CreateTempFile() throws Exception {
pipeline.getElement(IPIntelligenceOnPremiseEngine.class);
String tempDir = engine.getTempDataDirPath();
Path tempPath = Paths.get(tempDir);
+ assertTrue("A temp data file should have been created under " + tempPath,
+ Files.exists(tempPath));
}
}
logger.info("Completed {} creations", i);
diff --git a/pom.xml b/pom.xml
index 0b1391cf..62ea8471 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,6 +40,7 @@
20211205
3.9.0
+ 3.26.0
1.6.0
2.5.2
3.2.2
@@ -119,7 +120,7 @@
true
-Xlint:all,-try,-options
-
+ -Werror
@@ -158,6 +159,44 @@
published
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ ${maven-pmd-plugin.version}
+
+
+
+ ${maven.multiModuleProjectDirectory}/ci/pmd-ruleset.xml
+
+
+ true
+ true
+ true
+
+ false
+
+
+ **/interop/swig/*.java
+
+
+
+
+ check-unused-code
+ compile
+
+ check
+
+
+
+
org.apache.maven.plugins
maven-surefire-plugin