You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2020/01/24 18:46:41 UTC

[directory-scimple] branch merge/psu-scim-2.22.3 created (now 0a7ac49)

This is an automated email from the ASF dual-hosted git repository.

smoyer1 pushed a change to branch merge/psu-scim-2.22.3
in repository https://gitbox.apache.org/repos/asf/directory-scimple.git.


      at 0a7ac49  Merges changes from PennState/SCIMple 2.22.3

This branch includes the following new commits:

     new 0a7ac49  Merges changes from PennState/SCIMple 2.22.3

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[directory-scimple] 01/01: Merges changes from PennState/SCIMple 2.22.3

Posted by sm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

smoyer1 pushed a commit to branch merge/psu-scim-2.22.3
in repository https://gitbox.apache.org/repos/asf/directory-scimple.git

commit 0a7ac49e48c3b402c15969ebaaaaa1ce9e7acc6e
Author: Steve Moyer <sm...@psu.edu>
AuthorDate: Fri Jan 24 13:45:12 2020 -0500

    Merges changes from PennState/SCIMple 2.22.3
---
 .../scim/server/provider/ProviderRegistry.java     |  9 ++++++--
 .../scim/server/rest/BulkResourceImpl.java         |  1 +
 .../scim/server/rest/GroupResourceImpl.java        | 25 ++++++++++++++++-----
 .../scim/server/rest/UserResourceImpl.java         | 26 ++++++++++++++++++----
 4 files changed, 50 insertions(+), 11 deletions(-)

diff --git a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/provider/ProviderRegistry.java b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/provider/ProviderRegistry.java
index cf4c8fd..4007db3 100644
--- a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/provider/ProviderRegistry.java
+++ b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/provider/ProviderRegistry.java
@@ -30,6 +30,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.ejb.Lock;
+import javax.ejb.LockType;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
 import javax.enterprise.inject.Instance;
@@ -99,6 +101,7 @@ public class ProviderRegistry {
 
   private Map<Class<? extends ScimResource>, Instance<? extends Provider<? extends ScimResource>>> providerMap = new HashMap<>();
 
+  @Lock(LockType.WRITE)
   public <T extends ScimResource> void registerProvider(Class<T> clazz, Instance<? extends Provider<T>> providerInstance) throws InvalidProviderException, JsonProcessingException, UnableToRetrieveExtensionsException {
 
     Provider<T> provider = providerInstance.get();
@@ -130,6 +133,8 @@ public class ProviderRegistry {
     providerMap.put(clazz, providerInstance);
   }
 
+  @Deprecated
+  @Lock(LockType.READ)
   @SuppressWarnings("unchecked")
   public <T extends ScimResource> Provider<T> getProvider(Class<T> clazz) {
     Instance<? extends Provider<? extends ScimResource>> providerInstance = providerMap.get(clazz);
@@ -181,13 +186,13 @@ public class ProviderRegistry {
     return resourceType;
   }
 
-  public static Schema generateBaseSchema(Class<?> clazz) throws InvalidProviderException {
+  private static Schema generateBaseSchema(Class<?> clazz) throws InvalidProviderException {
     List<Field> fieldList = ScimUtils.getFieldsUpTo(clazz, BaseResource.class);
 
     return generateSchema(clazz, fieldList);
   }
   
-  public static Schema generateExtensionSchema(Class<?> clazz) throws InvalidProviderException {
+  private static Schema generateExtensionSchema(Class<?> clazz) throws InvalidProviderException {
     log.debug("----> In generateExtensionSchema");
     
     return generateSchema(clazz, ScimUtils.getFieldsUpTo(clazz, Object.class));
diff --git a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
index 978954f..7aca970 100644
--- a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
+++ b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/BulkResourceImpl.java
@@ -32,6 +32,7 @@ import java.util.regex.Pattern;
 
 import javax.ejb.Stateless;
 import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.CDI;
 import javax.inject.Inject;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
diff --git a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/GroupResourceImpl.java b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/GroupResourceImpl.java
index 4d76b79..77e882d 100644
--- a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/GroupResourceImpl.java
+++ b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/GroupResourceImpl.java
@@ -22,21 +22,36 @@
  */
 package org.apache.directory.scim.server.rest;
 
-import javax.inject.Inject;
+import javax.ejb.Stateless;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.CDI;
+import javax.enterprise.util.TypeLiteral;
 
 import org.apache.directory.scim.server.provider.Provider;
-import org.apache.directory.scim.server.provider.ProviderRegistry;
 import org.apache.directory.scim.spec.protocol.GroupResource;
 import org.apache.directory.scim.spec.resources.ScimGroup;
 
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Stateless
 public class GroupResourceImpl extends BaseResourceTypeResourceImpl<ScimGroup> implements GroupResource {
 
-  @Inject
-  ProviderRegistry providerRegistry;
+//  @Inject
+////  @ProviderQualifier(ScimGroup.class)
+//  Provider<ScimGroup> provider;
 
   @Override
   public Provider<ScimGroup> getProvider() {
-    return providerRegistry.getProvider(ScimGroup.class);
+    try {
+      final TypeLiteral<Provider<ScimGroup>> typeLiteral = new TypeLiteral<Provider<ScimGroup>>() {
+      };
+      final Instance<Provider<ScimGroup>> select = CDI.current().select(typeLiteral);
+      return select.get();
+    } catch (final Exception e) {
+      log.warn("Provider doesn't exist", e);
+      return null;
+    }
   }
   
 }
diff --git a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/UserResourceImpl.java b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/UserResourceImpl.java
index 7dec691..6b319b3 100644
--- a/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/UserResourceImpl.java
+++ b/scim-server/scim-server-common/src/main/java/org/apache/directory/scim/server/rest/UserResourceImpl.java
@@ -23,6 +23,9 @@
 package org.apache.directory.scim.server.rest;
 
 import javax.ejb.Stateless;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.CDI;
+import javax.enterprise.util.TypeLiteral;
 import javax.inject.Inject;
 
 import org.apache.directory.scim.server.provider.Provider;
@@ -30,19 +33,34 @@ import org.apache.directory.scim.server.provider.ProviderRegistry;
 import org.apache.directory.scim.spec.protocol.UserResource;
 import org.apache.directory.scim.spec.resources.ScimUser;
 
+import lombok.extern.slf4j.Slf4j;
+
 /**
  * @author shawn
  *
  */
+@Slf4j
 @Stateless
 public class UserResourceImpl extends BaseResourceTypeResourceImpl<ScimUser> implements UserResource {
 
-  @Inject
-  ProviderRegistry providerRegistry;
-
+//  @Inject
+//  ProviderRegistry providerRegistry;
+//  
+//  @Inject
+////  @ProviderQualifier(ScimUser.class)
+//  Provider<ScimUser> provider;
+  
   @Override
   public Provider<ScimUser> getProvider() {
-    return providerRegistry.getProvider(ScimUser.class);
+    try {
+      TypeLiteral<Provider<ScimUser>> typeLiteral = new TypeLiteral<Provider<ScimUser>>() {
+      };
+      Instance<Provider<ScimUser>> select = CDI.current().select(typeLiteral);
+      return select.get();
+    } catch (Exception e) {
+      log.warn("Provider doesn't exist", e);
+      return null;
+    }
   }
 
 }