From 9f3ff9336eb4350e6d0b5bde0986c0ce1f8b21bf Mon Sep 17 00:00:00 2001
From: Brian Major <brian.major@nrc-cnrc.gc.ca>
Date: Thu, 11 Sep 2014 14:28:51 -0700
Subject: [PATCH] s1651 - GMSClient search API created

---
 .../src/ca/nrc/cadc/ac/client/GMSClient.java  | 53 ++++++++++++++-----
 1 file changed, 40 insertions(+), 13 deletions(-)

diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java
index 261a64ee..30507fe9 100755
--- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java
+++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/client/GMSClient.java
@@ -68,18 +68,6 @@
  */
 package ca.nrc.cadc.ac.client;
 
-import ca.nrc.cadc.ac.Group;
-import ca.nrc.cadc.ac.GroupAlreadyExistsException;
-import ca.nrc.cadc.ac.GroupNotFoundException;
-import ca.nrc.cadc.ac.GroupReader;
-import ca.nrc.cadc.ac.GroupWriter;
-import ca.nrc.cadc.ac.UserNotFoundException;
-import ca.nrc.cadc.auth.AuthenticationUtil;
-import ca.nrc.cadc.auth.SSLUtil;
-import ca.nrc.cadc.net.HttpDownload;
-import ca.nrc.cadc.net.HttpPost;
-import ca.nrc.cadc.net.HttpUpload;
-import ca.nrc.cadc.net.NetUtil;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -96,13 +84,31 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLSocketFactory;
 import javax.security.auth.Subject;
+
 import org.apache.log4j.Logger;
 
+import ca.nrc.cadc.ac.Group;
+import ca.nrc.cadc.ac.GroupAlreadyExistsException;
+import ca.nrc.cadc.ac.GroupNotFoundException;
+import ca.nrc.cadc.ac.GroupReader;
+import ca.nrc.cadc.ac.GroupWriter;
+import ca.nrc.cadc.ac.Role;
+import ca.nrc.cadc.ac.UserNotFoundException;
+import ca.nrc.cadc.auth.AuthenticationUtil;
+import ca.nrc.cadc.auth.SSLUtil;
+import ca.nrc.cadc.net.HttpDownload;
+import ca.nrc.cadc.net.HttpPost;
+import ca.nrc.cadc.net.HttpUpload;
+import ca.nrc.cadc.net.NetUtil;
+
 /**
  * Client class for communicating with the access control web service.
+ * 
+ * TODO: Cache the group memberships using getCachedGroups(), setCachedGroups()
  */
 public class GMSClient
 {
@@ -647,10 +653,31 @@ public class GMSClient
         }
     }
 
-    public Collection<Group> searchGroups()
+    public Collection<Group> getMemberships(Principal userID, Role role)
+    {
+        throw new UnsupportedOperationException();
+    }
+    
+    public Group getMembership(Principal userID, String groupName)
+    {
+        return getMembership(userID, groupName, Role.MEMBER);
+    }
+    
+    public Group getMembership(Principal userID, String groupName, Role role)
     {
         throw new UnsupportedOperationException();
     }
+    
+    public boolean isMember(Principal userID, String groupName)
+    {
+        return isMember(userID, groupName, Role.MEMBER);
+    }
+    
+    public boolean isMember(Principal userID, String groupName, Role role)
+    {
+        Group group = getMembership(userID, groupName, role);
+        return group != null;
+    }
 
     /**
      * @param sslSocketFactory the sslSocketFactory to set
-- 
GitLab