Merge branch 'release/2.7'
diff --git a/pom.xml b/pom.xml
index 1c8564c..b6e6e3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
<packaging>pom</packaging>
<name>SCIM - Parent</name>
<description>Penn State's Open Source JavaEE implmentation of the SCIM version 2.0 specification (RFC7642, RFC7643 and RFC7644)</description>
@@ -15,6 +15,7 @@
<version.errai>4.0.0.CR1</version.errai>
<version.gwt>2.8.0</version.gwt>
+ <version.jackson>2.8.8</version.jackson>
<version.lombok>1.16.14</version.lombok>
<version.lombok.plugin>${version.lombok}.0</version.lombok.plugin>
<version.restfuse>1.2.0</version.restfuse>
@@ -96,9 +97,11 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.fasterxml.jackson.jaxrs</groupId>
- <artifactId>jackson-jaxrs-json-provider</artifactId>
- <version>2.5.2</version>
+ <groupId>com.fasterxml.jackson</groupId>
+ <artifactId>jackson-bom</artifactId>
+ <version>${version.jackson}</version>
+ <scope>import</scope>
+ <type>pom</type>
</dependency>
<dependency>
<groupId>pl.pragmatists</groupId>
@@ -184,6 +187,21 @@
<doUpdate>false</doUpdate>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.owasp</groupId>
+ <artifactId>dependency-check-maven</artifactId>
+ <version>1.4.5</version>
+<!-- <configuration> -->
+<!-- <failBuildOnCVSS>10</failBuildOnCVSS> -->
+<!-- </configuration> -->
+ <executions>
+ <execution>
+ <goals>
+ <goal>aggregate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
<pluginManagement>
<plugins>
diff --git a/scim-client/pom.xml b/scim-client/pom.xml
index b33046c..525a4ff 100644
--- a/scim-client/pom.xml
+++ b/scim-client/pom.xml
@@ -3,7 +3,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-client</artifactId>
<name>SCIM - Client</name>
diff --git a/scim-common/pom.xml b/scim-common/pom.xml
index b006580..a7b61c1 100644
--- a/scim-common/pom.xml
+++ b/scim-common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-common</artifactId>
@@ -14,12 +14,12 @@
<dependency>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-spec-protocol</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</dependency>
<dependency>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-spec-schema</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</dependency>
</dependencies>
diff --git a/scim-compliance/pom.xml b/scim-compliance/pom.xml
index 6a6100a..2467933 100644
--- a/scim-compliance/pom.xml
+++ b/scim-compliance/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-compliance</artifactId>
diff --git a/scim-compliance/scim-compliance-client/pom.xml b/scim-compliance/scim-compliance-client/pom.xml
index a90e2ff..c40803b 100644
--- a/scim-compliance/scim-compliance-client/pom.xml
+++ b/scim-compliance/scim-compliance-client/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-compliance</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-compliance-client</artifactId>
diff --git a/scim-compliance/scim-compliance-server/pom.xml b/scim-compliance/scim-compliance-server/pom.xml
index 8ccd1e1..8dcc514 100644
--- a/scim-compliance/scim-compliance-server/pom.xml
+++ b/scim-compliance/scim-compliance-server/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-compliance</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-compliance-server</artifactId>
diff --git a/scim-errai/pom.xml b/scim-errai/pom.xml
index 0560d8e..19b367f 100644
--- a/scim-errai/pom.xml
+++ b/scim-errai/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-errai</artifactId>
diff --git a/scim-server/pom.xml b/scim-server/pom.xml
index 5ba64e8..9b1814a 100644
--- a/scim-server/pom.xml
+++ b/scim-server/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server</artifactId>
diff --git a/scim-server/scim-server-common/pom.xml b/scim-server/scim-server-common/pom.xml
index 3a6fb3a..2a00d9f 100644
--- a/scim-server/scim-server-common/pom.xml
+++ b/scim-server/scim-server-common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-server</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server-common</artifactId>
diff --git a/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/rest/BaseResourceTypeResourceImpl.java b/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/rest/BaseResourceTypeResourceImpl.java
index 0faad70..b28e2a1 100644
--- a/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/rest/BaseResourceTypeResourceImpl.java
+++ b/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/rest/BaseResourceTypeResourceImpl.java
@@ -201,8 +201,8 @@
.map(wrapper -> wrapper.getAttributeReferences())
.orElse(Collections.emptySet()));
- searchRequest.setFilter(filter.getFilter());
-
+ searchRequest.setFilter((filter != null) ? filter.getFilter() : null);
+
searchRequest.setSortBy(sortBy);
searchRequest.setSortOrder(sortOrder);
searchRequest.setStartIndex(startIndex);
diff --git a/scim-server/scim-server-common/src/test/java/edu/psu/swe/scim/server/provider/UpdateRequestTest.java b/scim-server/scim-server-common/src/test/java/edu/psu/swe/scim/server/provider/UpdateRequestTest.java
index 0c3e848..f9d6654 100644
--- a/scim-server/scim-server-common/src/test/java/edu/psu/swe/scim/server/provider/UpdateRequestTest.java
+++ b/scim-server/scim-server-common/src/test/java/edu/psu/swe/scim/server/provider/UpdateRequestTest.java
@@ -406,6 +406,37 @@
Assert.assertEquals(Type.REMOVE, operation.getOperation());
Assert.assertNull(operation.getValue());
}
+
+ /**
+ * This is used to test an error condition. In this scenario a user has multiple phone numbers where home is marked primary and work is not. A SCIM update
+ * is performed in which the new user only contains a work phone number where the type is null. When this happens it should only only be a single DELETE
+ * operation. Instead it creates four operations: replace value of the home number with the work number value, replace the home type to work,
+ * remove the primary flag, and remove the work number
+ */
+ @Test
+ public void testShowBugWhereDeleteIsTreatedAsMultipleReplace() throws Exception {
+ final int expectedNumberOfOperationsWithoutBug = 1;
+ final int expectedNumberOfOperationsWithBug = 4;
+
+ UpdateRequest<ScimUser> updateRequest = new UpdateRequest<>(registry);
+ ScimUser user1 = createUser1();
+ ScimUser user2 = copy(user1);
+ user2.getPhoneNumbers().removeIf(p -> p.getType().equals("home"));
+ PhoneNumber workNumber = user2.getPhoneNumbers().stream().filter(p -> p.getType().equals("work")).findFirst().orElse(null);
+ Assert.assertNotNull(workNumber);
+ workNumber.setPrimary(null);
+ workNumber.setPhoneContext(null);
+ workNumber.setNumber(null);
+ workNumber.setExtension(null);
+
+ updateRequest.initWithResource("1234", user1, user2);
+ List<PatchOperation> operations = updateRequest.getPatchOperations();
+ Assert.assertNotNull(operations);
+ Assert.assertEquals(expectedNumberOfOperationsWithBug, operations.size());
+ Assert.assertNotEquals(expectedNumberOfOperationsWithoutBug, operations.size());
+
+
+ }
private PatchOperation assertSingleResult(List<PatchOperation> result) {
Assertions.assertThat(result)
diff --git a/scim-server/scim-server-example/pom.xml b/scim-server/scim-server-example/pom.xml
index 88e4d2b..6e190e9 100644
--- a/scim-server/scim-server-example/pom.xml
+++ b/scim-server/scim-server-example/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-server</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server-examples</artifactId>
diff --git a/scim-server/scim-server-example/scim-server-couchdb/pom.xml b/scim-server/scim-server-example/scim-server-couchdb/pom.xml
index e65458b..7ea2735 100644
--- a/scim-server/scim-server-example/scim-server-couchdb/pom.xml
+++ b/scim-server/scim-server-example/scim-server-couchdb/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-server-examples</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server-couchdb</artifactId>
diff --git a/scim-server/scim-server-example/scim-server-memory/pom.xml b/scim-server/scim-server-example/scim-server-memory/pom.xml
index 4d05836..3e1749b 100644
--- a/scim-server/scim-server-example/scim-server-memory/pom.xml
+++ b/scim-server/scim-server-example/scim-server-memory/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-server-examples</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server-memory</artifactId>
diff --git a/scim-server/scim-server-example/scim-server-rdbms/pom.xml b/scim-server/scim-server-example/scim-server-rdbms/pom.xml
index 14e06ba..96be19f 100644
--- a/scim-server/scim-server-example/scim-server-rdbms/pom.xml
+++ b/scim-server/scim-server-example/scim-server-rdbms/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-server-examples</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-server-rdbms</artifactId>
diff --git a/scim-spec/pom.xml b/scim-spec/pom.xml
index 311daa9..bae53ba 100644
--- a/scim-spec/pom.xml
+++ b/scim-spec/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-spec</artifactId>
diff --git a/scim-spec/scim-spec-protocol/pom.xml b/scim-spec/scim-spec-protocol/pom.xml
index 1b516f2..b9981b8 100644
--- a/scim-spec/scim-spec-protocol/pom.xml
+++ b/scim-spec/scim-spec-protocol/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-spec</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-spec-protocol</artifactId>
diff --git a/scim-spec/scim-spec-schema/pom.xml b/scim-spec/scim-spec-schema/pom.xml
index d398948..5ef7707 100644
--- a/scim-spec/scim-spec-schema/pom.xml
+++ b/scim-spec/scim-spec-schema/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-spec</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-spec-schema</artifactId>
@@ -56,7 +56,6 @@
<!-- TODO Remove this dependency -->
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
- <version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
diff --git a/scim-spec/scim-spec-schema/src/main/java/edu/psu/swe/scim/spec/resources/Name.java b/scim-spec/scim-spec-schema/src/main/java/edu/psu/swe/scim/spec/resources/Name.java
index ea5fce9..4385cd7 100644
--- a/scim-spec/scim-spec-schema/src/main/java/edu/psu/swe/scim/spec/resources/Name.java
+++ b/scim-spec/scim-spec-schema/src/main/java/edu/psu/swe/scim/spec/resources/Name.java
@@ -7,10 +7,12 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
-import edu.psu.swe.scim.spec.annotation.ScimAttribute;
import lombok.Data;
+import lombok.EqualsAndHashCode;
+import edu.psu.swe.scim.spec.annotation.ScimAttribute;
@Data
+@EqualsAndHashCode(callSuper=false,exclude={"formatted"})
@XmlType(name = "name", propOrder = {
"formatted",
"familyName",
diff --git a/scim-tools/pom.xml b/scim-tools/pom.xml
index 138ad1f..c7c7caa 100644
--- a/scim-tools/pom.xml
+++ b/scim-tools/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-parent</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-tools</artifactId>
diff --git a/scim-tools/scim-tools-cli/pom.xml b/scim-tools/scim-tools-cli/pom.xml
index 74603b6..a926ac2 100644
--- a/scim-tools/scim-tools-cli/pom.xml
+++ b/scim-tools/scim-tools-cli/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-tools</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-tools-cli</artifactId>
diff --git a/scim-tools/scim-tools-common/pom.xml b/scim-tools/scim-tools-common/pom.xml
index 857aef7..8ee9b97 100644
--- a/scim-tools/scim-tools-common/pom.xml
+++ b/scim-tools/scim-tools-common/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-tools</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-tools-common</artifactId>
diff --git a/scim-tools/scim-tools-studio/pom.xml b/scim-tools/scim-tools-studio/pom.xml
index f6e444c..ffdbd82 100644
--- a/scim-tools/scim-tools-studio/pom.xml
+++ b/scim-tools/scim-tools-studio/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>edu.psu.swe.scim</groupId>
<artifactId>scim-tools</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
</parent>
<artifactId>scim-tools-studio</artifactId>