mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
GUACAMOLE-5: Refactor away ObjectRetrievalService.
This commit is contained in:
@@ -26,6 +26,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
import org.apache.guacamole.environment.Environment;
|
import org.apache.guacamole.environment.Environment;
|
||||||
import org.apache.guacamole.net.GuacamoleTunnel;
|
import org.apache.guacamole.net.GuacamoleTunnel;
|
||||||
import org.apache.guacamole.net.auth.AuthenticatedUser;
|
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.net.auth.UserContext;
|
||||||
import org.apache.guacamole.tunnel.StreamInterceptingTunnel;
|
import org.apache.guacamole.tunnel.StreamInterceptingTunnel;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -126,6 +127,44 @@ public class GuacamoleSession {
|
|||||||
return Collections.unmodifiableList(userContexts);
|
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
|
* Replaces all UserContexts associated with this session with the given
|
||||||
* List of UserContexts.
|
* List of UserContexts.
|
||||||
|
@@ -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<UserContext> 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 + "\".");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -82,9 +82,6 @@ public class RESTServiceModule extends ServletModule {
|
|||||||
requestInjection(interceptor);
|
requestInjection(interceptor);
|
||||||
bindInterceptor(Matchers.any(), new RESTMethodMatcher(), interceptor);
|
bindInterceptor(Matchers.any(), new RESTMethodMatcher(), interceptor);
|
||||||
|
|
||||||
// Bind convenience services used by the REST API
|
|
||||||
bind(ObjectRetrievalService.class);
|
|
||||||
|
|
||||||
// Set up the API endpoints
|
// Set up the API endpoints
|
||||||
bind(LanguageRESTService.class);
|
bind(LanguageRESTService.class);
|
||||||
bind(PatchRESTService.class);
|
bind(PatchRESTService.class);
|
||||||
|
@@ -30,7 +30,6 @@ import javax.ws.rs.core.MediaType;
|
|||||||
import org.apache.guacamole.GuacamoleException;
|
import org.apache.guacamole.GuacamoleException;
|
||||||
import org.apache.guacamole.GuacamoleSession;
|
import org.apache.guacamole.GuacamoleSession;
|
||||||
import org.apache.guacamole.net.auth.UserContext;
|
import org.apache.guacamole.net.auth.UserContext;
|
||||||
import org.apache.guacamole.rest.ObjectRetrievalService;
|
|
||||||
import org.apache.guacamole.rest.tunnel.TunnelCollectionResource;
|
import org.apache.guacamole.rest.tunnel.TunnelCollectionResource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,12 +47,6 @@ public class SessionResource {
|
|||||||
*/
|
*/
|
||||||
private final GuacamoleSession session;
|
private final GuacamoleSession session;
|
||||||
|
|
||||||
/**
|
|
||||||
* Service for convenient retrieval of objects.
|
|
||||||
*/
|
|
||||||
@Inject
|
|
||||||
private ObjectRetrievalService retrievalService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory for creating UserContextResources which expose a given
|
* Factory for creating UserContextResources which expose a given
|
||||||
* UserContext.
|
* UserContext.
|
||||||
@@ -95,7 +88,7 @@ public class SessionResource {
|
|||||||
throws GuacamoleException {
|
throws GuacamoleException {
|
||||||
|
|
||||||
// Pull UserContext defined by the given auth provider identifier
|
// 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 a resource exposing the retrieved UserContext
|
||||||
return userContextResourceFactory.create(userContext);
|
return userContextResourceFactory.create(userContext);
|
||||||
|
@@ -31,7 +31,6 @@ import org.apache.guacamole.net.auth.Connection;
|
|||||||
import org.apache.guacamole.net.auth.ConnectionGroup;
|
import org.apache.guacamole.net.auth.ConnectionGroup;
|
||||||
import org.apache.guacamole.net.auth.Directory;
|
import org.apache.guacamole.net.auth.Directory;
|
||||||
import org.apache.guacamole.net.auth.UserContext;
|
import org.apache.guacamole.net.auth.UserContext;
|
||||||
import org.apache.guacamole.rest.ObjectRetrievalService;
|
|
||||||
import org.apache.guacamole.rest.auth.AuthenticationService;
|
import org.apache.guacamole.rest.auth.AuthenticationService;
|
||||||
import org.apache.guacamole.protocol.GuacamoleClientInformation;
|
import org.apache.guacamole.protocol.GuacamoleClientInformation;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -61,12 +60,6 @@ public class TunnelRequestService {
|
|||||||
@Inject
|
@Inject
|
||||||
private AuthenticationService authenticationService;
|
private AuthenticationService authenticationService;
|
||||||
|
|
||||||
/**
|
|
||||||
* Service for convenient retrieval of objects.
|
|
||||||
*/
|
|
||||||
@Inject
|
|
||||||
private ObjectRetrievalService retrievalService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads and returns the client information provided within the given
|
* Reads and returns the client information provided within the given
|
||||||
* request.
|
* request.
|
||||||
@@ -327,7 +320,7 @@ public class TunnelRequestService {
|
|||||||
GuacamoleClientInformation info = getClientInformation(request);
|
GuacamoleClientInformation info = getClientInformation(request);
|
||||||
|
|
||||||
GuacamoleSession session = authenticationService.getGuacamoleSession(authToken);
|
GuacamoleSession session = authenticationService.getGuacamoleSession(authToken);
|
||||||
UserContext userContext = retrievalService.retrieveUserContext(session, authProviderIdentifier);
|
UserContext userContext = session.getUserContext(authProviderIdentifier);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user