/* * Copyright 2014 the original author or authors. * * Licensed 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.springframework.yarn.config.annotation.configurers; import java.util.List; import org.springframework.data.hadoop.config.common.annotation.AnnotationConfigurerBuilder; import org.springframework.yarn.config.annotation.builders.YarnEnvironmentConfigurer; /** * {@link AnnotationConfigurerBuilder} for configuring classpath environment variable. * * <p> * Typically configuration is shown below. * <br> * <pre> * @Configuration * @EnableYarn(enable=Enable.APPMASTER) * static class Config extends SpringYarnConfigurerAdapter { * * @Override * public void configure(YarnEnvironmentConfigurer environment) throws Exception { * environment * .withClasspath() * .includeBaseDirectory(true) * .useDefaultYarnClasspath(true) * .defaultYarnAppClasspath("my:cp:entries") * .delimiter(":") * .entries("entry1", "entry2") * .entry("entry3"); * } * * } * </pre> * * @author Janne Valkealahti * */ public interface EnvironmentClasspathConfigurer extends AnnotationConfigurerBuilder<YarnEnvironmentConfigurer> { /** * Specify a new classpath entry. * * @param entry the classpath entry * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer entry(String entry); /** * Specify a new classpath entries. * * @param entries the classpath entries * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer entries(String... entries); /** * Specify a new classpath entries. * * @param entries the classpath entries * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer entries(List<String> entries); /** * Specify if default yarn classpath entries should be added. * * @param useYarnAppClasspath the use default yarn classpath * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer useYarnAppClasspath(boolean useYarnAppClasspath); /** * Specify if default mr classpath entries should be added. * * @param useMapreduceAppClasspath the use default mr classpath * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer useMapreduceAppClasspath(boolean useMapreduceAppClasspath); /** * Specify a default yarn application classpath. Given classpath * entry can be a comma delimited list. * * @param defaultClasspath the default yarn classpath * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer siteYarnAppClasspath(String defaultClasspath); /** * Specify a default mr application classpath. Given classpath * entry can be a comma delimited list. * * @param defaultClasspath the default mr classpath * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer siteMapreduceAppClasspath(String defaultClasspath); /** * Specify a default yarn application classpath entries. * * @param defaultClasspath the default classpath entries. * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer siteYarnAppClasspath(String... defaultClasspath); /** * Specify a default mr application classpath entries. * * @param defaultClasspath the default classpath entries. * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer siteMapreduceAppClasspath(String... defaultClasspath); /** * Specify if base directory should be added in classpath. * * @param includeBaseDirectory the include base directory * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer includeBaseDirectory(boolean includeBaseDirectory); /** * Specify a delimiter used in a classpath. * * @param delimiter the delimiter * @return {@link EnvironmentClasspathConfigurer} for chaining */ EnvironmentClasspathConfigurer delimiter(String delimiter); }