/*
 * Copyright 2015-2016 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.test.context.junit5;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.junit.gen5.api.extension.ExtendWith;
import org.springframework.core.annotation.AliasFor;
import org.springframework.test.context.ContextConfiguration;

/**
 * Custom annotation that demonstrates the composability of annotations
 * from JUnit 5 and the Spring TestContext Framework.
 *
 * <p>Note that this annotation is meta-annotated with JUnit 5's
 * {@link ExtendWith @ExtendWith} and Spring's
 * {@link ContextConfiguration @ContextConfiguration}.
 *
 * @author Sam Brannen
 * @since 5.0
 */
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SpringJUnit5Config {

	@AliasFor(annotation = ContextConfiguration.class, attribute = "classes")
	Class<?>[] value() default {};

	@AliasFor(annotation = ContextConfiguration.class, attribute = "classes")
	Class<?>[] classes() default {};

}

@@ -954,16 +954,149 @@
 ndWith;%0A
+import org.springframework.context.ApplicationContextInitializer;%0Aimport org.springframework.context.ConfigurableApplicationContext;%0A
 import o
@@ -1947,10 +1947,682 @@
 lt %7B%7D;%0A%0A
+%09@AliasFor(annotation = ContextConfiguration.class, attribute = %22locations%22)%0A%09String%5B%5D locations() default %7B%7D;%0A%0A%09@AliasFor(annotation = ContextConfiguration.class, attribute = %22initializers%22)%0A%09Class%3C? extends ApplicationContextInitializer%3C? extends ConfigurableApplicationContext%3E%3E%5B%5D initializers() default %7B%7D;%0A%0A%09@AliasFor(annotation = ContextConfiguration.class, attribute = %22inheritLocations%22)%0A%09boolean inheritLocations() default true;%0A%0A%09@AliasFor(annotation = ContextConfiguration.class, attribute = %22inheritInitializers%22)%0A%09boolean inheritInitializers() default true;%0A%0A%09@AliasFor(annotation = ContextConfiguration.class, attribute = %22name%22)%0A%09String name() default %22%22;%0A%0A
 %7D%0A

Add remaining @ContextConfiguration attributes to @SpringJUnit5Config