diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java index 06530c2f1..41832cb34 100644 --- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java +++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java @@ -26,6 +26,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.guacamole.environment.Environment; import org.apache.guacamole.net.GuacamoleTunnel; import org.apache.guacamole.net.auth.AuthenticatedUser; +import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.UserContext; import org.apache.guacamole.tunnel.StreamInterceptingTunnel; import org.slf4j.Logger; @@ -126,6 +127,44 @@ public class GuacamoleSession { return Collections.unmodifiableList(userContexts); } + /** + * Returns the UserContext associated with this session that originated + * from the AuthenticationProvider with the given identifier. If no such + * UserContext exists, an exception is thrown. + * + * @param authProviderIdentifier + * The unique identifier of the AuthenticationProvider that created the + * UserContext being retrieved. + * + * @return + * The UserContext that was created by the AuthenticationProvider + * having the given identifier. + * + * @throws GuacamoleException + * If no such UserContext exists. + */ + public UserContext getUserContext(String authProviderIdentifier) + throws GuacamoleException { + + // Locate and return the UserContext associated with the + // AuthenticationProvider having the given identifier, if any + for (UserContext userContext : getUserContexts()) { + + // Get AuthenticationProvider associated with current UserContext + AuthenticationProvider authProvider = userContext.getAuthenticationProvider(); + + // If AuthenticationProvider identifier matches, done + if (authProvider.getIdentifier().equals(authProviderIdentifier)) + return userContext; + + } + + throw new GuacamoleResourceNotFoundException("Session not associated " + + "with authentication provider \"" + authProviderIdentifier + "\"."); + + + } + /** * Replaces all UserContexts associated with this session with the given * List of UserContexts. diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/ObjectRetrievalService.java b/guacamole/src/main/java/org/apache/guacamole/rest/ObjectRetrievalService.java deleted file mode 100644 index edcb2faab..000000000 --- a/guacamole/src/main/java/org/apache/guacamole/rest/ObjectRetrievalService.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * 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.guacamole.rest; - -import java.util.List; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.GuacamoleResourceNotFoundException; -import org.apache.guacamole.net.auth.AuthenticationProvider; -import org.apache.guacamole.net.auth.UserContext; -import org.apache.guacamole.GuacamoleSession; - -/** - * Provides easy access and automatic error handling for retrieval of objects. - */ -public class ObjectRetrievalService { - - /** - * Retrieves a single UserContext from the given GuacamoleSession, which - * may contain multiple UserContexts. - * - * @param session - * The GuacamoleSession to retrieve the UserContext from. - * - * @param authProviderIdentifier - * The unique identifier of the AuthenticationProvider that created the - * UserContext being retrieved. Only one UserContext per User per - * AuthenticationProvider can exist. - * - * @return - * The UserContext that was created by the AuthenticationProvider - * having the given identifier. - * - * @throws GuacamoleException - * If an error occurs while retrieving the UserContext, or if the - * UserContext does not exist. - */ - public UserContext retrieveUserContext(GuacamoleSession session, - String authProviderIdentifier) throws GuacamoleException { - - // Get list of UserContexts - List userContexts = session.getUserContexts(); - - // Locate and return the UserContext associated with the - // AuthenticationProvider having the given identifier, if any - for (UserContext userContext : userContexts) { - - // Get AuthenticationProvider associated with current UserContext - AuthenticationProvider authProvider = userContext.getAuthenticationProvider(); - - // If AuthenticationProvider identifier matches, done - if (authProvider.getIdentifier().equals(authProviderIdentifier)) - return userContext; - - } - - throw new GuacamoleResourceNotFoundException("Session not associated with authentication provider \"" + authProviderIdentifier + "\"."); - - } - -} diff --git a/guacamole/src/main/java/org/apache/guacamole/rest/RESTServiceModule.java b/guacamole/src/main/java/org/apache/guacamole/rest/RESTServiceModule.java index c386e10c8..29782788a 100644 --- a/guacamole/src/main/java/org/apache/guacamole/rest/RESTServiceModule.java +++ b/guacamole/src/main/java/org/apache/guacamole/rest/RESTServiceModule.java @@ -82,9 +82,6 @@ public class RESTServiceModule extends ServletModule { requestInjection(interceptor); bindInterceptor(Matchers.any(), new RESTMethodMatcher(), interceptor); - // Bind convenience services used by the REST API - bind(ObjectRetrievalService.class); - // Set up the API endpoints bind(LanguageRESTService.class); bind(PatchRESTService.class); 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 211e5d522..7c7f14f80 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 @@ -30,7 +30,6 @@ import javax.ws.rs.core.MediaType; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleSession; import org.apache.guacamole.net.auth.UserContext; -import org.apache.guacamole.rest.ObjectRetrievalService; import org.apache.guacamole.rest.tunnel.TunnelCollectionResource; /** @@ -48,12 +47,6 @@ public class SessionResource { */ private final GuacamoleSession session; - /** - * Service for convenient retrieval of objects. - */ - @Inject - private ObjectRetrievalService retrievalService; - /** * Factory for creating UserContextResources which expose a given * UserContext. @@ -95,7 +88,7 @@ public class SessionResource { throws GuacamoleException { // Pull UserContext defined by the given auth provider identifier - UserContext userContext = retrievalService.retrieveUserContext(session, authProviderIdentifier); + UserContext userContext = session.getUserContext(authProviderIdentifier); // Return a resource exposing the retrieved UserContext return userContextResourceFactory.create(userContext); diff --git a/guacamole/src/main/java/org/apache/guacamole/tunnel/TunnelRequestService.java b/guacamole/src/main/java/org/apache/guacamole/tunnel/TunnelRequestService.java index 80404723a..95e4bb9ac 100644 --- a/guacamole/src/main/java/org/apache/guacamole/tunnel/TunnelRequestService.java +++ b/guacamole/src/main/java/org/apache/guacamole/tunnel/TunnelRequestService.java @@ -31,7 +31,6 @@ import org.apache.guacamole.net.auth.Connection; import org.apache.guacamole.net.auth.ConnectionGroup; import org.apache.guacamole.net.auth.Directory; import org.apache.guacamole.net.auth.UserContext; -import org.apache.guacamole.rest.ObjectRetrievalService; import org.apache.guacamole.rest.auth.AuthenticationService; import org.apache.guacamole.protocol.GuacamoleClientInformation; import org.slf4j.Logger; @@ -61,12 +60,6 @@ public class TunnelRequestService { @Inject private AuthenticationService authenticationService; - /** - * Service for convenient retrieval of objects. - */ - @Inject - private ObjectRetrievalService retrievalService; - /** * Reads and returns the client information provided within the given * request. @@ -327,7 +320,7 @@ public class TunnelRequestService { GuacamoleClientInformation info = getClientInformation(request); GuacamoleSession session = authenticationService.getGuacamoleSession(authToken); - UserContext userContext = retrievalService.retrieveUserContext(session, authProviderIdentifier); + UserContext userContext = session.getUserContext(authProviderIdentifier); try {