mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 09:03:21 +00:00 
			
		
		
		
	GUAC-587: Move loading logic into individual functions.
This commit is contained in:
		| @@ -206,6 +206,85 @@ public class ExtensionModule extends ServletModule { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Binds each of the the given AuthenticationProvider classes such that any | ||||
|      * service requiring access to the AuthenticationProvider can obtain it via | ||||
|      * injection. Note that, as multiple simultaneous authentication providers | ||||
|      * are not currently supported, attempting to bind more than one | ||||
|      * authentication provider will result in warnings being logged. | ||||
|      * | ||||
|      * @param authProviders | ||||
|      *     The AuthenticationProvider classes to bind. | ||||
|      */ | ||||
|     private void bindAuthenticationProviders(Collection<Class<AuthenticationProvider>> authProviders) { | ||||
|  | ||||
|         // Bind each authentication provider within extension | ||||
|         for (Class<AuthenticationProvider> authenticationProvider : authProviders) | ||||
|             bindAuthenticationProvider(authenticationProvider); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Serves each of the given resources as a language resource. Language | ||||
|      * resources are served from within the "/translations" directory as JSON | ||||
|      * files, where the name of each JSON file is the language key. | ||||
|      * | ||||
|      * @param resources | ||||
|      *     A map of all language resources to serve, where the key of each | ||||
|      *     entry in the language key from which the name of the JSON file will | ||||
|      *     be derived. | ||||
|      */ | ||||
|     private void serveLanguageResources(Map<String, Resource> resources) { | ||||
|  | ||||
|         // Add all resources to language resource service | ||||
|         for (Map.Entry<String, Resource> translationResource : resources.entrySet()) { | ||||
|  | ||||
|             // Get path and resource from path/resource pair | ||||
|             String path = translationResource.getKey(); | ||||
|             Resource resource = translationResource.getValue(); | ||||
|  | ||||
|             // Derive key from path | ||||
|             String languageKey = languageResourceService.getLanguageKey(path); | ||||
|             if (languageKey == null) { | ||||
|                 logger.warn("Invalid language file name: \"{}\"", path); | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             // Add language resource | ||||
|             languageResourceService.addLanguageResource(languageKey, resource); | ||||
|  | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Serves each of the given resources under the given prefix. The path of | ||||
|      * each resource relative to the prefix is the key of its entry within the | ||||
|      * map. | ||||
|      * | ||||
|      * @param prefix | ||||
|      *     The prefix under which each resource should be served. | ||||
|      * | ||||
|      * @param resources | ||||
|      *     A map of all resources to serve, where the key of each entry in the | ||||
|      *     map is the desired path of that resource relative to the prefix. | ||||
|      */ | ||||
|     private void serveStaticResources(String prefix, Map<String, Resource> resources) { | ||||
|  | ||||
|         // Add all resources under given prefix | ||||
|         for (Map.Entry<String, Resource> staticResource : resources.entrySet()) { | ||||
|  | ||||
|             // Get path and resource from path/resource pair | ||||
|             String path = staticResource.getKey(); | ||||
|             Resource resource = staticResource.getValue(); | ||||
|  | ||||
|             // Serve within namespace-derived path | ||||
|             serve(prefix + path).with(new ResourceServlet(resource)); | ||||
|  | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns whether the given version of Guacamole is compatible with this | ||||
|      * version of Guacamole as far as extensions are concerned. | ||||
| @@ -280,42 +359,14 @@ public class ExtensionModule extends ServletModule { | ||||
|                 cssResources.addAll(extension.getCSSResources().values()); | ||||
|  | ||||
|                 // Attempt to load all authentication providers | ||||
|                 Collection<Class<AuthenticationProvider>> authenticationProviders = extension.getAuthenticationProviderClasses(); | ||||
|                 for (Class<AuthenticationProvider> authenticationProvider : authenticationProviders) | ||||
|                     bindAuthenticationProvider(authenticationProvider); | ||||
|                 bindAuthenticationProviders(extension.getAuthenticationProviderClasses()); | ||||
|  | ||||
|                 // Add any translation resources | ||||
|                 for (Map.Entry<String, Resource> translationResource : | ||||
|                         extension.getTranslationResources().entrySet()) { | ||||
|                 serveLanguageResources(extension.getTranslationResources()); | ||||
|  | ||||
|                     // Get path and resource from path/resource pair | ||||
|                     String path = translationResource.getKey(); | ||||
|                     Resource resource = translationResource.getValue(); | ||||
|  | ||||
|                     // Derive key from path | ||||
|                     String languageKey = languageResourceService.getLanguageKey(path); | ||||
|                     if (languageKey == null) { | ||||
|                         logger.warn("Invalid language file name: \"{}\"", path); | ||||
|                         continue; | ||||
|                     } | ||||
|                      | ||||
|                     // Add language resource | ||||
|                     languageResourceService.addLanguageResource(languageKey, resource); | ||||
|                      | ||||
|                 } | ||||
|                  | ||||
|                 // Add all static resources under namespace-derived prefix | ||||
|                 String staticResourcePrefix = "/app/ext/" + extension.getNamespace() + "/"; | ||||
|                 for (Map.Entry<String, Resource> staticResource : extension.getStaticResources().entrySet()) { | ||||
|  | ||||
|                     // Get path and resource from path/resource pair | ||||
|                     String path = staticResource.getKey(); | ||||
|                     Resource resource = staticResource.getValue(); | ||||
|  | ||||
|                     // Serve within namespace-derived path | ||||
|                     serve(staticResourcePrefix + path).with(new ResourceServlet(resource)); | ||||
|  | ||||
|                 } | ||||
|                 serveStaticResources(staticResourcePrefix, extension.getStaticResources()); | ||||
|  | ||||
|                 // Log successful loading of extension by name | ||||
|                 logger.info("Extension \"{}\" loaded.", extension.getName()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user