package com.aol.micro.server.web.cors; import java.util.HashMap; import java.util.Map; import java.util.Optional; import javax.servlet.Filter; import cyclops.control.Xor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.aol.micro.server.auto.discovery.FilterConfiguration; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; @Configuration @NoArgsConstructor @AllArgsConstructor public class ConfigureBeans { @Value("${cors.simple:false}") private boolean simple = false; @Value("${cors.mapping:/*}") private String mapping; @Qualifier("ebay-cors-config" ) @Autowired(required=false) private Map<String,String> initParameters; @Bean public FilterConfiguration crossDomain(){ return new FilterConfiguration() { @Override public String getName() { return "simple-cors"; } @Override public String[] getMapping() { if(simple) return new String[] {mapping }; else return new String[0]; } @Override public Map<String, String> getInitParameters() { return Optional.ofNullable(initParameters).orElse(new HashMap<>()); } @Override public Xor<Class<? extends Filter>, Filter> getFilter() { return Xor.secondary(CrossDomainFilter.class); } }; } @Bean public FilterConfiguration ebayCrossDomain(){ return new FilterConfiguration() { @Override public String getName() { return "ebay-cors"; } @Override public String[] getMapping() { if(!simple) return new String[] {mapping }; else return new String[0]; } @Override public Map<String, String> getInitParameters() { return Optional.ofNullable(initParameters).orElse(new HashMap<>()); } @Override public Xor<Class<? extends Filter>, Filter> getFilter() { return Xor.secondary( org.ebaysf.web.cors.CORSFilter.class); } }; } }