GUACAMOLE-289: Isolate extension REST services to ".../api/ext/" and 
".../api/session/ext".


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/aa261410
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/aa261410
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/aa261410

Branch: refs/heads/master
Commit: aa261410f4a457da99fcf49baed605697a853729
Parents: 4455cbc
Author: Michael Jumper <[email protected]>
Authored: Sat Apr 29 13:38:52 2017 -0700
Committer: Michael Jumper <[email protected]>
Committed: Sat Apr 29 13:38:57 2017 -0700

----------------------------------------------------------------------
 .../apache/guacamole/net/auth/UserContext.java  |  5 +--
 .../guacamole/rest/session/SessionResource.java | 35 ++++++++++++++++++++
 .../rest/session/UserContextResource.java       | 26 ---------------
 3 files changed, 38 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/aa261410/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
----------------------------------------------------------------------
diff --git 
a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java 
b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
index 7c48337..10fd6bf 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
@@ -43,8 +43,9 @@ public interface UserContext {
      * properly annotated with JSR-311 annotations, and may serve as the root
      * resource for any number of extension-specific REST resources related to
      * an authenticated user's session. The returned resource is ultimately
-     * exposed at ".../api/session/data/IDENTIFIER/ext/", where IDENTIFIER is
-     * the identifier of the AuthenticationProvider.
+     * exposed at ".../api/session/ext/IDENTIFIER/", where IDENTIFIER is the
+     * identifier of the AuthenticationProvider associated with this
+     * UserContext.
      *
      * REST resources which are NOT related to an authenticated user's session
      * should instead be returned from AuthenticationProvider.getResource().

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/aa261410/guacamole/src/main/java/org/apache/guacamole/rest/session/SessionResource.java
----------------------------------------------------------------------
diff --git 
a/guacamole/src/main/java/org/apache/guacamole/rest/session/SessionResource.java
 
b/guacamole/src/main/java/org/apache/guacamole/rest/session/SessionResource.java
index 568df4f..606e78b 100644
--- 
a/guacamole/src/main/java/org/apache/guacamole/rest/session/SessionResource.java
+++ 
b/guacamole/src/main/java/org/apache/guacamole/rest/session/SessionResource.java
@@ -28,6 +28,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import org.apache.guacamole.GuacamoleException;
+import org.apache.guacamole.GuacamoleResourceNotFoundException;
 import org.apache.guacamole.GuacamoleSession;
 import org.apache.guacamole.net.auth.UserContext;
 import org.apache.guacamole.rest.tunnel.TunnelCollectionResource;
@@ -102,6 +103,40 @@ public class SessionResource {
     }
 
     /**
+     * Returns the arbitrary REST resource exposed by the UserContext
+     * associated with the AuthenticationProvider having the given identifier.
+     *
+     * @param authProviderIdentifier
+     *     The unique identifier of the AuthenticationProvider associated with
+     *     the UserContext whose arbitrary REST service is being retrieved.
+     *
+     * @return
+     *     The arbitrary REST resource exposed by the UserContext exposed by
+     *     this UserContextresource.
+     *
+     * @throws GuacamoleException
+     *     If no such resource could be found, or if an error occurs while
+     *     retrieving that resource.
+     */
+    @Path("ext/{dataSource}")
+    public Object getExtensionResource(
+            @PathParam("dataSource") String authProviderIdentifier)
+            throws GuacamoleException {
+
+        // Pull UserContext defined by the given auth provider identifier
+        UserContext userContext = 
session.getUserContext(authProviderIdentifier);
+
+        // Pull resource from user context
+        Object resource = userContext.getResource();
+        if (resource != null)
+            return resource;
+
+        // UserContext-specific resource could not be found
+        throw new GuacamoleResourceNotFoundException("No such resource.");
+
+    }
+
+    /**
      * Retrieves a resource representing all tunnels associated with session
      * exposed by this SessionResource.
      *

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/aa261410/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java
----------------------------------------------------------------------
diff --git 
a/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java
 
b/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java
index b2e5eaa..29b443f 100644
--- 
a/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java
+++ 
b/guacamole/src/main/java/org/apache/guacamole/rest/session/UserContextResource.java
@@ -29,7 +29,6 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import org.apache.guacamole.GuacamoleException;
-import org.apache.guacamole.GuacamoleResourceNotFoundException;
 import org.apache.guacamole.net.auth.ActiveConnection;
 import org.apache.guacamole.net.auth.Connection;
 import org.apache.guacamole.net.auth.ConnectionGroup;
@@ -254,29 +253,4 @@ public class UserContextResource {
         return new SchemaResource(userContext);
     }
 
-    /**
-     * Returns the arbitrary REST resource exposed by the UserContext exposed
-     * by this UserContextResource.
-     *
-     * @return
-     *     The arbitrary REST resource exposed by the UserContext exposed by
-     *     this UserContextresource.
-     *
-     * @throws GuacamoleException
-     *     If no such resource could be found, or if an error occurs while
-     *     retrieving that resource.
-     */
-    @Path("ext")
-    public Object getExtensionResource() throws GuacamoleException {
-
-        // Pull resource from user context
-        Object resource = userContext.getResource();
-        if (resource != null)
-            return resource;
-
-        // UserContext-specific resource could not be found
-        throw new GuacamoleResourceNotFoundException("No such resource.");
-
-    }
-
 }

Reply via email to