Move ResourceException to spec package so it can be used by protocol
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/repository/Repository.java b/scim-core/src/main/java/org/apache/directory/scim/core/repository/Repository.java
index 646886f..3628380 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/repository/Repository.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/repository/Repository.java
@@ -21,6 +21,7 @@
 
 import java.util.List;
 
+import org.apache.directory.scim.spec.exception.ResourceException;
 import org.apache.directory.scim.spec.filter.FilterResponse;
 import org.apache.directory.scim.spec.filter.Filter;
 import org.apache.directory.scim.spec.filter.PageRequest;
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/repository/RepositoryRegistry.java b/scim-core/src/main/java/org/apache/directory/scim/core/repository/RepositoryRegistry.java
index 21e4702..19bf149 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/repository/RepositoryRegistry.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/repository/RepositoryRegistry.java
@@ -28,6 +28,7 @@
 import org.apache.directory.scim.core.Initializable;
 import org.apache.directory.scim.spec.annotation.ScimExtensionType;
 import org.apache.directory.scim.spec.annotation.ScimResourceType;
+import org.apache.directory.scim.spec.exception.ResourceException;
 import org.apache.directory.scim.spec.exception.ScimResourceInvalidException;
 import org.apache.directory.scim.spec.extension.ScimExtensionRegistry;
 import org.apache.directory.scim.spec.resources.ScimExtension;
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/repository/SelfIdResolver.java b/scim-core/src/main/java/org/apache/directory/scim/core/repository/SelfIdResolver.java
index 6245994..cf43140 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/repository/SelfIdResolver.java
+++ b/scim-core/src/main/java/org/apache/directory/scim/core/repository/SelfIdResolver.java
@@ -19,6 +19,8 @@
 
 package org.apache.directory.scim.core.repository;
 
+import org.apache.directory.scim.spec.exception.ResourceException;
+
 import java.security.Principal;
 
 public interface SelfIdResolver {
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
index be83d53..9cb022b 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToCreateResourceException.java
@@ -23,7 +23,7 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
index d332fc6..b676c6f 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToDeleteResourceException.java
@@ -23,7 +23,7 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
index cacae1b..a672e12 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToResolveIdResourceException.java
@@ -23,7 +23,7 @@
 import jakarta.ws.rs.core.Response.Status;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
index edf646d..b1bca55 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveExtensionsResourceException.java
@@ -23,7 +23,7 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
index 3c1c8bb..4038a2f 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToRetrieveResourceException.java
@@ -23,7 +23,7 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
index 075d085..b874ee8 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/exception/UnableToUpdateResourceException.java
@@ -23,7 +23,7 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 
 @Data
 @EqualsAndHashCode(callSuper=true)
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
index 482c288..6aa6eb4 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
@@ -29,7 +29,7 @@
 import jakarta.ws.rs.core.UriInfo;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 import org.apache.directory.scim.server.exception.UnableToCreateResourceException;
 import org.apache.directory.scim.server.exception.UnableToDeleteResourceException;
 import org.apache.directory.scim.server.exception.UnableToRetrieveResourceException;
diff --git a/scim-server/src/main/java/org/apache/directory/scim/server/rest/SelfResourceImpl.java b/scim-server/src/main/java/org/apache/directory/scim/server/rest/SelfResourceImpl.java
index a8ed01f..32db8de 100644
--- a/scim-server/src/main/java/org/apache/directory/scim/server/rest/SelfResourceImpl.java
+++ b/scim-server/src/main/java/org/apache/directory/scim/server/rest/SelfResourceImpl.java
@@ -27,7 +27,7 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.Response.Status;
 
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 import org.apache.directory.scim.server.exception.UnableToResolveIdResourceException;
 import org.apache.directory.scim.core.repository.SelfIdResolver;
 import org.apache.directory.scim.protocol.SelfResource;
diff --git a/scim-server/src/test/java/org/apache/directory/scim/server/rest/SelfResourceImplTest.java b/scim-server/src/test/java/org/apache/directory/scim/server/rest/SelfResourceImplTest.java
index 3c20e3c..619c751 100644
--- a/scim-server/src/test/java/org/apache/directory/scim/server/rest/SelfResourceImplTest.java
+++ b/scim-server/src/test/java/org/apache/directory/scim/server/rest/SelfResourceImplTest.java
@@ -33,7 +33,7 @@
 import jakarta.ws.rs.core.Response;
 
 import jakarta.ws.rs.core.SecurityContext;
-import org.apache.directory.scim.core.repository.ResourceException;
+import org.apache.directory.scim.spec.exception.ResourceException;
 import org.apache.directory.scim.core.repository.SelfIdResolver;
 import org.apache.directory.scim.protocol.UserResource;
 import org.apache.directory.scim.protocol.data.ErrorResponse;
diff --git a/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ConflictResourceException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ConflictResourceException.java
new file mode 100644
index 0000000..91af8d9
--- /dev/null
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ConflictResourceException.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.directory.scim.spec.exception;
+
+public class ConflictResourceException extends ResourceException {
+
+  public ConflictResourceException(String message) {
+    super(409, message);
+  }
+
+  public ConflictResourceException(int statusCode, String message, Throwable cause) {
+    super(409, message, cause);
+  }
+}
diff --git a/scim-core/src/main/java/org/apache/directory/scim/core/repository/ResourceException.java b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ResourceException.java
similarity index 95%
rename from scim-core/src/main/java/org/apache/directory/scim/core/repository/ResourceException.java
rename to scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ResourceException.java
index 0a98763..d535887 100644
--- a/scim-core/src/main/java/org/apache/directory/scim/core/repository/ResourceException.java
+++ b/scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/exception/ResourceException.java
@@ -17,7 +17,7 @@
 * under the License.
 */
 
-package org.apache.directory.scim.core.repository;
+package org.apache.directory.scim.spec.exception;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;