| /* |
| * 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.ignite.internal.util.spring; |
| |
| import java.io.InputStream; |
| import java.net.URL; |
| import java.util.Collection; |
| import java.util.Map; |
| import org.apache.ignite.IgniteCheckedException; |
| import org.apache.ignite.IgniteLogger; |
| import org.apache.ignite.configuration.IgniteConfiguration; |
| import org.apache.ignite.internal.processors.resource.GridSpringResourceContext; |
| import org.apache.ignite.lang.IgniteBiTuple; |
| |
| /** |
| * Spring helper which can parse Spring configuration files, interface was introduced to avoid mandatory |
| * runtime dependency on Spring framework. |
| */ |
| public interface IgniteSpringHelper { |
| /** |
| * Loads all grid configurations specified within given configuration file. |
| * <p> |
| * Usually Spring XML configuration file will contain only one Grid definition. Note that |
| * Grid configuration bean(s) is retrieved form configuration file by type, so the name of |
| * the Grid configuration bean is ignored. |
| * |
| * @param cfgUrl Configuration file path or URL. This cannot be {@code null}. |
| * @param excludedProps Properties to exclude. |
| * @return Tuple containing all loaded configurations and Spring context used to load them. |
| * @throws IgniteCheckedException If grid could not be started or configuration |
| * read. This exception will be thrown also if grid with given name has already |
| * been started or Spring XML configuration file is invalid. |
| */ |
| public IgniteBiTuple<Collection<IgniteConfiguration>, ? extends GridSpringResourceContext> loadConfigurations( |
| URL cfgUrl, String... excludedProps) throws IgniteCheckedException; |
| |
| /** |
| * Loads all grid configurations specified within given configuration input stream. |
| * <p> |
| * Usually Spring XML configuration input stream will contain only one Grid definition. Note that |
| * Grid configuration bean(s) is retrieved form configuration input stream by type, so the name of |
| * the Grid configuration bean is ignored. |
| * |
| * @param cfgStream Configuration input stream. This cannot be {@code null}. |
| * @param excludedProps Properties to exclude. |
| * @return Tuple containing all loaded configurations and Spring context used to load them. |
| * @throws IgniteCheckedException If grid could not be started or configuration |
| * read. This exception will be thrown also if grid with given name has already |
| * been started or Spring XML configuration file is invalid. |
| */ |
| public IgniteBiTuple<Collection<IgniteConfiguration>, ? extends GridSpringResourceContext> loadConfigurations( |
| InputStream cfgStream, String... excludedProps) throws IgniteCheckedException; |
| |
| /** |
| * Loads all configurations with given type specified within given configuration file. |
| * |
| * @param cfgUrl Configuration file path or URL. This cannot be {@code null}. |
| * @param cls Required type of configuration. |
| * @param excludedProps Properties to exclude. |
| * @return Tuple containing all loaded configurations and Spring context used to load them. |
| * @throws IgniteCheckedException If configuration could not be read. |
| */ |
| public <T> IgniteBiTuple<Collection<T>, ? extends GridSpringResourceContext> loadConfigurations( |
| URL cfgUrl, Class<T> cls, String... excludedProps) throws IgniteCheckedException; |
| |
| /** |
| * Loads all configurations with given type specified within given configuration input stream. |
| * |
| * @param cfgStream Configuration input stream. This cannot be {@code null}. |
| * @param cls Required type of configuration. |
| * @param excludedProps Properties to exclude. |
| * @return Tuple containing all loaded configurations and Spring context used to load them. |
| * @throws IgniteCheckedException If configuration could not be read. |
| */ |
| public <T> IgniteBiTuple<Collection<T>, ? extends GridSpringResourceContext> loadConfigurations( |
| InputStream cfgStream, Class<T> cls, String... excludedProps) throws IgniteCheckedException; |
| |
| /** |
| * Loads bean instances that match the given types from given configuration file. |
| * |
| * @param cfgUrl Configuration file path or URL. This cannot be {@code null}. |
| * @param beanClasses Beans classes. |
| * @return Bean class -> loaded bean instance map, if configuration does not contain bean with required type the |
| * map value is {@code null}. |
| * @throws IgniteCheckedException If failed to load configuration. |
| */ |
| public Map<Class<?>, Object> loadBeans(URL cfgUrl, Class<?>... beanClasses) throws IgniteCheckedException; |
| |
| /** |
| * Loads bean instance by name. |
| * |
| * @param url Spring XML file URL. |
| * @param beanName Bean name. |
| * @return Bean instance. |
| * @throws IgniteCheckedException In case of error. |
| */ |
| public <T> T loadBean(URL url, String beanName) throws IgniteCheckedException; |
| |
| /** |
| * Loads bean instances that match the given types from given configuration input stream. |
| * |
| * @param cfgStream Input stream containing Spring XML configuration. This cannot be {@code null}. |
| * @param beanClasses Beans classes. |
| * @return Bean class -> loaded bean instance map, if configuration does not contain bean with required type the |
| * map value is {@code null}. |
| * @throws IgniteCheckedException If failed to load configuration. |
| */ |
| public Map<Class<?>, Object> loadBeans(InputStream cfgStream, Class<?>... beanClasses) |
| throws IgniteCheckedException; |
| |
| /** |
| * Loads bean instance by name. |
| * |
| * @param stream Input stream containing Spring XML configuration. |
| * @param beanName Bean name. |
| * @return Bean instance. |
| * @throws IgniteCheckedException In case of error. |
| */ |
| public <T> T loadBean(InputStream stream, String beanName) throws IgniteCheckedException; |
| |
| /** |
| * Loads bean instance by name from application context. |
| * |
| * @param appContext Sprint application context. |
| * @param beanName Bean name. |
| * @return Bean instance. |
| * @throws IgniteCheckedException In case of error. |
| */ |
| public <T> T loadBeanFromAppContext(Object appContext, String beanName) throws IgniteCheckedException; |
| |
| /** |
| * Gets user version for given class loader by checking |
| * {@code META-INF/ignite.xml} file for {@code userVersion} attribute. If |
| * {@code ignite.xml} file is not found, or user version is not specified there, |
| * then default version (empty string) is returned. |
| * |
| * @param ldr Class loader. |
| * @param log Logger. |
| * @return User version for given class loader or empty string if no version |
| * was explicitly specified. |
| */ |
| public String userVersion(ClassLoader ldr, IgniteLogger log); |
| } |