1 package org.kuali.common.util.metainf.spring; 2 3 import java.io.File; 4 import java.util.Collections; 5 import java.util.List; 6 7 import org.kuali.common.util.metainf.model.MetaInfContext; 8 import org.kuali.common.util.metainf.service.MetaInfUtils; 9 import org.kuali.common.util.nullify.NullUtils; 10 import org.kuali.common.util.project.model.Build; 11 import org.kuali.common.util.project.model.Project; 12 import org.kuali.common.util.project.spring.AutowiredProjectConfig; 13 import org.kuali.common.util.spring.SpringUtils; 14 import org.kuali.common.util.spring.env.EnvironmentService; 15 import org.kuali.common.util.spring.service.SpringServiceConfig; 16 import org.springframework.beans.factory.annotation.Autowired; 17 import org.springframework.context.annotation.Bean; 18 import org.springframework.context.annotation.Configuration; 19 import org.springframework.context.annotation.Import; 20 21 @Configuration 22 @Import({ AutowiredProjectConfig.class, MetaInfExecutableConfig.class, SpringServiceConfig.class }) 23 public class MpxConfig implements MetaInfContextsConfig { 24 25 private static final String PREFIX = "mpx"; 26 private static final String DEFAULT_INCLUDES = "**/*.mpx"; 27 private static final String DEFAULT_EXCLUDES = NullUtils.NONE; 28 private static final String INCLUDES_KEY = MetaInfConfigUtils.getIncludesKey(PREFIX); 29 private static final String EXCLUDES_KEY = MetaInfConfigUtils.getExcludesKey(PREFIX); 30 31 private static final boolean DEFAULT_GENERATE_RELATIVE_PATHS = true; 32 private static final String RELATIVE_KEY = MetaInfUtils.PROPERTY_PREFIX + ".mpx.relative"; 33 34 @Autowired 35 EnvironmentService env; 36 37 @Autowired 38 Project project; 39 40 @Autowired 41 Build build; 42 43 @Override 44 @Bean 45 public List<MetaInfContext> metaInfContexts() { 46 boolean relativePaths = env.getBoolean(RELATIVE_KEY, DEFAULT_GENERATE_RELATIVE_PATHS); 47 List<String> includes = SpringUtils.getNoneSensitiveListFromCSV(env, INCLUDES_KEY, DEFAULT_INCLUDES); 48 List<String> excludes = SpringUtils.getNoneSensitiveListFromCSV(env, EXCLUDES_KEY, DEFAULT_EXCLUDES); 49 File outputFile = MetaInfUtils.getOutputFile(project, build, MetaInfGroup.DATA); 50 File scanDir = build.getOutputDir(); 51 String encoding = build.getEncoding(); 52 MetaInfContext context = new MetaInfContext.Builder(outputFile, encoding, scanDir).includes(includes).excludes(excludes).relativePaths(relativePaths).build(); 53 return Collections.singletonList(context); 54 } 55 56 }