Java 类org.springframework.context.annotation.Import 实例源码

项目:spring-depend    文件:SpringDependencyAnalyzer.java   
private static List<Class<?>> getConfigurationImportsFor(Class<?> clazz) {
    List<Class<?>> list= new ArrayList<>();
    for(Annotation annotation : clazz.getAnnotations()) {
        Class<? extends Annotation> type = annotation.annotationType();
        if(Import.class.equals(type)) {
            try {
                Method method = type.getMethod("value");
                Class<?>[] imports = (Class<?>[]) method.invoke(annotation, (Object[]) null);
                if(imports != null && imports.length > 0) {
                    for(Class<?> c: imports) {
                        list.add(c);
                    }
                }
            } catch (Throwable e) {
                throw new IllegalStateException(e);
            }
        }
    }
    return list;
}
项目:gravitee-gateway    文件:SpringPolicyContextProviderFactory.java   
public PolicyContextProvider create(PolicyContext policyContext) {
    Import importAnnotation = policyContext.getClass().getAnnotation(Import.class);

    List<Class<?>> importClasses = Arrays.asList(importAnnotation.value());

    LOGGER.info("Initializing a Spring context provider from @Import annotation: {}",
            String.join(",",
                    importClasses
                            .stream()
                            .map(Class::getName)
                            .collect(Collectors.toSet())));

    AnnotationConfigApplicationContext policyApplicationContext = new AnnotationConfigApplicationContext();
    policyApplicationContext.setClassLoader(policyContext.getClass().getClassLoader());
    importClasses.forEach(policyApplicationContext::register);

    // TODO: set the parent application context ?
    // pluginContext.setEnvironment(applicationContextParent.getEnvironment());
    // pluginContext.setParent(applicationContextParent);

    policyApplicationContext.refresh();
    return new SpringPolicyContextProvider(policyApplicationContext);
}
项目:citrus-admin    文件:SpringJavaConfigService.java   
/**
 * Reads file import locations from Spring bean application context.
 * @param project
 * @return
 */
