All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jvault.annotation.VaultConfiguration Maven / Gradle / Ivy

package org.jvault.annotation;

import org.jvault.factory.buildinfo.AnnotationVaultFactoryBuildInfo;
import org.jvault.factory.extensible.Vault;
import org.jvault.factory.extensible.VaultFactoryBuildInfo;
import org.jvault.metadata.API;

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

/**
 * Annotation that used creating a {@link VaultFactoryBuildInfo} with class-configuration. 
* It can be created by passing the class marked as VaultConfiguration as a parameter of the constructor of {@link AnnotationVaultFactoryBuildInfo}.
*
* Example. *
 * {@code new AnnotationVaultFactoryBuildInfo(SomeVaultConfigurationMarked.class)}
 * 
*
* * A field marked as {@link BeanWire} in a class marked as VaultConfiguration is created as a {@link InternalBean}.
*
* Example. *
 * {@code @VaultConfiguration
 * public final class BeanAreaConfig{ @BeanWire private Foo foo; }}
 * 
* * @see BeanWire * @see InternalBean * @see AnnotationVaultFactoryBuildInfo * * @author devxb * @since 0.1 */ @API @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface VaultConfiguration { /** * Returns the name of the {@link Vault} to be created by {@link org.jvault.factory.VaultFactory}. * * @return String - vault name * * @author devxb * @since 0.1 */ String name() default ""; /** * Returns the paths of packages that can be passed as parameters of the {@link Vault} * * @return - String[] Packages injectable from vault * * @author devxb * @since 0.1 */ String[] vaultAccessPackages() default {}; /** * Returns the class name with path that can be passed as parameters of the {@link Vault} * * @return - String[] Class name with path injectable from vault * * @author devxb * @since 0.1 */ String[] vaultAccessClasses() default {}; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy