1
16
17 package org.springframework.cloud.aws.context.support.io;
18
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21
22 import org.springframework.beans.BeansException;
23 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
24 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
25 import org.springframework.cloud.aws.core.io.s3.SimpleStorageProtocolResolver;
26 import org.springframework.context.ResourceLoaderAware;
27 import org.springframework.core.Ordered;
28 import org.springframework.core.io.DefaultResourceLoader;
29 import org.springframework.core.io.ProtocolResolver;
30 import org.springframework.core.io.ResourceLoader;
31
32
41 public class SimpleStorageProtocolResolverConfigurer
42 implements BeanFactoryPostProcessor, Ordered, ResourceLoaderAware {
43
44 private static final Logger LOGGER = LoggerFactory
45 .getLogger(SimpleStorageProtocolResolverConfigurer.class);
46
47 private final ProtocolResolver protocolResolver;
48
49 private ResourceLoader resourceLoader;
50
51 public SimpleStorageProtocolResolverConfigurer(
52 SimpleStorageProtocolResolver simpleStorageProtocolResolver) {
53 this.protocolResolver = simpleStorageProtocolResolver;
54 }
55
56 @Override
57 public int getOrder() {
58 return Ordered.HIGHEST_PRECEDENCE;
59 }
60
61 @Override
62 public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
63 throws BeansException {
64 if (DefaultResourceLoader.class.isAssignableFrom(resourceLoader.getClass())) {
65 ((DefaultResourceLoader) resourceLoader)
66 .addProtocolResolver(this.protocolResolver);
67 }
68 else {
69 LOGGER.warn("The provided delegate resource loader is not an implementation "
70 + "of DefaultResourceLoader. Custom Protocol using s3:);
71 }
72 }
73
74 @Override
75 public void setResourceLoader(ResourceLoader resourceLoader) {
76 this.resourceLoader = resourceLoader;
77 }
78
79 }
80