public List<Class<?>> getConfigImports(Class<?> configFile, Project project) {
    Import importAnnotation = configFile.getAnnotation(Import.class);
    if (importAnnotation != null) {
        return Arrays.asList(importAnnotation.value());
    }

    return new ArrayList<>();
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:ImportsContextCustomizerFactory.java   
@Override
public ContextCustomizer createContextCustomizer(Class<?> testClass,
        List<ContextConfigurationAttributes> configAttributes) {
    if (AnnotatedElementUtils.findMergedAnnotation(testClass, Import.class) != null) {
        assertHasNoBeanMethods(testClass);
        return new ImportsContextCustomizer(testClass);
    }
    return null;
}
项目:spring-boot-concourse    文件:ImportsContextCustomizerFactory.java   
@Override
public ContextCustomizer createContextCustomizer(Class<?> testClass,
        List<ContextConfigurationAttributes> configAttributes) {
    if (AnnotatedElementUtils.findMergedAnnotation(testClass, Import.class) != null) {
        assertHasNoBeanMethods(testClass);
        return new ImportsContextCustomizer(testClass);
    }
    return null;
}
项目:spring-cloud-stream    文件:SpringIntegrationBinderConfiguration.java   
/**
 * Utility operation to return an array of configuration classes
 * defined in {@link EnableBinding} annotation.
 * Typically used for tests that do not rely on creating an SCSt boot
 * application annotated with {@link EnableBinding}, yet require
 * full {@link Binder} configuration.
 */
public static Class<?>[] getCompleteConfiguration() {
    List<Class<?>> configClasses = new ArrayList<>();
    configClasses.add(SpringIntegrationBinderConfiguration.class);
    Import annotation = AnnotationUtils.getAnnotation(EnableBinding.class, Import.class);
    Map<String, Object> annotationAttributes = AnnotationUtils.getAnnotationAttributes(annotation);
    configClasses.addAll(Arrays.asList((Class<?>[])annotationAttributes.get("value")));
    return configClasses.toArray(new Class<?>[] {});
}
项目:graviteeio-access-management    文件:CertificatePluginManagerImpl.java   
private <T> T create0(Plugin plugin, Class<T> certificateClass, CertificateConfiguration certificateConfiguration) {
    if (certificateClass == null) {
        return null;
    }

    try {
        T certificateObj = createInstance(certificateClass);
        final Import annImport = certificateClass.getAnnotation(Import.class);
        Set<Class<?>> configurations = (annImport != null) ?
                new HashSet<>(Arrays.asList(annImport.value())) : Collections.emptySet();

        ApplicationContext idpApplicationContext = pluginContextFactory.create(new AnnotationBasedPluginContextConfigurer(plugin) {
            @Override
            public Set<Class<?>> configurations() {
                return configurations;
            }

            @Override
            public ConfigurableApplicationContext applicationContext() {
                ConfigurableApplicationContext configurableApplicationContext = super.applicationContext();

                // Add certificate configuration bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new CertificateConfigurationBeanFactoryPostProcessor(certificateConfiguration));

                return configurableApplicationContext;
            }
        });

        idpApplicationContext.getAutowireCapableBeanFactory().autowireBean(certificateObj);

        if (certificateObj instanceof InitializingBean) {
            ((InitializingBean) certificateObj).afterPropertiesSet();
        }

        return certificateObj;
    } catch (Exception ex) {
        logger.error("An unexpected error occurs while loading certificate", ex);
        return null;
    }
}
项目:graviteeio-access-management    文件:ExtensionGrantPluginManagerImpl.java   
private <T> T create0(Plugin plugin, Class<T> extensionGrantClass, ExtensionGrantConfiguration extensionGrantConfiguration, AuthenticationProvider authenticationProvider) {
    if (extensionGrantClass == null) {
        return null;
    }

    try {
        T extensionGrantObj = createInstance(extensionGrantClass);
        final Import annImport = extensionGrantClass.getAnnotation(Import.class);
        Set<Class<?>> configurations = (annImport != null) ?
                new HashSet<>(Arrays.asList(annImport.value())) : Collections.emptySet();

        ApplicationContext extensionGrantApplicationContext = pluginContextFactory.create(new AnnotationBasedPluginContextConfigurer(plugin) {
            @Override
            public Set<Class<?>> configurations() {
                return configurations;
            }

            @Override
            public ConfigurableApplicationContext applicationContext() {
                ConfigurableApplicationContext configurableApplicationContext = super.applicationContext();

                // Add extension grant configuration bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new ExtensionGrantConfigurationBeanFactoryPostProcessor(extensionGrantConfiguration));

                // Add extension grant identity provider bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new ExtensionGrantIdentityProviderFactoryPostProcessor(authenticationProvider != null ? authenticationProvider : new NoAuthenticationProvider()));

                return configurableApplicationContext;
            }
        });

        extensionGrantApplicationContext.getAutowireCapableBeanFactory().autowireBean(extensionGrantObj);

        if (extensionGrantObj instanceof InitializingBean) {
            ((InitializingBean) extensionGrantObj).afterPropertiesSet();
        }

        return extensionGrantObj;
    } catch (Exception ex) {
        logger.error("An unexpected error occurs while loading extension grant", ex);
        return null;
    }
}
项目:graviteeio-access-management    文件:IdentityProviderPluginManagerImpl.java   
private <T> T create0(Plugin plugin, Class<T> identityClass, IdentityProviderConfiguration identityProviderConfiguration,
                      IdentityProviderMapper identityProviderMapper, IdentityProviderRoleMapper identityProviderRoleMapper) {
    if (identityClass == null) {
        return null;
    }

    try {
        T identityObj = createInstance(identityClass);
        final Import annImport = identityClass.getAnnotation(Import.class);
        Set<Class<?>> configurations = (annImport != null) ?
                new HashSet<>(Arrays.asList(annImport.value())) : Collections.emptySet();

        ApplicationContext idpApplicationContext = pluginContextFactory.create(new AnnotationBasedPluginContextConfigurer(plugin) {
            @Override
            public Set<Class<?>> configurations() {
                return configurations;
            }

            @Override
            public ConfigurableApplicationContext applicationContext() {
                ConfigurableApplicationContext configurableApplicationContext = super.applicationContext();

                // Add identity provider configuration bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new IdentityProviderConfigurationBeanFactoryPostProcessor(identityProviderConfiguration));

                // Add identity provider mapper bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new IdentityProviderMapperBeanFactoryPostProcessor(identityProviderMapper));

                // Add identity provider role mapper bean
                configurableApplicationContext.addBeanFactoryPostProcessor(
                        new IdentityProviderRoleMapperBeanFactoryPostProcessor(identityProviderRoleMapper));

                return configurableApplicationContext;
            }
        });

        idpApplicationContext.getAutowireCapableBeanFactory().autowireBean(identityObj);

        if (identityObj instanceof InitializingBean) {
            ((InitializingBean) identityObj).afterPropertiesSet();
        }

        return identityObj;
    } catch (Exception ex) {
        logger.error("An unexpected error occurs while loading identity provider", ex);
        return null;
    }
}
项目:gravitee-management-rest-api    文件:IdentityProviderManagerImpl.java   
private <T> T create(Plugin plugin, Class<T> identityClass, Map<String, Object> properties) {
    if (identityClass == null) {
        return null;
    }

    try {
        T identityObj = createInstance(identityClass);
        final Import annImport = identityClass.getAnnotation(Import.class);
        Set<Class<?>> configurations = (annImport != null) ?
                new HashSet<>(Arrays.asList(annImport.value())) : Collections.emptySet();

        ApplicationContext idpApplicationContext = pluginContextFactory.create(new AnnotationBasedPluginContextConfigurer(plugin) {
            @Override
            public Set<Class<?>> configurations() {
                return configurations;
            }

            @Override
            public ConfigurableEnvironment environment() {
                return new StandardEnvironment() {
                    @Override
                    protected void customizePropertySources(MutablePropertySources propertySources) {
                        propertySources.addFirst(new MapPropertySource(plugin.id(), properties));
                        super.customizePropertySources(propertySources);
                    }
                };
            }
        });

        idpApplicationContext.getAutowireCapableBeanFactory().autowireBean(identityObj);

        if (identityObj instanceof InitializingBean) {
            ((InitializingBean) identityObj).afterPropertiesSet();
        }

        return identityObj;
    } catch (Exception ex) {
        LOGGER.error("An unexpected error occurs while loading identity provider", ex);
        return null;
    }
}
项目:gravitee-gateway    文件:SpringPolicyContextProviderFactory.java   
@Override
public boolean canHandle(PolicyContext policyContext) {
    return policyContext.getClass().getAnnotation(Import.class) != null;
}