static <T> T loadService(String moduleName, String className, final Class<T> type) throws ConfigXMLParseException { if (className != null) { try { Module.loadClassFromCallerModuleLoader(moduleName, className).asSubclass(type).newInstance(); } catch (ModuleLoadException | ClassNotFoundException | InstantiationException | IllegalAccessException e) { throw new InvalidDiscoveryConfigurationException(e); } } else { try { final ServiceLoader<T> loader = Module.loadServiceFromCallerModuleLoader(moduleName, type); final Iterator<T> iterator = loader.iterator(); try { if (!iterator.hasNext()) { throw new InvalidDiscoveryConfigurationException("No provider found in module " + moduleName); } return iterator.next(); } catch (ServiceConfigurationError e) { throw new InvalidDiscoveryConfigurationException(e); } } catch (ModuleLoadException e) { throw new InvalidDiscoveryConfigurationException(e); } } return null; } }
/** * Load a class from a module in the caller's module loader. * * @see #getCallerModuleLoader() * * @param moduleIdentifier the identifier of the module from which the class * should be loaded * @param className the class name to load * @return the class * @throws ModuleLoadException if the module could not be loaded * @throws ClassNotFoundException if the class could not be loaded * @deprecated Use {@link #loadClassFromCallerModuleLoader(String, String)} instead. */ public static Class<?> loadClassFromCallerModuleLoader(final ModuleIdentifier moduleIdentifier, final String className) throws ModuleLoadException, ClassNotFoundException { return loadClassFromCallerModuleLoader(moduleIdentifier.toString(), className); }
static <T> T loadService(String moduleName, String className, final Class<T> type) throws ConfigXMLParseException { if (className != null) { try { Module.loadClassFromCallerModuleLoader(moduleName, className).asSubclass(type).newInstance(); } catch (ModuleLoadException | ClassNotFoundException | InstantiationException | IllegalAccessException e) { throw new InvalidDiscoveryConfigurationException(e); } } else { try { final ServiceLoader<T> loader = Module.loadServiceFromCallerModuleLoader(moduleName, type); final Iterator<T> iterator = loader.iterator(); try { if (!iterator.hasNext()) { throw new InvalidDiscoveryConfigurationException("No provider found in module " + moduleName); } return iterator.next(); } catch (ServiceConfigurationError e) { throw new InvalidDiscoveryConfigurationException(e); } } catch (ModuleLoadException e) { throw new InvalidDiscoveryConfigurationException(e); } } return null; } }
static <T> T loadService(String moduleName, String className, final Class<T> type) throws ConfigXMLParseException { if (className != null) { try { Module.loadClassFromCallerModuleLoader(moduleName, className).asSubclass(type).newInstance(); } catch (ModuleLoadException | ClassNotFoundException | InstantiationException | IllegalAccessException e) { throw new InvalidDiscoveryConfigurationException(e); } } else { try { final ServiceLoader<T> loader = Module.loadServiceFromCallerModuleLoader(moduleName, type); final Iterator<T> iterator = loader.iterator(); try { if (!iterator.hasNext()) { throw new InvalidDiscoveryConfigurationException("No provider found in module " + moduleName); } return iterator.next(); } catch (ServiceConfigurationError e) { throw new InvalidDiscoveryConfigurationException(e); } } catch (ModuleLoadException e) { throw new InvalidDiscoveryConfigurationException(e); } } return null; } }
protected void populateHostControllerInfo(LocalHostControllerInfoImpl hostControllerInfo, OperationContext context, ModelNode operation) throws OperationFailedException { ModelNode codeNode = DiscoveryOptionResourceDefinition.CODE.resolveModelAttribute(context, operation); String discoveryOptionClassName = codeNode.isDefined() ? codeNode.asString() : null; ModelNode moduleNode = DiscoveryOptionResourceDefinition.MODULE.resolveModelAttribute(context, operation); String moduleName = moduleNode.isDefined() ? moduleNode.asString() : null; final Map<String, ModelNode> discoveryOptionProperties = new HashMap<String, ModelNode>(); if (operation.hasDefined(DiscoveryOptionResourceDefinition.PROPERTIES.getName())) { for (Map.Entry<String, String> discoveryOptionProperty : DiscoveryOptionResourceDefinition.PROPERTIES.unwrap(context, operation).entrySet()) { discoveryOptionProperties.put(discoveryOptionProperty.getKey(), new ModelNode(discoveryOptionProperty.getValue())); } } try { ModuleIdentifier moduleID = moduleName != null ? ModuleIdentifier.fromString(moduleName) : Module.forClass(getClass()).getIdentifier(); final Class<? extends DiscoveryOption> discoveryOptionClass = Module.loadClassFromCallerModuleLoader(moduleID, discoveryOptionClassName) .asSubclass(DiscoveryOption.class); final Constructor<? extends DiscoveryOption> constructor = discoveryOptionClass.getConstructor(Map.class); final DiscoveryOption discoveryOption = constructor.newInstance(discoveryOptionProperties); hostControllerInfo.addRemoteDomainControllerDiscoveryOption(discoveryOption); } catch (Exception e) { throw HostControllerLogger.ROOT_LOGGER.cannotInstantiateDiscoveryOptionClass(discoveryOptionClassName, e.getLocalizedMessage()); } } }
protected void populateHostControllerInfo(LocalHostControllerInfoImpl hostControllerInfo, OperationContext context, ModelNode operation) throws OperationFailedException { ModelNode codeNode = DiscoveryOptionResourceDefinition.CODE.resolveModelAttribute(context, operation); String discoveryOptionClassName = codeNode.isDefined() ? codeNode.asString() : null; ModelNode moduleNode = DiscoveryOptionResourceDefinition.MODULE.resolveModelAttribute(context, operation); String moduleName = moduleNode.isDefined() ? moduleNode.asString() : null; final Map<String, ModelNode> discoveryOptionProperties = new HashMap<String, ModelNode>(); if (operation.hasDefined(DiscoveryOptionResourceDefinition.PROPERTIES.getName())) { for (Map.Entry<String, String> discoveryOptionProperty : DiscoveryOptionResourceDefinition.PROPERTIES.unwrap(context, operation).entrySet()) { discoveryOptionProperties.put(discoveryOptionProperty.getKey(), new ModelNode(discoveryOptionProperty.getValue())); } } try { ModuleIdentifier moduleID = moduleName != null ? ModuleIdentifier.fromString(moduleName) : Module.forClass(getClass()).getIdentifier(); final Class<? extends DiscoveryOption> discoveryOptionClass = Module.loadClassFromCallerModuleLoader(moduleID, discoveryOptionClassName) .asSubclass(DiscoveryOption.class); final Constructor<? extends DiscoveryOption> constructor = discoveryOptionClass.getConstructor(Map.class); final DiscoveryOption discoveryOption = constructor.newInstance(discoveryOptionProperties); hostControllerInfo.addRemoteDomainControllerDiscoveryOption(discoveryOption); } catch (Exception e) { throw HostControllerLogger.ROOT_LOGGER.cannotInstantiateDiscoveryOptionClass(discoveryOptionClassName, e.getLocalizedMessage()); } } }
@Override public void start(StartContext context) throws StartException { Class<?> componentClass; String className = _model.get(CommonAttributes.IMPLCLASS).asString(); try { componentClass = Module.loadClassFromCallerModuleLoader(ModuleIdentifier.fromString(_moduleId), className); try { _component = (Component) componentClass.newInstance(); ModelNode properties = _model.hasDefined(CommonAttributes.PROPERTIES) ? _model.get(CommonAttributes.PROPERTIES) : null; _component.init(createEnvironmentConfig(properties)); LOG.debug("Initialized component " + _component); _component.addResourceDependency(_resourceAdapterRepository.getValue()); } catch (InstantiationException ie) { ExtensionLogger.ROOT_LOGGER.unableToInstantiateClass(className, ie); } catch (IllegalAccessException iae) { ExtensionLogger.ROOT_LOGGER.unableToAccessConstructor(className, iae); } } catch (ClassNotFoundException cnfe) { ExtensionLogger.ROOT_LOGGER.unableToLoadClass(className, cnfe); } catch (ModuleLoadException mle) { ExtensionLogger.ROOT_LOGGER.unableToLoadModule(_moduleId, mle); } }
@Override public void start(StartContext context) throws StartException { Class<?> componentClass; String className = _model.get(CommonAttributes.IMPLCLASS).asString(); try { componentClass = Module.loadClassFromCallerModuleLoader(ModuleIdentifier.fromString(_moduleId), className); try { _component = (Component) componentClass.newInstance(); ModelNode properties = _model.hasDefined(CommonAttributes.PROPERTIES) ? _model.get(CommonAttributes.PROPERTIES) : null; _component.init(createEnvironmentConfig(properties)); LOG.debug("Initialized component " + _component); _component.addResourceDependency(_resourceAdapterRepository.getValue()); } catch (InstantiationException ie) { ExtensionLogger.ROOT_LOGGER.unableToInstantiateClass(className, ie); } catch (IllegalAccessException iae) { ExtensionLogger.ROOT_LOGGER.unableToAccessConstructor(className, iae); } } catch (ClassNotFoundException cnfe) { ExtensionLogger.ROOT_LOGGER.unableToLoadClass(className, cnfe); } catch (ModuleLoadException mle) { ExtensionLogger.ROOT_LOGGER.unableToLoadModule(_moduleId, mle); } }